Merge pull request #47 from Memphiz/win32fix3
[deb_libnfs.git] / include / nfsc / libnfs.h
index 1ea756181ba79e2b5e5c8ec8c71c3641adbdb0a5..388ea78e6293685ebe5ad028fe063c8f55e33cc0 100644 (file)
@@ -111,6 +111,24 @@ EXTERN struct nfs_context *nfs_init_context(void);
 EXTERN void nfs_destroy_context(struct nfs_context *nfs);
 
 
+/*
+ * URL parsing functions.
+ * These functions all parse a URL of the form 
+ * nfs://server/path/file?argv=val[&arg=val]*
+ * and returns a nfs_url.
+ *
+ * Apart from parsing the URL the functions will also update
+ * the nfs context to reflect settings controlled via url arguments.
+ *
+ * Current URL arguments are :
+ * tcp-syncnt=<int>  : Number of SYNs to send during the seccion establish
+ *                     before failing settin up the tcp connection to the
+ *                     server.
+ * uid=<int>         : UID value to use when talking to the server.
+ *                     default it 65534 on Windows and getuid() on unixen.
+ * gid=<int>         : GID value to use when talking to the server.
+ *                     default it 65534 on Windows and getgid() on unixen.
+ */
 /*
  * Parse a complete NFS URL including, server, path and
  * filename. Fail if any component is missing.
@@ -199,8 +217,11 @@ EXTERN int nfs_stat_async(struct nfs_context *nfs, const char *path, nfs_cb cb,
  *      0 : The operation was successfull.
  * -errno : The command failed.
  */
+#ifdef WIN32
+EXTERN int nfs_stat(struct nfs_context *nfs, const char *path, struct __stat64 *st);
+#else
 EXTERN int nfs_stat(struct nfs_context *nfs, const char *path, struct stat *st);
-
+#endif
 
 /*
  * FSTAT()
@@ -224,7 +245,11 @@ EXTERN int nfs_fstat_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb
  *      0 : The operation was successfull.
  * -errno : The command failed.
  */
+#ifdef WIN32
+EXTERN int nfs_fstat(struct nfs_context *nfs, struct nfsfh *nfsfh, struct __stat64 *st);
+#else
 EXTERN int nfs_fstat(struct nfs_context *nfs, struct nfsfh *nfsfh, struct stat *st);
+#endif
 
 
 
@@ -672,13 +697,16 @@ struct nfsdirent  {
        char *name;
        uint64_t inode;
 
-       /* some extra fields we get for free through the READDIRPLUS3 call. You need libnfs-raw-nfs.h for these */
+       /* Some extra fields we get for free through the READDIRPLUS3 call.
+         You need libnfs-raw-nfs.h for type/mode constants */
        uint32_t type; /* NF3REG, NF3DIR, NF3BLK, ... */
        uint32_t mode;
        uint64_t size;
        struct timeval atime;
        struct timeval mtime;
        struct timeval ctime;
+       uint32_t uid;
+       uint32_t gid;
 };
 /*
  * nfs_readdir() never blocks, so no special sync/async versions are available