X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Fnfsclient-sync.c;h=00e4c88042eba4a3e50553acb8e79460eb11c03d;hb=4b1097cde2eca9366c833805a529c23f7a7b02d6;hp=a6794ee2dfa05ae496981c72a8fbc9f39b5d6ea4;hpb=7d0397cf0f1ce2d46dccf0ef3bb231433a7cbace;p=deb_libnfs.git diff --git a/examples/nfsclient-sync.c b/examples/nfsclient-sync.c index a6794ee..00e4c88 100644 --- a/examples/nfsclient-sync.c +++ b/examples/nfsclient-sync.c @@ -20,21 +20,33 @@ #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 + +#if defined(WIN32) +#include +typedef int off_t; +#pragma comment(lib, "ws2_32.lib") +WSADATA wsaData; +#else +#include +#include +#endif + #include #include #include #include #include -#include -#include #include #include "libnfs.h" #include /* for authunix_create() */ +#include "libnfs-raw.h" +#include "libnfs-raw-mount.h" struct client { char *server; @@ -44,21 +56,44 @@ struct client { }; +char buf[3*1024*1024+337]; + int main(int argc _U_, char *argv[] _U_) { struct nfs_context *nfs; int i, ret; + off_t offset; struct client client; struct stat st; struct nfsfh *nfsfh; struct nfsdir *nfsdir; struct nfsdirent *nfsdirent; + struct statvfs svfs; + exports export, tmp; + +#if defined(WIN32) + if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { + printf("Failed to start Winsock2\n"); + exit(10); + } +#endif + client.server = SERVER; client.export = EXPORT; client.is_finished = 0; - char buf[16]; - off_t offset; - struct statvfs svfs; + 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) { @@ -66,15 +101,15 @@ int main(int argc _U_, char *argv[] _U_) exit(10); } - ret = nfs_mount_sync(nfs, client.server, client.export); + ret = nfs_mount(nfs, client.server, client.export); if (ret != 0) { 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_sync(nfs, NFSFILE, &st); + ret = nfs_stat(nfs, NFSFILE, &st); if (ret != 0) { printf("Failed to stat(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); @@ -83,13 +118,14 @@ int main(int argc _U_, char *argv[] _U_) printf("Size %d\n", (int)st.st_size); printf("Inode %04o\n", (int)st.st_ino); - ret = nfs_open_sync(nfs, NFSFILE, O_RDONLY, &nfsfh); + ret = nfs_open(nfs, NFSFILE, O_RDONLY, &nfsfh); if (ret != 0) { printf("Failed to open(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); } - ret = nfs_read_sync(nfs, nfsfh, 16, buf); +#if 0 + ret = nfs_read(nfs, nfsfh, 16, buf); if (ret < 0) { printf("Failed to pread(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); @@ -99,7 +135,8 @@ int main(int argc _U_, char *argv[] _U_) printf("%02x ", buf[i]&0xff); } printf("\n"); - ret = nfs_read_sync(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,8 +146,38 @@ 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_sync(nfs, nfsfh, 0, SEEK_CUR, &offset); + ret = (int)nfs_lseek(nfs, nfsfh, 0, SEEK_CUR, &offset); if (ret < 0) { printf("Failed to lseek(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); @@ -118,14 +185,14 @@ int main(int argc _U_, char *argv[] _U_) printf("File position is %d\n", (int)offset); printf("seek to end of file\n"); - ret = (int)nfs_lseek_sync(nfs, nfsfh, 0, SEEK_END, &offset); + ret = (int)nfs_lseek(nfs, nfsfh, 0, SEEK_END, &offset); if (ret < 0) { printf("Failed to lseek(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); } printf("File position is %d\n", (int)offset); - ret = nfs_fstat_sync(nfs, nfsfh, &st); + ret = nfs_fstat(nfs, nfsfh, &st); if (ret != 0) { printf("Failed to stat(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); @@ -135,46 +202,64 @@ int main(int argc _U_, char *argv[] _U_) printf("Inode %04o\n", (int)st.st_ino); - ret = nfs_close_sync(nfs, nfsfh); + ret = nfs_close(nfs, nfsfh); if (ret < 0) { printf("Failed to close(%s): %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); } - ret = nfs_opendir_sync(nfs, NFSDIR, &nfsdir); + ret = nfs_opendir(nfs, NFSDIR, &nfsdir); if (ret != 0) { printf("Failed to open(%s) %s\n", NFSFILE, nfs_get_error(nfs)); exit(10); } while((nfsdirent = nfs_readdir(nfs, nfsdir)) != NULL) { - printf("Inode:%d Name:%s\n", (int)nfsdirent->inode, nfsdirent->name); + char filename[1024]; + printf("Inode:%d Name:%s ", (int)nfsdirent->inode, nfsdirent->name); + sprintf(&filename, "%s/%s", NFSDIR, nfsdirent->name); + ret = nfs_open(nfs, filename, O_RDONLY, &nfsfh); + 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); - ret = nfs_open_sync(nfs, NFSFILEW, O_WRONLY, &nfsfh); + ret = nfs_open(nfs, NFSFILEW, O_WRONLY, &nfsfh); if (ret != 0) { printf("Failed to open(%s) %s\n", NFSFILEW, nfs_get_error(nfs)); exit(10); } - ret = nfs_pwrite_sync(nfs, nfsfh, 0, 16, buf); + ret = nfs_pwrite(nfs, nfsfh, 0, 16, buf); if (ret < 0) { printf("Failed to pwrite(%s) %s\n", NFSFILEW, nfs_get_error(nfs)); exit(10); } - ret = nfs_fsync_sync(nfs, nfsfh); + ret = nfs_fsync(nfs, nfsfh); if (ret < 0) { printf("Failed to fsync(%s) %s\n", NFSFILEW, nfs_get_error(nfs)); exit(10); } - ret = nfs_close_sync(nfs, nfsfh); + ret = nfs_close(nfs, nfsfh); if (ret < 0) { printf("Failed to close(%s) %s\n", NFSFILEW, nfs_get_error(nfs)); exit(10); } - ret = nfs_statvfs_sync(nfs, NFSDIR, &svfs); + ret = nfs_statvfs(nfs, NFSDIR, &svfs); if (ret < 0) { printf("Failed to statvfs(%s) %s\n", NFSDIR, nfs_get_error(nfs)); exit(10); @@ -182,7 +267,7 @@ int main(int argc _U_, char *argv[] _U_) printf("files %d/%d/%d\n", (int)svfs.f_files, (int)svfs.f_ffree, (int)svfs.f_favail); - ret = nfs_access_sync(nfs, NFSFILE, R_OK); + ret = nfs_access(nfs, NFSFILE, R_OK); if (ret != 0) { printf("Failed to access(%s) %s\n", NFSFILE, nfs_get_error(nfs)); } @@ -190,7 +275,7 @@ int main(int argc _U_, char *argv[] _U_) /* become root */ nfs_set_auth(nfs, authunix_create("Ronnies-Laptop", 0, 0, 0, NULL)); - ret = nfs_link_sync(nfs, NFSFILE, NFSFILER); + ret = nfs_link(nfs, NFSFILE, NFSFILER); if (ret != 0) { printf("Failed to link(%s) %s\n", NFSFILE, nfs_get_error(nfs)); } @@ -200,3 +285,4 @@ int main(int argc _U_, char *argv[] _U_) printf("nfsclient finished\n"); return 0; } +