X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Fnfsclient-sync.c;h=322bfa28676eef526760c11b2b54e300a2a04863;hb=57187d219a39f040ba866bf48c1a736d2d6959ab;hp=d1c70a2f66d5a4fca36e547d3c78651231b6bf6c;hpb=e2ba5764d46b29756973fdb20332a8fcfb5bbfd1;p=deb_libnfs.git diff --git a/examples/nfsclient-sync.c b/examples/nfsclient-sync.c index d1c70a2..322bfa2 100644 --- a/examples/nfsclient-sync.c +++ b/examples/nfsclient-sync.c @@ -20,11 +20,12 @@ #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/" +#define _GNU_SOURCE #include #include #include @@ -35,6 +36,8 @@ #include #include "libnfs.h" #include /* for authunix_create() */ +#include "libnfs-raw.h" +#include "libnfs-raw-mount.h" struct client { char *server; @@ -44,6 +47,8 @@ struct client { }; +char buf[3*1024*1024+337]; + int main(int argc _U_, char *argv[] _U_) { struct nfs_context *nfs; @@ -56,9 +61,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; + + export = mount_getexports(SERVER); + 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) { @@ -71,7 +90,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); @@ -89,6 +108,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)); @@ -99,7 +119,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); @@ -109,6 +130,36 @@ int main(int argc _U_, char *argv[] _U_) printf("%02x ", buf[i]&0xff); } printf("\n"); + 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); + } + printf("read %d bytes\n", ret); + 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); + } + printf("read %d bytes\n", ret); + 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); + } + printf("read %d bytes\n", ret); + 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); + } + printf("read %d bytes\n", ret); + 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); + } + printf("read %d bytes\n", ret); ret = (int)nfs_lseek(nfs, nfsfh, 0, SEEK_CUR, &offset); if (ret < 0) { @@ -147,7 +198,26 @@ int main(int argc _U_, char *argv[] _U_) exit(10); } while((nfsdirent = nfs_readdir(nfs, nfsdir)) != NULL) { - printf("Inode:%d Name:%s\n", (int)nfsdirent->inode, nfsdirent->name); + char *filename = NULL; + printf("Inode:%d Name:%s ", (int)nfsdirent->inode, nfsdirent->name); + asprintf(&filename, "%s/%s", NFSDIR, nfsdirent->name); + ret = nfs_open(nfs, filename, O_RDONLY, &nfsfh); + free(filename); + if (ret != 0) { + printf("Failed to open(%s) %s\n", filename, nfs_get_error(nfs)); + exit(10); + } + ret = nfs_read(nfs, nfsfh, sizeof(buf), buf); + if (ret < 0) { + printf("Error reading file\n"); + exit(10); + } + printf("Read %d bytes\n", ret); + ret = nfs_close(nfs, nfsfh); + if (ret < 0) { + printf("Failed to close(%s): %s\n", NFSFILE, nfs_get_error(nfs)); + exit(10); + } } nfs_closedir(nfs, nfsdir); @@ -200,3 +270,4 @@ int main(int argc _U_, char *argv[] _U_) printf("nfsclient finished\n"); return 0; } +