initial libnfs checkin
[deb_libnfs.git] / include / libnfs.h
CommitLineData
84004dbf
RS
1/*
2 Copyright (C) 2010 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published by
6 the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program; if not, see <http://www.gnu.org/licenses/>.
16*/
17/*
18 * This is the highlevel interface to access NFS resources using a posix-like interface
19 */
20#include <stdint.h>
21
22struct nfs_context;
23
24/*
25 * Used for interfacing the async version of the api into an external eventsystem
26 */
27int nfs_get_fd(struct nfs_context *nfs);
28int nfs_which_events(struct nfs_context *nfs);
29int nfs_service(struct nfs_context *nfs, int revents);
30
31/*
32 * Used if you need different credentials than the default for the current user.
33 */
34struct AUTH;
35void nfs_set_auth(struct nfs_context *nfs, struct AUTH *auth);
36
37
38/*
39 * When an operation failed, this function can extract a detailed error string.
40 */
41char *nfs_get_error(struct nfs_context *nfs);
42
43
44/*
45 * Callback for all ASYNC nfs functions
46 */
47typedef void (*nfs_cb)(int err, struct nfs_context *nfs, void *data, void *private_data);
48
49
50
51
52/*
53 * NFS CONTEXT.
54 */
55/*
56 * Create an NFS c, the context.
57 * Function returns
58 * NULL : Failed to create a context.
59 * *nfs : A pointer to an nfs context.
60 */
61struct nfs_context *nfs_init_context(void);
62/*
63 * Destroy an nfs context.
64 */
65void nfs_destroy_context(struct nfs_context *nfs);
66
67
68struct nfsfh;
69
70
71/*
72 * MOUNT THE EXPORT
73 */
74/*
75 * Async nfs mount.
76 * Function returns
77 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
78 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
79 *
80 * When the callback is invoked, status indicates the result:
81 * 0 : Success.
82 * data is NULL
83 * -errno : An error occured.
84 * data is the error string.
85 */
86int nfs_mount_async(struct nfs_context *nfs, const char *server, const char *export, nfs_cb cb, void *private_data);
87/*
88 * Sync nfs mount.
89 * Function returns
90 * 0 : The operation was successfull.
91 * -errno : The command failed.
92 */
93int nfs_mount_sync(struct nfs_context *nfs, const char *server, const char *export);
94
95
96
97
98/*
99 * STAT()
100 */
101/*
102 * Async stat(<filename>)
103 * Function returns
104 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
105 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
106 *
107 * When the callback is invoked, status indicates the result:
108 * 0 : Success.
109 * data is struct stat *
110 * -errno : An error occured.
111 * data is the error string.
112 */
113struct stat;
114int nfs_stat_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
115/*
116 * Sync stat(<filename>)
117 * Function returns
118 * 0 : The operation was successfull.
119 * -errno : The command failed.
120 */
121int nfs_stat_sync(struct nfs_context *nfs, const char *path, struct stat *st);
122
123
124/*
125 * FSTAT()
126 */
127/*
128 * Async fstat(nfsfh *)
129 * Function returns
130 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
131 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
132 *
133 * When the callback is invoked, status indicates the result:
134 * 0 : Success.
135 * data is struct stat *
136 * -errno : An error occured.
137 * data is the error string.
138 */
139int nfs_fstat_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, void *private_data);
140/*
141 * Sync fstat(nfsfh *)
142 * Function returns
143 * 0 : The operation was successfull.
144 * -errno : The command failed.
145 */
146int nfs_fstat_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, struct stat *st);
147
148
149
150/*
151 * OPEN()
152 */
153/*
154 * Async open(<filename>)
155 *
156 * mode is a combination of the flags : O_RDOLNY, O_WRONLY, O_RDWR , O_SYNC
157 *
158 * Function returns
159 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
160 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
161 *
162 * When the callback is invoked, status indicates the result:
163 * 0 : Success.
164 * data is a struct *nfsfh;
165 * The nfsfh is close using nfs_close().
166 * -errno : An error occured.
167 * data is the error string.
168 */
169int nfs_open_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb cb, void *private_data);
170/*
171 * Sync stat(<filename>)
172 * Function returns
173 * 0 : The operation was successfull. *nfsfh is filled in.
174 * -errno : The command failed.
175 */
176int nfs_open_sync(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh);
177
178
179
180
181/*
182 * CLOSE
183 */
184/*
185 * Async close(nfsfh)
186 *
187 * Function returns
188 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
189 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
190 *
191 * When the callback is invoked, status indicates the result:
192 * 0 : Success.
193 * data is NULL.
194 * -errno : An error occured.
195 * data is the error string.
196 */
197int nfs_close_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, void *private_data);
198/*
199 * Sync close(nfsfh)
200 * Function returns
201 * 0 : The operation was successfull.
202 * -errno : The command failed.
203 */
204int nfs_close_sync(struct nfs_context *nfs, struct nfsfh *nfsfh);
205
206
207/*
208 * PREAD()
209 */
210/*
211 * Async pread()
212 *
213 * Function returns
214 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
215 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
216 *
217 * When the callback is invoked, status indicates the result:
218 * >=0 : Success.
219 * status is numer of bytes read.
220 * data is a pointer to the returned data.
221 * -errno : An error occured.
222 * data is the error string.
223 */
224int nfs_pread_async(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, nfs_cb cb, void *private_data);
225/*
226 * Sync pread()
227 * Function returns
228 * >=0 : numer of bytes read.
229 * -errno : An error occured.
230 */
231int nfs_pread_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf);
232
233
234
235/*
236 * READ()
237 */
238/*
239 * Async read()
240 *
241 * Function returns
242 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
243 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
244 *
245 * When the callback is invoked, status indicates the result:
246 * >=0 : Success.
247 * status is numer of bytes read.
248 * data is a pointer to the returned data.
249 * -errno : An error occured.
250 * data is the error string.
251 */
252int nfs_read_async(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, nfs_cb cb, void *private_data);
253/*
254 * Sync read()
255 * Function returns
256 * >=0 : numer of bytes read.
257 * -errno : An error occured.
258 */
259int nfs_read_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf);
260
261
262
263
264/*
265 * PWRITE()
266 */
267/*
268 * Async pwrite()
269 *
270 * Function returns
271 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
272 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
273 *
274 * When the callback is invoked, status indicates the result:
275 * >=0 : Success.
276 * status is numer of bytes written.
277 * -errno : An error occured.
278 * data is the error string.
279 */
280int nfs_pwrite_async(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf, nfs_cb cb, void *private_data);
281/*
282 * Sync pwrite()
283 * Function returns
284 * >=0 : numer of bytes written.
285 * -errno : An error occured.
286 */
287int nfs_pwrite_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t count, char *buf);
288
289
290/*
291 * WRITE()
292 */
293/*
294 * Async write()
295 *
296 * Function returns
297 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
298 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
299 *
300 * When the callback is invoked, status indicates the result:
301 * >=0 : Success.
302 * status is numer of bytes written.
303 * -errno : An error occured.
304 * data is the error string.
305 */
306int nfs_write_async(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf, nfs_cb cb, void *private_data);
307/*
308 * Sync write()
309 * Function returns
310 * >=0 : numer of bytes written.
311 * -errno : An error occured.
312 */
313int nfs_write_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf);
314
315
316/*
317 * LSEEK()
318 */
319/*
320 * Async lseek()
321 *
322 * Function returns
323 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
324 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
325 *
326 * When the callback is invoked, status indicates the result:
327 * >=0 : Success.
328 * data is off_t * for the current position.
329 * -errno : An error occured.
330 * data is the error string.
331 */
332int nfs_lseek_async(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, int whence, nfs_cb cb, void *private_data);
333/*
334 * Sync lseek()
335 * Function returns
336 * >=0 : numer of bytes read.
337 * -errno : An error occured.
338 */
339int nfs_lseek_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, int whence, off_t *current_offset);
340
341
342/*
343 * FSYNC()
344 */
345/*
346 * Async fsync()
347 *
348 * Function returns
349 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
350 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
351 *
352 * When the callback is invoked, status indicates the result:
353 * 0 : Success.
354 * -errno : An error occured.
355 * data is the error string.
356 */
357int nfs_fsync_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, void *private_data);
358/*
359 * Sync fsync()
360 * Function returns
361 * 0 : Success
362 * -errno : An error occured.
363 */
364int nfs_fsync_sync(struct nfs_context *nfs, struct nfsfh *nfsfh);
365
366
367
368/*
369 * TRUNCATE()
370 */
371/*
372 * Async truncate()
373 *
374 * Function returns
375 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
376 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
377 *
378 * When the callback is invoked, status indicates the result:
379 * 0 : Success.
380 * -errno : An error occured.
381 * data is the error string.
382 */
383int nfs_truncate_async(struct nfs_context *nfs, const char *path, off_t length, nfs_cb cb, void *private_data);
384/*
385 * Sync truncate()
386 * Function returns
387 * 0 : Success
388 * -errno : An error occured.
389 */
390int nfs_truncate_sync(struct nfs_context *nfs, const char *path, off_t length);
391
392
393
394/*
395 * FTRUNCATE()
396 */
397/*
398 * Async ftruncate()
399 *
400 * Function returns
401 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
402 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
403 *
404 * When the callback is invoked, status indicates the result:
405 * 0 : Success.
406 * -errno : An error occured.
407 * data is the error string.
408 */
409int nfs_ftruncate_async(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t length, nfs_cb cb, void *private_data);
410/*
411 * Sync ftruncate()
412 * Function returns
413 * 0 : Success
414 * -errno : An error occured.
415 */
416int nfs_ftruncate_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t length);
417
418
419
420
421
422
423/*
424 * MKDIR()
425 */
426/*
427 * Async mkdir()
428 *
429 * Function returns
430 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
431 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
432 *
433 * When the callback is invoked, status indicates the result:
434 * 0 : Success.
435 * -errno : An error occured.
436 * data is the error string.
437 */
438int nfs_mkdir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
439/*
440 * Sync mkdir()
441 * Function returns
442 * 0 : Success
443 * -errno : An error occured.
444 */
445int nfs_mkdir_sync(struct nfs_context *nfs, const char *path);
446
447
448
449/*
450 * RMDIR()
451 */
452/*
453 * Async rmdir()
454 *
455 * Function returns
456 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
457 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
458 *
459 * When the callback is invoked, status indicates the result:
460 * 0 : Success.
461 * -errno : An error occured.
462 * data is the error string.
463 */
464int nfs_rmdir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
465/*
466 * Sync rmdir()
467 * Function returns
468 * 0 : Success
469 * -errno : An error occured.
470 */
471int nfs_rmdir_sync(struct nfs_context *nfs, const char *path);
472
473
474
475
476/*
477 * CREAT()
478 */
479/*
480 * Async creat()
481 *
482 * Function returns
483 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
484 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
485 *
486 * When the callback is invoked, status indicates the result:
487 * 0 : Success.
488 * data is a struct *nfsfh;
489 * -errno : An error occured.
490 * data is the error string.
491 */
492int nfs_creat_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb cb, void *private_data);
493/*
494 * Sync creat()
495 * Function returns
496 * 0 : Success
497 * -errno : An error occured.
498 */
499int nfs_creat_sync(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh);
500
501
502
503
504
505/*
506 * UNLINK()
507 */
508/*
509 * Async unlink()
510 *
511 * Function returns
512 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
513 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
514 *
515 * When the callback is invoked, status indicates the result:
516 * 0 : Success.
517 * data is NULL
518 * -errno : An error occured.
519 * data is the error string.
520 */
521int nfs_unlink_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
522/*
523 * Sync unlink()
524 * Function returns
525 * 0 : Success
526 * -errno : An error occured.
527 */
528int nfs_unlink_sync(struct nfs_context *nfs, const char *path);
529
530
531
532
533/*
534 * OPENDIR()
535 */
536struct nfsdir;
537/*
538 * Async opendir()
539 *
540 * Function returns
541 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
542 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
543 *
544 * When struct nfsdir * is returned, this resource is closed/freed by calling nfs_closedir()
545 *
546 * When the callback is invoked, status indicates the result:
547 * 0 : Success.
548 * data is struct nfsdir *
549 * -errno : An error occured.
550 * data is the error string.
551 */
552int nfs_opendir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
553/*
554 * Sync opendir()
555 * Function returns
556 * 0 : Success
557 * -errno : An error occured.
558 */
559int nfs_opendir_sync(struct nfs_context *nfs, const char *path, struct nfsdir **nfsdir);
560
561
562
563/*
564 * READDIR()
565 */
566struct nfsdirent {
567 struct nfsdirent *next;
568 char *name;
569 uint64_t inode;
570};
571/*
572 * nfs_readdir() never blocks, so no special sync/async versions are available
573 */
574struct nfsdirent *nfs_readdir(struct nfs_context *nfs, struct nfsdir *nfsdir);
575
576
577
578/*
579 * READDIR()
580 */
581/*
582 * nfs_closedir() never blocks, so no special sync/async versions are available
583 */
584void nfs_closedir(struct nfs_context *nfs, struct nfsdir *nfsdir);
585
586
587
588/*
589 * STATVFS()
590 */
591/*
592 * Async statvfs(<dirname>)
593 * Function returns
594 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
595 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
596 *
597 * When the callback is invoked, status indicates the result:
598 * 0 : Success.
599 * data is struct statvfs *
600 * -errno : An error occured.
601 * data is the error string.
602 */
603struct statvfs;
604int nfs_statvfs_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
605/*
606 * Sync statvfs(<dirname>)
607 * Function returns
608 * 0 : The operation was successfull.
609 * -errno : The command failed.
610 */
611int nfs_statvfs_sync(struct nfs_context *nfs, const char *path, struct statvfs *svfs);
612
613
614/*
615 * READLINK()
616 */
617/*
618 * Async readlink(<name>)
619 * Function returns
620 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
621 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
622 *
623 * When the callback is invoked, status indicates the result:
624 * 0 : Success.
625 * data is a char *
626 * data is only valid during the callback and is automatically freed when the callback returns.
627 * -errno : An error occured.
628 * data is the error string.
629 */
630struct statvfs;
631int nfs_readlink_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *private_data);
632/*
633 * Sync readlink(<name>)
634 * Function returns
635 * 0 : The operation was successfull.
636 * -errno : The command failed.
637 */
638int nfs_readlink_sync(struct nfs_context *nfs, const char *path, char *buf, int bufsize);
639
640
641
642/*
643 * CHMOD()
644 */
645/*
646 * Async chmod(<name>)
647 * Function returns
648 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
649 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
650 *
651 * When the callback is invoked, status indicates the result:
652 * 0 : Success.
653 * data is NULL
654 * -errno : An error occured.
655 * data is the error string.
656 */
657int nfs_chmod_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb cb, void *private_data);
658/*
659 * Sync chmod(<name>)
660 * Function returns
661 * 0 : The operation was successfull.
662 * -errno : The command failed.
663 */
664int nfs_chmod_sync(struct nfs_context *nfs, const char *path, int mode);
665
666
667
668/*
669 * FCHMOD()
670 */
671/*
672 * Async fchmod(<handle>)
673 * Function returns
674 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
675 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
676 *
677 * When the callback is invoked, status indicates the result:
678 * 0 : Success.
679 * data is NULL
680 * -errno : An error occured.
681 * data is the error string.
682 */
683int nfs_fchmod_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int mode, nfs_cb cb, void *private_data);
684/*
685 * Sync fchmod(<handle>)
686 * Function returns
687 * 0 : The operation was successfull.
688 * -errno : The command failed.
689 */
690int nfs_fchmod_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, int mode);
691
692
693
694/*
695 * CHOWN()
696 */
697/*
698 * Async chown(<name>)
699 * Function returns
700 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
701 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
702 *
703 * When the callback is invoked, status indicates the result:
704 * 0 : Success.
705 * data is NULL
706 * -errno : An error occured.
707 * data is the error string.
708 */
709int nfs_chown_async(struct nfs_context *nfs, const char *path, int uid, int gid, nfs_cb cb, void *private_data);
710/*
711 * Sync chown(<name>)
712 * Function returns
713 * 0 : The operation was successfull.
714 * -errno : The command failed.
715 */
716int nfs_chown_sync(struct nfs_context *nfs, const char *path, int uid, int gid);
717
718
719
720/*
721 * FCHOWN()
722 */
723/*
724 * Async fchown(<handle>)
725 * Function returns
726 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
727 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
728 *
729 * When the callback is invoked, status indicates the result:
730 * 0 : Success.
731 * data is NULL
732 * -errno : An error occured.
733 * data is the error string.
734 */
735int nfs_fchown_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int gid, nfs_cb cb, void *private_data);
736/*
737 * Sync fchown(<handle>)
738 * Function returns
739 * 0 : The operation was successfull.
740 * -errno : The command failed.
741 */
742int nfs_fchown_sync(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int gid);
743
744
745
746
747/*
748 * UTIMES()
749 */
750/*
751 * Async utimes(<path>)
752 * Function returns
753 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
754 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
755 *
756 * When the callback is invoked, status indicates the result:
757 * 0 : Success.
758 * data is NULL
759 * -errno : An error occured.
760 * data is the error string.
761 */
762int nfs_utimes_async(struct nfs_context *nfs, const char *path, struct timeval *times, nfs_cb cb, void *private_data);
763/*
764 * Sync utimes(<path>)
765 * Function returns
766 * 0 : The operation was successfull.
767 * -errno : The command failed.
768 */
769int nfs_utimes_sync(struct nfs_context *nfs, const char *path, struct timeval *times);
770
771
772/*
773 * UTIME()
774 */
775/*
776 * Async utime(<path>)
777 * Function returns
778 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
779 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
780 *
781 * When the callback is invoked, status indicates the result:
782 * 0 : Success.
783 * data is NULL
784 * -errno : An error occured.
785 * data is the error string.
786 */
787struct utimbuf;
788int nfs_utime_async(struct nfs_context *nfs, const char *path, struct utimbuf *times, nfs_cb cb, void *private_data);
789/*
790 * Sync utime(<path>)
791 * Function returns
792 * 0 : The operation was successfull.
793 * -errno : The command failed.
794 */
795int nfs_utime_sync(struct nfs_context *nfs, const char *path, struct utimbuf *times);
796
797
798
799
800/*
801 * ACCESS()
802 */
803/*
804 * Async access(<path>)
805 * Function returns
806 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
807 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
808 *
809 * When the callback is invoked, status indicates the result:
810 * 0 : Success.
811 * data is NULL
812 * -errno : An error occured.
813 * data is the error string.
814 */
815int nfs_access_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb cb, void *private_data);
816/*
817 * Sync access(<path>)
818 * Function returns
819 * 0 : The operation was successfull.
820 * -errno : The command failed.
821 */
822int nfs_access_sync(struct nfs_context *nfs, const char *path, int mode);
823
824
825
826
827/*
828 * SYMLINK()
829 */
830/*
831 * Async symlink(<path>)
832 * Function returns
833 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
834 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
835 *
836 * When the callback is invoked, status indicates the result:
837 * 0 : Success.
838 * data is NULL
839 * -errno : An error occured.
840 * data is the error string.
841 */
842int nfs_symlink_async(struct nfs_context *nfs, const char *oldpath, const char *newpath, nfs_cb cb, void *private_data);
843/*
844 * Sync symlink(<path>)
845 * Function returns
846 * 0 : The operation was successfull.
847 * -errno : The command failed.
848 */
849int nfs_symlink_sync(struct nfs_context *nfs, const char *oldpath, const char *newpath);
850
851
852/*
853 * RENAME()
854 */
855/*
856 * Async rename(<oldpath>, <newpath>)
857 * Function returns
858 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
859 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
860 *
861 * When the callback is invoked, status indicates the result:
862 * 0 : Success.
863 * data is NULL
864 * -errno : An error occured.
865 * data is the error string.
866 */
867int nfs_rename_async(struct nfs_context *nfs, const char *oldpath, const char *newpath, nfs_cb cb, void *private_data);
868/*
869 * Sync rename(<oldpath>, <newpath>)
870 * Function returns
871 * 0 : The operation was successfull.
872 * -errno : The command failed.
873 */
874int nfs_rename_sync(struct nfs_context *nfs, const char *oldpath, const char *newpath);
875
876
877
878/*
879 * LINK()
880 */
881/*
882 * Async link(<oldpath>, <newpath>)
883 * Function returns
884 * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked.
885 * <0 : An error occured when trying to set up the operation. The callback will not be invoked.
886 *
887 * When the callback is invoked, status indicates the result:
888 * 0 : Success.
889 * data is NULL
890 * -errno : An error occured.
891 * data is the error string.
892 */
893int nfs_link_async(struct nfs_context *nfs, const char *oldpath, const char *newpath, nfs_cb cb, void *private_data);
894/*
895 * Sync link(<oldpath>, <newpath>)
896 * Function returns
897 * 0 : The operation was successfull.
898 * -errno : The command failed.
899 */
900int nfs_link_sync(struct nfs_context *nfs, const char *oldpath, const char *newpath);
901
902
903
904//qqq replace later with lseek(cur, 0)
905off_t nfs_get_current_offset(struct nfsfh *nfsfh);