139 lines
3.3 KiB
Diff
139 lines
3.3 KiB
Diff
|
--- testdbm.c
|
||
|
+++ testdbm.c
|
||
|
@@ -31,6 +31,9 @@
|
||
|
#include "autoconf.h"
|
||
|
|
||
|
#include <stdio.h>
|
||
|
+#if HAVE_STRING_H
|
||
|
+#include <string.h>
|
||
|
+#endif
|
||
|
#include <sys/types.h>
|
||
|
#if HAVE_STDLIB_H
|
||
|
#include <stdlib.h>
|
||
|
@@ -39,19 +42,15 @@
|
||
|
#include <sys/file.h>
|
||
|
#endif
|
||
|
#include <sys/stat.h>
|
||
|
+#ifdef GNU
|
||
|
+#include "dbm.h"
|
||
|
+#else
|
||
|
+#include <dbm.h>
|
||
|
+#endif
|
||
|
|
||
|
#define TRUE 1
|
||
|
#define FALSE 0
|
||
|
|
||
|
-typedef struct {
|
||
|
- char *dptr;
|
||
|
- int dsize;
|
||
|
-} datum;
|
||
|
-
|
||
|
-extern datum fetch ();
|
||
|
-extern datum firstkey ();
|
||
|
-extern datum nextkey ();
|
||
|
-
|
||
|
/* The test program allows one to call all the routines plus the hash function.
|
||
|
The commands are single letter commands. The user is prompted for all other
|
||
|
information. The commands are q (quit), f (fetch), s (store), d (delete),
|
||
|
@@ -123,7 +122,7 @@
|
||
|
|
||
|
case 'f':
|
||
|
printf ("key -> ");
|
||
|
- gets (key_line);
|
||
|
+ fgets (key_line, sizeof(key_line), stdin);
|
||
|
key_data.dptr = key_line;
|
||
|
key_data.dsize = strlen (key_line)+1;
|
||
|
return_data = fetch (key_data);
|
||
|
@@ -135,11 +134,11 @@
|
||
|
|
||
|
case 's':
|
||
|
printf ("key -> ");
|
||
|
- gets (key_line);
|
||
|
+ fgets (key_line, sizeof(key_line), stdin);
|
||
|
key_data.dptr = key_line;
|
||
|
key_data.dsize = strlen (key_line)+1;
|
||
|
printf ("data -> ");
|
||
|
- gets (data_line);
|
||
|
+ fgets (data_line, sizeof(data_line), stdin);
|
||
|
data_data.dsize = strlen (data_line)+1;
|
||
|
if (store (key_data, data_data) != 0)
|
||
|
printf ("Item not inserted. \n");
|
||
|
@@ -148,7 +147,7 @@
|
||
|
|
||
|
case 'd':
|
||
|
printf ("key -> ");
|
||
|
- gets (key_line);
|
||
|
+ fgets (key_line, sizeof(key_line), stdin);
|
||
|
key_data.dptr = key_line;
|
||
|
key_data.dsize = strlen (key_line)+1;
|
||
|
if (delete (key_data) != 0)
|
||
|
--- testgdbm.c
|
||
|
+++ testgdbm.c
|
||
|
@@ -37,10 +37,22 @@
|
||
|
|
||
|
#include "getopt.h"
|
||
|
|
||
|
+#if defined(__GNUC__) && __GNUC__ >=3
|
||
|
+# define NORETURN __attribute__((__noreturn__))
|
||
|
+#else
|
||
|
+# define NORETURN
|
||
|
+#endif
|
||
|
+
|
||
|
extern const char * gdbm_version;
|
||
|
|
||
|
extern const char *gdbm_strerror __P((gdbm_error));
|
||
|
|
||
|
+void print_bucket __P((hash_bucket *bucket, char *mesg));
|
||
|
+void _gdbm_print_avail_list __P((gdbm_file_info *dbf));
|
||
|
+void _gdbm_print_bucket_cache __P((gdbm_file_info *dbf));
|
||
|
+void usage __P((char *)) NORETURN;
|
||
|
+
|
||
|
+
|
||
|
gdbm_file_info *gdbm_file;
|
||
|
|
||
|
/* Debug procedure to print the contents of the current hash bucket. */
|
||
|
--- testndbm.c
|
||
|
+++ testndbm.c
|
||
|
@@ -42,6 +42,9 @@
|
||
|
#if HAVE_FCNTL_H
|
||
|
#include <fcntl.h>
|
||
|
#endif
|
||
|
+#if HAVE_STRING_H
|
||
|
+#include <string.h>
|
||
|
+#endif
|
||
|
#ifdef GNU
|
||
|
#include "ndbm.h"
|
||
|
#else
|
||
|
@@ -120,7 +123,7 @@
|
||
|
|
||
|
case 'f':
|
||
|
printf ("key -> ");
|
||
|
- gets (key_line);
|
||
|
+ fgets (key_line, sizeof(key_line), stdin);
|
||
|
key_data.dptr = key_line;
|
||
|
key_data.dsize = strlen (key_line)+1;
|
||
|
return_data = dbm_fetch (dbm_file, key_data);
|
||
|
@@ -132,11 +135,11 @@
|
||
|
|
||
|
case 's':
|
||
|
printf ("key -> ");
|
||
|
- gets (key_line);
|
||
|
+ fgets (key_line, sizeof(key_line), stdin);
|
||
|
key_data.dptr = key_line;
|
||
|
key_data.dsize = strlen (key_line)+1;
|
||
|
printf ("data -> ");
|
||
|
- gets (data_line);
|
||
|
+ fgets (data_line, sizeof(data_line), stdin);
|
||
|
data_data.dsize = strlen (data_line)+1;
|
||
|
if (dbm_store (dbm_file, key_data, data_data, DBM_REPLACE) != 0)
|
||
|
printf ("Item not inserted. \n");
|
||
|
@@ -145,7 +148,7 @@
|
||
|
|
||
|
case 'd':
|
||
|
printf ("key -> ");
|
||
|
- gets (key_line);
|
||
|
+ fgets (key_line, sizeof(key_line), stdin);
|
||
|
key_data.dptr = key_line;
|
||
|
key_data.dsize = strlen (key_line)+1;
|
||
|
if (dbm_delete (dbm_file, key_data) != 0)
|