fix crash in mount/export
[deb_libnfs.git] / examples / nfsclient-sync.c
index 93704431d2d8f5aa7383d26346ae7934385059f2..a5af3ce73d19c40db030337eb33a8c05ad94b998 100644 (file)
@@ -20,7 +20,7 @@
 
 #define SERVER "10.1.1.27"
 #define EXPORT "/VIRTUAL"
-#define NFSFILE "/BOOKS/Classics/Dracula.djvu"
+#define NFSFILE "/BOOKS/Classics/Dracula.djvu.truncated"
 #define NFSFILER "/BOOKS/Classics/Dracula.djvu.renamed"
 #define NFSFILEW "/BOOKS/Classics/foo"
 #define NFSDIR "/BOOKS/Classics/"
@@ -46,6 +46,8 @@ struct client {
 };
 
 
+char buf[5*1024*1024];
+
 int main(int argc _U_, char *argv[] _U_)
 {
        struct nfs_context *nfs;
@@ -58,20 +60,23 @@ int main(int argc _U_, char *argv[] _U_)
        client.server = SERVER;
        client.export = EXPORT;
        client.is_finished = 0;
-       char buf[16];
        off_t offset;
        struct statvfs svfs;
        exports export, tmp;
 
-       printf("exports on server %s\n", SERVER);
        export = mount_getexports(SERVER);
-       tmp = export;
-       while (tmp != NULL) {
-             printf("Export: %s\n", tmp->ex_dir);
-             tmp = tmp->ex_next;
-       }
-       mount_free_export_list(export);
-
+       if (export != NULL) {
+               printf("exports on server %s\n", SERVER);
+               tmp = export;
+               while (tmp != NULL) {
+                     printf("Export: %s\n", tmp->ex_dir);
+                     tmp = tmp->ex_next;
+               }
+
+               mount_free_export_list(export);
+       } else {
+               printf("no exports on server %s\n", SERVER);
+       }       
 
        nfs = nfs_init_context();
        if (nfs == NULL) {
@@ -84,7 +89,7 @@ int main(int argc _U_, char *argv[] _U_)
                printf("Failed to mount nfs share : %s\n", nfs_get_error(nfs));
                exit(10);
        }
-       printf("mounted share successfully\n");
+       printf("mounted share successfully %s\n", nfs_get_error(nfs));
 
 
        ret = nfs_stat(nfs, NFSFILE, &st);
@@ -102,6 +107,7 @@ int main(int argc _U_, char *argv[] _U_)
                exit(10);
        }
 
+#if 0
        ret = nfs_read(nfs, nfsfh, 16, buf);
        if (ret < 0) {
                printf("Failed to pread(%s) %s\n", NFSFILE, nfs_get_error(nfs));
@@ -112,7 +118,8 @@ int main(int argc _U_, char *argv[] _U_)
                printf("%02x ", buf[i]&0xff);
        }
        printf("\n");
-       ret = nfs_read(nfs, nfsfh, 16, buf);
+#endif
+       ret = nfs_read(nfs, nfsfh, sizeof(buf), buf);
        if (ret < 0) {
                printf("Failed to pread(%s) %s\n", NFSFILE, nfs_get_error(nfs));
                exit(10);