qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

9p-util-linux.c (1821B)


      1 /*
      2  * 9p utilities (Linux Implementation)
      3  *
      4  * Copyright IBM, Corp. 2017
      5  *
      6  * Authors:
      7  *  Greg Kurz <groug@kaod.org>
      8  *
      9  * This work is licensed under the terms of the GNU GPL, version 2 or later.
     10  * See the COPYING file in the top-level directory.
     11  */
     12 
     13 /*
     14  * Not so fast! You might want to read the 9p developer docs first:
     15  * https://wiki.qemu.org/Documentation/9p
     16  */
     17 
     18 #include "qemu/osdep.h"
     19 #include "qemu/xattr.h"
     20 #include "9p-util.h"
     21 
     22 ssize_t fgetxattrat_nofollow(int dirfd, const char *filename, const char *name,
     23                              void *value, size_t size)
     24 {
     25     char *proc_path = g_strdup_printf("/proc/self/fd/%d/%s", dirfd, filename);
     26     int ret;
     27 
     28     ret = lgetxattr(proc_path, name, value, size);
     29     g_free(proc_path);
     30     return ret;
     31 }
     32 
     33 ssize_t flistxattrat_nofollow(int dirfd, const char *filename,
     34                               char *list, size_t size)
     35 {
     36     char *proc_path = g_strdup_printf("/proc/self/fd/%d/%s", dirfd, filename);
     37     int ret;
     38 
     39     ret = llistxattr(proc_path, list, size);
     40     g_free(proc_path);
     41     return ret;
     42 }
     43 
     44 ssize_t fremovexattrat_nofollow(int dirfd, const char *filename,
     45                                 const char *name)
     46 {
     47     char *proc_path = g_strdup_printf("/proc/self/fd/%d/%s", dirfd, filename);
     48     int ret;
     49 
     50     ret = lremovexattr(proc_path, name);
     51     g_free(proc_path);
     52     return ret;
     53 }
     54 
     55 int fsetxattrat_nofollow(int dirfd, const char *filename, const char *name,
     56                          void *value, size_t size, int flags)
     57 {
     58     char *proc_path = g_strdup_printf("/proc/self/fd/%d/%s", dirfd, filename);
     59     int ret;
     60 
     61     ret = lsetxattr(proc_path, name, value, size, flags);
     62     g_free(proc_path);
     63     return ret;
     64 
     65 }
     66 
     67 int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t dev)
     68 {
     69     return mknodat(dirfd, filename, mode, dev);
     70 }