diff options
Diffstat (limited to 'libnetfs/file-get-translator.c')
-rw-r--r-- | libnetfs/file-get-translator.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/libnetfs/file-get-translator.c b/libnetfs/file-get-translator.c index f4022504..63c74c0b 100644 --- a/libnetfs/file-get-translator.c +++ b/libnetfs/file-get-translator.c @@ -47,7 +47,21 @@ netfs_S_file_get_translator (struct protid *user, return err; } - if (S_ISLNK (np->nn_stat.st_mode)) + if (np->nn_translated & S_IPTRANS) + { + char *string = NULL; + mach_msg_type_number_t len = 0; + err = netfs_get_translator (np, &string, &len); + if (!err) + { + if (len > *translen) + *trans = mmap (0, len, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); + memcpy (*trans, string, len); + *translen = len; + free (string); + } + } + else if (S_ISLNK (np->nn_stat.st_mode)) { unsigned int len = sizeof _HURD_SYMLINK + np->nn_stat.st_size + 1; @@ -113,20 +127,6 @@ netfs_S_file_get_translator (struct protid *user, *translen = len; err = 0; } - else if (np->nn_translated & S_IPTRANS) - { - char *string = NULL; - mach_msg_type_number_t len = 0; - err = netfs_get_translator (np, &string, &len); - if (!err) - { - if (len > *translen) - *trans = mmap (0, len, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - memcpy (*trans, string, len); - *translen = len; - free (string); - } - } else err = EINVAL; |