Also, add Author and License lines to _info (ccanlint complained).
Now ccanlint can build it as a module.
-CFLAGS=-g -O0 -Wall -W -I../.. "-D_U_=__attribute__((unused))"
+CFLAGS=-g -O0 -Wall -W -I../..
LIBS=
LIBNFS_OBJ = libnfs-raw-mount.o libnfs-raw-portmap.o libnfs-raw-nfs.o libnfs-raw-nfsacl.o mount.o nfs.o nfsacl.o portmap.o pdu.o init.o socket.o libnfs.o libnfs-sync.o
LIBS=
LIBNFS_OBJ = libnfs-raw-mount.o libnfs-raw-portmap.o libnfs-raw-nfs.o libnfs-raw-nfsacl.o mount.o nfs.o nfsacl.o portmap.o pdu.o init.o socket.o libnfs.o libnfs-sync.o
* Note: various files are generated from the XDR descriptions in the rpc/
* directory using rpcgen.
*
* Note: various files are generated from the XDR descriptions in the rpc/
* directory using rpcgen.
*
+ * Author: Ronnie Sahlberg <ronniesahlberg@gmail.com>
+ * License: GPL
+ *
* Example:
* #include <ccan/nfs/nfs.h>
* #include <err.h>
* Example:
* #include <ccan/nfs/nfs.h>
* #include <err.h>
#include <fcntl.h>
#include <errno.h>
#include <poll.h>
#include <fcntl.h>
#include <errno.h>
#include <poll.h>
+#include <ccan/compiler/compiler.h>
#include "nfs.h"
#include "libnfs-raw.h"
#include "rpc/mount.h"
#include "nfs.h"
#include "libnfs-raw.h"
#include "rpc/mount.h"
/*
* connect to the server and mount the export
*/
/*
* connect to the server and mount the export
*/
-static void mount_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void mount_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void stat_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void stat_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void open_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void open_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
struct nfsfh *fh, **nfsfh;
{
struct sync_cb_data *cb_data = private_data;
struct nfsfh *fh, **nfsfh;
-static void pread_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void pread_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
char *buffer;
{
struct sync_cb_data *cb_data = private_data;
char *buffer;
-static void close_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void close_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void pwrite_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void pwrite_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void fsync_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void fsync_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void ftruncate_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void ftruncate_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void truncate_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void truncate_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void mkdir_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void mkdir_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void rmdir_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void rmdir_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
-static void creat_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void creat_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
struct nfsfh *fh, **nfsfh;
{
struct sync_cb_data *cb_data = private_data;
struct nfsfh *fh, **nfsfh;
-static void unlink_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void unlink_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void opendir_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void opendir_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
struct nfsdir *dir, **nfsdir;
{
struct sync_cb_data *cb_data = private_data;
struct nfsdir *dir, **nfsdir;
-static void lseek_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void lseek_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void statvfs_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void statvfs_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void readlink_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void readlink_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void chmod_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void chmod_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void fchmod_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void fchmod_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void chown_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void chown_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void fchown_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void fchown_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void utimes_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void utimes_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void utime_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void utime_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void access_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void access_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void symlink_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void symlink_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void rename_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void rename_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
-static void link_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void link_cb(int status, struct nfs_context *nfs UNUSED, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
{
struct sync_cb_data *cb_data = private_data;
#include <utime.h>
#include <unistd.h>
#include <fcntl.h>
#include <utime.h>
#include <unistd.h>
#include <fcntl.h>
+#include <ccan/compiler/compiler.h>
#include "nfs.h"
#include "libnfs-raw.h"
#include "rpc/mount.h"
#include "nfs.h"
#include "libnfs-raw.h"
#include "rpc/mount.h"
struct nfsdirent *current;
};
struct nfsdirent *current;
};
-void nfs_free_nfsdir(struct nfsdir *nfsdir)
+static void nfs_free_nfsdir(struct nfsdir *nfsdir)
{
while (nfsdir->entries) {
struct nfsdirent *dirent = nfsdir->entries->next;
{
while (nfsdir->entries) {
struct nfsdirent *dirent = nfsdir->entries->next;
-void free_nfs_cb_data(struct nfs_cb_data *data)
+static void free_nfs_cb_data(struct nfs_cb_data *data)
{
if (data->saved_path != NULL) {
free(data->saved_path);
{
if (data->saved_path != NULL) {
free(data->saved_path);
-static void nfs_mount_10_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_mount_10_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
* Functions to first look up a path, component by component, and then finally call a specific function once
* the filehandle for the final component is found.
*/
* Functions to first look up a path, component by component, and then finally call a specific function once
* the filehandle for the final component is found.
*/
-static void nfs_lookup_path_1_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_lookup_path_1_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_stat_1_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_stat_1_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
GETATTR3res *res;
struct nfs_cb_data *data = private_data;
{
GETATTR3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_open_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_open_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_pread_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_pread_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_pwrite_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_pwrite_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_fsync_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_fsync_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
/*
* Async ftruncate()
*/
/*
* Async ftruncate()
*/
-static void nfs_ftruncate_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_ftruncate_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_mkdir_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_mkdir_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
MKDIR3res *res;
struct nfs_cb_data *data = private_data;
{
MKDIR3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_rmdir_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_rmdir_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
RMDIR3res *res;
struct nfs_cb_data *data = private_data;
{
RMDIR3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_create_2_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_create_2_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
LOOKUP3res *res;
struct nfs_cb_data *data = private_data;
{
LOOKUP3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_creat_1_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_creat_1_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
CREATE3res *res;
struct nfs_cb_data *data = private_data;
{
CREATE3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_unlink_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_unlink_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
REMOVE3res *res;
struct nfs_cb_data *data = private_data;
{
REMOVE3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_opendir_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_opendir_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
READDIR3res *res;
struct nfs_cb_data *data = private_data;
{
READDIR3res *res;
struct nfs_cb_data *data = private_data;
-struct nfsdirent *nfs_readdir(struct nfs_context *nfs _U_, struct nfsdir *nfsdir)
+struct nfsdirent *nfs_readdir(struct nfs_context *nfs UNUSED, struct nfsdir *nfsdir)
{
struct nfsdirent *nfsdirent = nfsdir->current;
{
struct nfsdirent *nfsdirent = nfsdir->current;
-void nfs_closedir(struct nfs_context *nfs _U_, struct nfsdir *nfsdir)
+void nfs_closedir(struct nfs_context *nfs UNUSED, struct nfsdir *nfsdir)
{
nfs_free_nfsdir(nfsdir);
}
{
nfs_free_nfsdir(nfsdir);
}
-static void nfs_lseek_1_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_lseek_1_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
GETATTR3res *res;
struct lseek_cb_data *data = private_data;
{
GETATTR3res *res;
struct lseek_cb_data *data = private_data;
-static void nfs_statvfs_1_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_statvfs_1_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
FSSTAT3res *res;
struct nfs_cb_data *data = private_data;
{
FSSTAT3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_readlink_1_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_readlink_1_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
READLINK3res *res;
struct nfs_cb_data *data = private_data;
{
READLINK3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_chmod_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_chmod_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_chown_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_chown_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_utimes_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_utimes_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
-static void nfs_access_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_access_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_symlink_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_symlink_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
SYMLINK3res *res;
struct nfs_cb_data *data = private_data;
{
SYMLINK3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_rename_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_rename_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
RENAME3res *res;
struct nfs_cb_data *data = private_data;
{
RENAME3res *res;
struct nfs_cb_data *data = private_data;
-static void nfs_link_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
+static void nfs_link_cb(struct rpc_context *rpc UNUSED, int status, void *command_data, void *private_data)
{
LINK3res *res;
struct nfs_cb_data *data = private_data;
{
LINK3res *res;
struct nfs_cb_data *data = private_data;
#include <strings.h>
#include <rpc/xdr.h>
#include <rpc/rpc_msg.h>
#include <strings.h>
#include <rpc/xdr.h>
#include <rpc/rpc_msg.h>
+#include <ccan/compiler/compiler.h>
#include "dlinklist.h"
#include "nfs.h"
#include "libnfs-raw.h"
#include "dlinklist.h"
#include "nfs.h"
#include "libnfs-raw.h"
-void rpc_free_pdu(struct rpc_context *rpc _U_, struct rpc_pdu *pdu)
+void rpc_free_pdu(struct rpc_context *rpc UNUSED, struct rpc_pdu *pdu)
{
if (pdu->outdata.data != NULL) {
free(pdu->outdata.data);
{
if (pdu->outdata.data != NULL) {
free(pdu->outdata.data);