]> Zhao Yanbai Git Server - minix.git/commitdiff
Move optset.c into libsys; remove redundant copies
authorDavid van Moolenbroek <david@minix3.org>
Mon, 7 Nov 2011 15:16:08 +0000 (16:16 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Mon, 7 Nov 2011 15:16:08 +0000 (16:16 +0100)
20 files changed:
common/include/Makefile.inc
common/include/minix/optset.h [moved from drivers/filter/optset.h with 89% similarity]
drivers/filter/Makefile
drivers/filter/inc.h
drivers/filter/main.c
drivers/filter/optset.c [deleted file]
lib/libsys/Makefile
lib/libsys/optset.c [moved from test/blocktest/optset.c with 99% similarity]
servers/ext2/Makefile
servers/ext2/main.c
servers/ext2/optset.c [deleted file]
servers/ext2/optset.h [deleted file]
servers/hgfs/Makefile
servers/hgfs/inc.h
servers/hgfs/main.c
servers/hgfs/optset.c [deleted file]
servers/hgfs/optset.h [deleted file]
test/blocktest/Makefile
test/blocktest/blocktest.c
test/blocktest/optset.h [deleted file]

index f4f274a839482a71a1a900eb17d9b4c9a92c63e2..24a39355ded945676a76e06406069eba35db4f4b 100644 (file)
@@ -12,7 +12,7 @@ INCS+=        minix/acpi.h minix/ansi.h minix/audio_fw.h minix/bitmap.h \
        minix/endpoint.h minix/fslib.h minix/gcov.h minix/hash.h \
        minix/ioctl.h minix/input.h minix/ipc.h minix/ipcconst.h \
        minix/keymap.h minix/limits.h minix/mthread.h minix/minlib.h \
-       minix/netdriver.h minix/partition.h minix/portio.h \
+       minix/netdriver.h minix/optset.h minix/partition.h minix/portio.h \
        minix/priv.h minix/procfs.h minix/profile.h minix/queryparam.h \
        minix/rs.h minix/safecopies.h minix/sched.h minix/sef.h \
        minix/sound.h minix/spin.h minix/sys_config.h minix/sysinfo.h \
similarity index 89%
rename from drivers/filter/optset.h
rename to common/include/minix/optset.h
index 411d80452f2d96f1d8797543078d96f8a5c9a4f5..8990ce6bd35d330ecee888bd455f0773cd212369 100644 (file)
@@ -1,11 +1,11 @@
-#ifndef _OPTSET_H
-#define _OPTSET_H
+#ifndef _MINIX_OPTSET_H
+#define _MINIX_OPTSET_H
 
 typedef enum {
   OPT_BOOL,
   OPT_STRING,
   OPT_INT
-} opt_type;
+} optset_type;
 
 /* An entry for the parser of an options set. The 'os_name' field must point
  * to a string, which is treated case-insensitively; the last entry of a table
@@ -20,11 +20,11 @@ typedef enum {
  */
 struct optset {
   char *os_name;
-  opt_type os_type;
+  optset_type os_type;
   void *os_ptr;
   int os_val;
 };
 
 _PROTOTYPE( void optset_parse, (struct optset *table, char *string)    );
 
-#endif /* _OPTSET_H */
+#endif /* _MINIX_OPTSET_H */
index 119372f574403f31ac02834b44e5d2c596101b2d..7d91a0f74d66fc30e6722f08858af5607617d915 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for filter driver
 PROG=  filter
-SRCS=  main.c sum.c driver.c util.c optset.c crc.c md5.c
+SRCS=  main.c sum.c driver.c util.c crc.c md5.c
 
 DPADD+= ${LIBDRIVER} ${LIBSYS}
 LDADD+=        -ldriver -lsys
index 693b8d5ba404bc2a027c38625d9aa5f58abcd217..ccd5f9e34a2cb50dce5ea509dcd7a3f62d2a1d45 100644 (file)
@@ -13,6 +13,7 @@
 #include <minix/ds.h>
 #include <minix/callnr.h>
 #include <minix/driver.h>
+#include <minix/optset.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
index 6a77bbddca28f06d53135a90639d5cd5515b5e99..2b36e7c6aa3ac701f17e4c7d8ff31242902e6b90 100644 (file)
@@ -8,7 +8,6 @@
  */
 
 #include "inc.h"
-#include "optset.h"
 
 #define _POSIX_SOURCE 1
 #include <signal.h>
diff --git a/drivers/filter/optset.c b/drivers/filter/optset.c
deleted file mode 100644 (file)
index a338a47..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* This file provides functionality to parse strings of comma-separated
- * options, each being either a single key name or a key=value pair, where the
- * value may be enclosed in quotes. A table of optset entries is provided to
- * determine which options are recognized, how to parse their values, and where
- * to store those. Unrecognized options are silently ignored; improperly
- * formatted options are silently set to reasonably acceptable values.
- *
- * The entry points into this file are:
- *   optset_parse      parse the given options string using the given table
- *
- * Created:
- *   May 2009 (D.C. van Moolenbroek)
- */
-
-#define _MINIX 1
-#include <stdlib.h>
-#include <string.h>
-#include <minix/config.h>
-#include <minix/const.h>
-
-#include "optset.h"
-
-FORWARD _PROTOTYPE( void optset_parse_entry, (struct optset *entry,
-                                               char *ptr, int len)     );
-
-/*===========================================================================*
- *                             optset_parse_entry                           *
- *===========================================================================*/
-PRIVATE void optset_parse_entry(entry, ptr, len)
-struct optset *entry;
-char *ptr;
-int len;
-{
-/* Parse and store the value of a single option.
- */
-  char *dst;
-  int val;
-
-  switch (entry->os_type) {
-  case OPT_BOOL:
-       *((int *) entry->os_ptr) = entry->os_val;
-
-       break;
-
-  case OPT_STRING:
-       if (len >= entry->os_val)
-               len = entry->os_val - 1;
-
-       dst = (char *) entry->os_ptr;
-
-       if (len > 0)
-               memcpy(dst, ptr, len);
-       dst[len] = 0;
-
-       break;
-
-  case OPT_INT:
-       if (len > 0)
-               val = strtol(ptr, NULL, entry->os_val);
-       else
-               val = 0;
-
-       *((int *) entry->os_ptr) = val;
-
-       break;
-  }
-}
-
-/*===========================================================================*
- *                             optset_parse                                 *
- *===========================================================================*/
-PUBLIC void optset_parse(table, string)
-struct optset *table;
-char *string;
-{
-/* Parse a string of options, using the provided table of optset entries.
- */
-  char *p, *kptr, *vptr;
-  int i, klen, vlen;
-
-  for (p = string; *p; ) {
-       /* Get the key name for the field. */
-       for (kptr = p, klen = 0; *p && *p != '=' && *p != ','; p++, klen++);
-
-       if (*p == '=') {
-               /* The field has an associated value. */
-               vptr = ++p;
-
-               /* If the first character after the '=' is a quote character,
-                * find a matching quote character followed by either a comma
-                * or the terminating null character, and use the string in
-                * between. Otherwise, use the string up to the next comma or
-                * the terminating null character.
-                */
-               if (*p == '\'' || *p == '"') {
-                       p++;
-
-                       for (vlen = 0; *p && (*p != *vptr ||
-                               (p[1] && p[1] != ',')); p++, vlen++);
-
-                       if (*p) p++;
-                       vptr++;
-               }
-               else
-                       for (vlen = 0; *p && *p != ','; p++, vlen++);
-       }
-       else {
-               vptr = NULL;
-               vlen = 0;
-       }
-
-       if (*p == ',') p++;
-
-       /* Find a matching entry for this key in the given table. If found,
-        * call optset_parse_entry() on it. Silently ignore the option
-        * otherwise.
-        */
-       for (i = 0; table[i].os_name != NULL; i++) {
-               if (strlen(table[i].os_name) == klen &&
-                       !strncasecmp(table[i].os_name, kptr, klen)) {
-
-                       optset_parse_entry(&table[i], vptr, vlen);
-
-                       break;
-               }
-       }
-  }
-}
index bbb0bc325890cf93ba47420481026d5d0cfc8a89..183359f7ed3e967669eb1c45117b5dd8ca83adff 100644 (file)
@@ -23,6 +23,7 @@ SRCS=  \
        kprintf.c \
        kputc.c \
        kputs.c \
+       optset.c \
        panic.c \
        pci_attr_r16.c \
        pci_attr_r32.c \
similarity index 99%
rename from test/blocktest/optset.c
rename to lib/libsys/optset.c
index c53dd61ff4503ace3d560548f5f6d94d39e500cf..962814dfd58ffd335f7f19930b98ee31c41e6b8c 100644 (file)
@@ -17,8 +17,7 @@
 #include <string.h>
 #include <minix/config.h>
 #include <minix/const.h>
-
-#include "optset.h"
+#include <minix/optset.h>
 
 FORWARD _PROTOTYPE( void optset_parse_entry, (struct optset *entry,
                                                char *ptr, int len)     );
index 35bd6892e50e9c8e90df809425a183af2096feb0..599355c96ad22d84c1bb479e4a1fec57db0ab91a 100644 (file)
@@ -4,7 +4,7 @@ SRCS=   balloc.c cache.c device.c link.c \
        mount.c misc.c open.c protect.c read.c \
        stadir.c table.c time.c utility.c \
        write.c ialloc.c inode.c main.c path.c \
-       super.c optset.c
+       super.c
 DPADD+=        ${LIBSYS}
 LDADD+= -lminixfs -lsys
 
index 07caa5a3fb5ed6213fe0afba79c5cf5352115a13..0561877ecd702eaba45ddf328989754bc061646c 100644 (file)
@@ -8,11 +8,10 @@
 #include <minix/dmap.h>
 #include <minix/endpoint.h>
 #include <minix/vfsif.h>
+#include <minix/optset.h>
 #include "buf.h"
 #include "inode.h"
 #include "drivers.h"
-#include "optset.h"
-
 
 /* Declare some local functions. */
 FORWARD _PROTOTYPE(void get_work, (message *m_in)                      );
diff --git a/servers/ext2/optset.c b/servers/ext2/optset.c
deleted file mode 100644 (file)
index a338a47..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* This file provides functionality to parse strings of comma-separated
- * options, each being either a single key name or a key=value pair, where the
- * value may be enclosed in quotes. A table of optset entries is provided to
- * determine which options are recognized, how to parse their values, and where
- * to store those. Unrecognized options are silently ignored; improperly
- * formatted options are silently set to reasonably acceptable values.
- *
- * The entry points into this file are:
- *   optset_parse      parse the given options string using the given table
- *
- * Created:
- *   May 2009 (D.C. van Moolenbroek)
- */
-
-#define _MINIX 1
-#include <stdlib.h>
-#include <string.h>
-#include <minix/config.h>
-#include <minix/const.h>
-
-#include "optset.h"
-
-FORWARD _PROTOTYPE( void optset_parse_entry, (struct optset *entry,
-                                               char *ptr, int len)     );
-
-/*===========================================================================*
- *                             optset_parse_entry                           *
- *===========================================================================*/
-PRIVATE void optset_parse_entry(entry, ptr, len)
-struct optset *entry;
-char *ptr;
-int len;
-{
-/* Parse and store the value of a single option.
- */
-  char *dst;
-  int val;
-
-  switch (entry->os_type) {
-  case OPT_BOOL:
-       *((int *) entry->os_ptr) = entry->os_val;
-
-       break;
-
-  case OPT_STRING:
-       if (len >= entry->os_val)
-               len = entry->os_val - 1;
-
-       dst = (char *) entry->os_ptr;
-
-       if (len > 0)
-               memcpy(dst, ptr, len);
-       dst[len] = 0;
-
-       break;
-
-  case OPT_INT:
-       if (len > 0)
-               val = strtol(ptr, NULL, entry->os_val);
-       else
-               val = 0;
-
-       *((int *) entry->os_ptr) = val;
-
-       break;
-  }
-}
-
-/*===========================================================================*
- *                             optset_parse                                 *
- *===========================================================================*/
-PUBLIC void optset_parse(table, string)
-struct optset *table;
-char *string;
-{
-/* Parse a string of options, using the provided table of optset entries.
- */
-  char *p, *kptr, *vptr;
-  int i, klen, vlen;
-
-  for (p = string; *p; ) {
-       /* Get the key name for the field. */
-       for (kptr = p, klen = 0; *p && *p != '=' && *p != ','; p++, klen++);
-
-       if (*p == '=') {
-               /* The field has an associated value. */
-               vptr = ++p;
-
-               /* If the first character after the '=' is a quote character,
-                * find a matching quote character followed by either a comma
-                * or the terminating null character, and use the string in
-                * between. Otherwise, use the string up to the next comma or
-                * the terminating null character.
-                */
-               if (*p == '\'' || *p == '"') {
-                       p++;
-
-                       for (vlen = 0; *p && (*p != *vptr ||
-                               (p[1] && p[1] != ',')); p++, vlen++);
-
-                       if (*p) p++;
-                       vptr++;
-               }
-               else
-                       for (vlen = 0; *p && *p != ','; p++, vlen++);
-       }
-       else {
-               vptr = NULL;
-               vlen = 0;
-       }
-
-       if (*p == ',') p++;
-
-       /* Find a matching entry for this key in the given table. If found,
-        * call optset_parse_entry() on it. Silently ignore the option
-        * otherwise.
-        */
-       for (i = 0; table[i].os_name != NULL; i++) {
-               if (strlen(table[i].os_name) == klen &&
-                       !strncasecmp(table[i].os_name, kptr, klen)) {
-
-                       optset_parse_entry(&table[i], vptr, vlen);
-
-                       break;
-               }
-       }
-  }
-}
diff --git a/servers/ext2/optset.h b/servers/ext2/optset.h
deleted file mode 100644 (file)
index 87ea4ce..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef _OPTSET_H
-#define _OPTSET_H
-
-enum {
-  OPT_BOOL,
-  OPT_STRING,
-  OPT_INT
-};
-
-/* An entry for the parser of an options set. The 'os_name' field must point
- * to a string, which is treated case-insensitively; the last entry of a table
- * must have NULL name. The 'os_type' field must be set to one of the OPT_
- * values defined above. The 'os_ptr' field must point to the field that is to
- * receive the value of a recognized option. For OPT_STRING, it must point to a
- * string of a size set in 'os_val'; the resulting string may be truncated, but
- * will always be null-terminated. For OPT_BOOL, it must point to an int which
- * will be set to the value in 'os_val' if the option is present. For OPT_INT,
- * it must point to an int which will be set to the provided option value;
- * 'os_val' is then a base passed to strtol().
- */
-struct optset {
-  char *os_name;
-  int os_type;
-  void *os_ptr;
-  int os_val;
-};
-
-_PROTOTYPE( void optset_parse, (struct optset *table, char *string)    );
-
-#endif /* _OPTSET_H */
index eadf787c970151a00880aacfd01df98bb8cd3343..cb8d9636c54cceee791ada0a200ac7215ad83d54 100644 (file)
@@ -1,8 +1,8 @@
 # Makefile for VMware Host/Guest File System (HGFS) server
 PROG=  hgfs
 SRCS=  dentry.c handle.c inode.c link.c lookup.c main.c \
-       misc.c mount.c name.c optset.c path.c read.c \
-       stat.c table.c util.c verify.c write.c
+       misc.c mount.c name.c path.c read.c stat.c table.c \
+       util.c verify.c write.c
 
 DPADD+=        ${LIBHGFS} ${LIBSYS}
 LDADD+=        -lhgfs -lsys
index 7e2c6ec312c26150cccf6fff9066219b250c1057..b83f730816ad6d3e593e5dd200d17159346ab531 100644 (file)
@@ -13,6 +13,7 @@
 #include <minix/vfsif.h>
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
+#include <minix/optset.h>
 #include <sys/param.h>
 
 #if DEBUG
index a68496202c9922d6e7109bfc2d4e1d3e31b013b2..61ac1c64cb580371749e3a60d2a20a8247ebc333 100644 (file)
@@ -9,8 +9,6 @@
 
 #include "inc.h"
 
-#include "optset.h"
-
 #include <signal.h>
 #include <unistd.h>
 #include <stdlib.h>
diff --git a/servers/hgfs/optset.c b/servers/hgfs/optset.c
deleted file mode 100644 (file)
index a338a47..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* This file provides functionality to parse strings of comma-separated
- * options, each being either a single key name or a key=value pair, where the
- * value may be enclosed in quotes. A table of optset entries is provided to
- * determine which options are recognized, how to parse their values, and where
- * to store those. Unrecognized options are silently ignored; improperly
- * formatted options are silently set to reasonably acceptable values.
- *
- * The entry points into this file are:
- *   optset_parse      parse the given options string using the given table
- *
- * Created:
- *   May 2009 (D.C. van Moolenbroek)
- */
-
-#define _MINIX 1
-#include <stdlib.h>
-#include <string.h>
-#include <minix/config.h>
-#include <minix/const.h>
-
-#include "optset.h"
-
-FORWARD _PROTOTYPE( void optset_parse_entry, (struct optset *entry,
-                                               char *ptr, int len)     );
-
-/*===========================================================================*
- *                             optset_parse_entry                           *
- *===========================================================================*/
-PRIVATE void optset_parse_entry(entry, ptr, len)
-struct optset *entry;
-char *ptr;
-int len;
-{
-/* Parse and store the value of a single option.
- */
-  char *dst;
-  int val;
-
-  switch (entry->os_type) {
-  case OPT_BOOL:
-       *((int *) entry->os_ptr) = entry->os_val;
-
-       break;
-
-  case OPT_STRING:
-       if (len >= entry->os_val)
-               len = entry->os_val - 1;
-
-       dst = (char *) entry->os_ptr;
-
-       if (len > 0)
-               memcpy(dst, ptr, len);
-       dst[len] = 0;
-
-       break;
-
-  case OPT_INT:
-       if (len > 0)
-               val = strtol(ptr, NULL, entry->os_val);
-       else
-               val = 0;
-
-       *((int *) entry->os_ptr) = val;
-
-       break;
-  }
-}
-
-/*===========================================================================*
- *                             optset_parse                                 *
- *===========================================================================*/
-PUBLIC void optset_parse(table, string)
-struct optset *table;
-char *string;
-{
-/* Parse a string of options, using the provided table of optset entries.
- */
-  char *p, *kptr, *vptr;
-  int i, klen, vlen;
-
-  for (p = string; *p; ) {
-       /* Get the key name for the field. */
-       for (kptr = p, klen = 0; *p && *p != '=' && *p != ','; p++, klen++);
-
-       if (*p == '=') {
-               /* The field has an associated value. */
-               vptr = ++p;
-
-               /* If the first character after the '=' is a quote character,
-                * find a matching quote character followed by either a comma
-                * or the terminating null character, and use the string in
-                * between. Otherwise, use the string up to the next comma or
-                * the terminating null character.
-                */
-               if (*p == '\'' || *p == '"') {
-                       p++;
-
-                       for (vlen = 0; *p && (*p != *vptr ||
-                               (p[1] && p[1] != ',')); p++, vlen++);
-
-                       if (*p) p++;
-                       vptr++;
-               }
-               else
-                       for (vlen = 0; *p && *p != ','; p++, vlen++);
-       }
-       else {
-               vptr = NULL;
-               vlen = 0;
-       }
-
-       if (*p == ',') p++;
-
-       /* Find a matching entry for this key in the given table. If found,
-        * call optset_parse_entry() on it. Silently ignore the option
-        * otherwise.
-        */
-       for (i = 0; table[i].os_name != NULL; i++) {
-               if (strlen(table[i].os_name) == klen &&
-                       !strncasecmp(table[i].os_name, kptr, klen)) {
-
-                       optset_parse_entry(&table[i], vptr, vlen);
-
-                       break;
-               }
-       }
-  }
-}
diff --git a/servers/hgfs/optset.h b/servers/hgfs/optset.h
deleted file mode 100644 (file)
index 87ea4ce..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef _OPTSET_H
-#define _OPTSET_H
-
-enum {
-  OPT_BOOL,
-  OPT_STRING,
-  OPT_INT
-};
-
-/* An entry for the parser of an options set. The 'os_name' field must point
- * to a string, which is treated case-insensitively; the last entry of a table
- * must have NULL name. The 'os_type' field must be set to one of the OPT_
- * values defined above. The 'os_ptr' field must point to the field that is to
- * receive the value of a recognized option. For OPT_STRING, it must point to a
- * string of a size set in 'os_val'; the resulting string may be truncated, but
- * will always be null-terminated. For OPT_BOOL, it must point to an int which
- * will be set to the value in 'os_val' if the option is present. For OPT_INT,
- * it must point to an int which will be set to the provided option value;
- * 'os_val' is then a base passed to strtol().
- */
-struct optset {
-  char *os_name;
-  int os_type;
-  void *os_ptr;
-  int os_val;
-};
-
-_PROTOTYPE( void optset_parse, (struct optset *table, char *string)    );
-
-#endif /* _OPTSET_H */
index bc17de6be9872e79f7c60cb0b147aadf7c9f8cec..80f415bb743feac1886b9ad471851ea2837cc466 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for the Block Device Driver Test driver (blocktest)
 PROG=  blocktest
-SRCS=  blocktest.c optset.c
+SRCS=  blocktest.c
 
 DPADD+=        ${LIBSYS}
 LDADD+=        -lsys
index 05614976a26c2e9410730622e7537021e3cb1830..698e59bfe6ce48d18aa580c82d1a30bae4d22998 100644 (file)
@@ -6,6 +6,7 @@
 #include <minix/dmap.h>
 #include <minix/sysinfo.h>
 #include <minix/ds.h>
+#include <minix/optset.h>
 #include <sys/ioc_disk.h>
 #include <assert.h>
 
@@ -13,8 +14,6 @@
 #include "servers/avfs/const.h"
 #include "servers/avfs/dmap.h"
 
-#include "optset.h"
-
 enum {
        RESULT_OK,                      /* exactly as expected */
        RESULT_COMMFAIL,                /* communication failed */
diff --git a/test/blocktest/optset.h b/test/blocktest/optset.h
deleted file mode 100644 (file)
index 411d804..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef _OPTSET_H
-#define _OPTSET_H
-
-typedef enum {
-  OPT_BOOL,
-  OPT_STRING,
-  OPT_INT
-} opt_type;
-
-/* An entry for the parser of an options set. The 'os_name' field must point
- * to a string, which is treated case-insensitively; the last entry of a table
- * must have NULL name. The 'os_type' field must be set to one of the OPT_
- * values defined above. The 'os_ptr' field must point to the field that is to
- * receive the value of a recognized option. For OPT_STRING, it must point to a
- * string of a size set in 'os_val'; the resulting string may be truncated, but
- * will always be null-terminated. For OPT_BOOL, it must point to an int which
- * will be set to the value in 'os_val' if the option is present. For OPT_INT,
- * it must point to an int which will be set to the provided option value;
- * 'os_val' is then a base passed to strtol().
- */
-struct optset {
-  char *os_name;
-  opt_type os_type;
-  void *os_ptr;
-  int os_val;
-};
-
-_PROTOTYPE( void optset_parse, (struct optset *table, char *string)    );
-
-#endif /* _OPTSET_H */