diff options
author | Manuel Menal <mmenal@hurdfr.org> | 2006-04-11 12:12:20 +0000 |
---|---|---|
committer | Manuel Menal <mmenal@hurdfr.org> | 2006-04-11 12:12:20 +0000 |
commit | 2c079eaae47bc35852bb796b6a7582b56c799e16 (patch) | |
tree | 15a9d967c136eb98d454390530c352edba323912 | |
parent | ea5e87f241d05d99cc376ea34d8105de8dc174c8 (diff) |
Applied patch from Ben Asselstine: added a new option to specify a port.
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | args.c | 30 | ||||
-rw-r--r-- | gopherfs.c | 6 | ||||
-rw-r--r-- | gopherfs.h | 3 | ||||
-rw-r--r-- | netfs.c | 8 |
5 files changed, 41 insertions, 21 deletions
@@ -1,3 +1,18 @@ +2002-04-15 Ben Asseltsine <ben@asselstine.com> + + * args.c (parse_opt): new option to specify a port. + * args.c (parse_opt): setting default port when processing hostname. + * args.c: corrected args_doc to reflect parameter order. + * netfs.c: changed to use current libnetfs. + (netfs_attempt_set_size, netfs_attempt_read, netfs_attempt_write): + changed from 'off_t' to 'loff_t' in function declaration. + (netfs_attempt_statfs): changed from 'struct statfs' to + 'fsys_statfsbuf_t' in function declaration. + * gopherfs.c: changed to use current libnetfs. now setting + netfs_server_name and netfs_server_version. + * gopherfs.c (main): showing "attached to" output only when in + debug mode. + 2002-04-15 James A. Morrison <ja2morri@uwaterloo.ca> * node.c (gopherfs_make_netnode): Try to free all allocations on @@ -29,12 +29,13 @@ #include "gopherfs.h" /* ARGP data */ -const char *argp_program_version = "gopherfs 0.1.2"; +const char *argp_program_version = GOPHER_SERVER_NAME " " GOPHER_SERVER_VERSION; const char *argp_program_bug_address = "ja2morri@uwaterloo.ca"; -char args_doc[] = "REMOTE_FS [SERVER]"; +char args_doc[] = "SERVER [REMOTE_FS]"; char doc[] = "Hurd gopher filesystem translator"; static const struct argp_option options[] = { {"debug", 'D', 0, 0, "enable debug output"}, + {"port", 'P', "NUMBER", 0, "Specify a non-standard port"}, {0} }; /* the function that groks the arguments and fills @@ -43,29 +44,30 @@ static const struct argp_option options[] = { static error_t parse_opt (int key, char *arg, struct argp_state *state) { + char *tail; switch (key) { case 'D': debug_flag = 1; break; + case 'P': + gopherfs_root_port = (unsigned short) strtol (arg, &tail, 10); + if (tail == arg || gopherfs_root_port > USHRT_MAX) + { + /* XXX bad integer conversion */ + error (1, errno, "bad port number"); + } + break; case ARGP_KEY_ARG: if (state->arg_num == 0) - gopherfs_root_server = arg; + { + gopherfs_root_port = 70; + gopherfs_root_server = arg; + } else if (state->arg_num == 1) { - gopherfs_root_port = 70; gopherfs_server_dir = arg; } - else if (state->arg_num == 2) - { - char *tail; - gopherfs_root_port = (unsigned short) strtol (arg, &tail, 10); - if (tail == arg || gopherfs_root_port > USHRT_MAX) - { - /* XXX bad integer conversion */ - error (1, errno, "bad port number"); - } - } else return ARGP_ERR_UNKNOWN; break; diff --git a/gopherfs.c b/gopherfs.c index 063ede67a..7cd942b7e 100644 --- a/gopherfs.c +++ b/gopherfs.c @@ -37,7 +37,8 @@ unsigned short gopherfs_root_port; char *gopherfs_server_dir; int debug_flag; - +char *netfs_server_name = GOPHER_SERVER_NAME; +char *netfs_server_version = GOPHER_SERVER_VERSION; struct gopherfs *gopherfs; /* filesystem global pointer */ volatile struct mapped_time_value *gopherfs_maptime; @@ -75,7 +76,8 @@ main (int argc, char **argv) gopherfs->root = gopherfs_make_node (GPHR_DIR, "dir", "", gopherfs_root_server, gopherfs_root_port); - fprintf (stderr, "attaching to %s\n", gopherfs_root_server); + if (debug_flag) + fprintf (stderr, "attaching to %s\n", gopherfs_root_server); /* XXX */ netfs_root_node = gopherfs->root; netfs_startup (bootstrap, 0); diff --git a/gopherfs.h b/gopherfs.h index a6b4b369d..d71037a1c 100644 --- a/gopherfs.h +++ b/gopherfs.h @@ -30,7 +30,8 @@ #include <netdb.h> #include <hurd/hurd_types.h> - +#define GOPHER_SERVER_NAME "gopherfs" +#define GOPHER_SERVER_VERSION "0.1.2" /* declaration of global config parapeters */ extern char *gopherfs_root_server; extern unsigned short gopherfs_root_port; @@ -378,7 +378,7 @@ error_t netfs_attempt_chflags (struct iouser *cred, struct node *node, /* This should attempt to set the size of the file NODE (for user CRED) to SIZE bytes long. */ error_t netfs_attempt_set_size (struct iouser *cred, struct node *node, - off_t size) + loff_t size) { return EROFS; } @@ -386,7 +386,7 @@ error_t netfs_attempt_set_size (struct iouser *cred, struct node *node, /* This should attempt to fetch filesystem status information for the remote filesystem, for the user CRED. */ error_t netfs_attempt_statfs (struct iouser *cred, struct node *node, - struct statfs *st) + fsys_statfsbuf_t *st) { return EOPNOTSUPP; } @@ -430,7 +430,7 @@ error_t netfs_attempt_readlink (struct iouser *user, struct node *node, up to *LEN bytes. Put the data at DATA. Set *LEN to the amount successfully read upon return. */ error_t netfs_attempt_read (struct iouser *cred, struct node *node, - off_t offset, size_t *len, void *data) + loff_t offset, size_t *len, void *data) { error_t err; int remote_fd; @@ -455,7 +455,7 @@ error_t netfs_attempt_read (struct iouser *cred, struct node *node, to *LEN bytes from DATA. Set *LEN to the amount seccessfully written upon return. */ error_t netfs_attempt_write (struct iouser *cred, struct node *node, - off_t offset, size_t *len, void *data) + loff_t offset, size_t *len, void *data) { return EROFS; } |