projects
/
cascardo
/
rnetproxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
User GDBM instead of QDBM.
[cascardo/rnetproxy.git]
/
ppmanager.c
diff --git
a/ppmanager.c
b/ppmanager.c
index
4fdc08a
..
f67714b
100644
(file)
--- a/
ppmanager.c
+++ b/
ppmanager.c
@@
-21,7
+21,8
@@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <depot.h>
+#include <gdbm.h>
+#include <errno.h>
enum
{
enum
{
@@
-31,15
+32,17
@@
enum
};
void
};
void
-pp_d
plistkeys (DEPOT *dp
)
+pp_d
blistkeys (GDBM_FILE db
)
{
{
-
char *
key;
- d
piterinit (dp)
;
-
int ksz
;
- while (
(key = dpiternext (dp, &ksz)) != NULL && ksz > 0
)
+
datum
key;
+ d
atum oldkey
;
+
key = gdbm_firstkey (db)
;
+ while (
key.dptr != NULL
)
{
{
- printf ("%s\n", key);
- free (key);
+ printf ("%s\n", key.dptr);
+ oldkey = key;
+ key = gdbm_nextkey (db, oldkey);
+ free (oldkey.dptr);
}
}
}
}
@@
-54,17
+57,19
@@
usage (char *programname)
int
main (int argc, char **argv)
{
int
main (int argc, char **argv)
{
-
DEPOT *dp
;
+
GDBM_FILE db
;
int action;
int action;
- char *db;
+ char *db
_fn
;
char *username;
char *username;
+ datum key;
+ datum data;
int r = 0;
if (argc < 3)
usage (argv[0]);
if (!strcmp (argv[1], "deny"))
int r = 0;
if (argc < 3)
usage (argv[0]);
if (!strcmp (argv[1], "deny"))
- db = "/var/lib/popproxy/deny.db";
+ db
_fn
= "/var/lib/popproxy/deny.db";
else if (!strcmp (argv[1], "allow"))
else if (!strcmp (argv[1], "allow"))
- db = "/var/lib/popproxy/allow.db";
+ db
_fn
= "/var/lib/popproxy/allow.db";
else
usage (argv[0]);
if (!strcmp (argv[2], "add"))
else
usage (argv[0]);
if (!strcmp (argv[2], "add"))
@@
-77,9
+82,16
@@
main (int argc, char **argv)
usage (argv[0]);
if ((action == ACTION_ADD || action == ACTION_DEL) && argc < 4)
usage (argv[0]);
usage (argv[0]);
if ((action == ACTION_ADD || action == ACTION_DEL) && argc < 4)
usage (argv[0]);
- username = argv[3];
- dp = dpopen (db, DP_OWRITER | DP_OCREAT, 0);
- if (dp == NULL)
+ if (action != ACTION_LIST)
+ {
+ username = argv[3];
+ key.dptr = username;
+ key.dsize = strlen (username);
+ data.dptr = "";
+ data.dsize = 1;
+ }
+ db = gdbm_open (db_fn, 0, GDBM_WRCREAT, 0600, NULL);
+ if (db == NULL)
{
fprintf (stderr, "Could not create database.\n");
exit (1);
{
fprintf (stderr, "Could not create database.\n");
exit (1);
@@
-87,19
+99,19
@@
main (int argc, char **argv)
switch (action)
{
case ACTION_ADD:
switch (action)
{
case ACTION_ADD:
-
dpput (dp, username, -1, "", -1, DP_DOVER
);
+
r = gdbm_store (db, key, data, GDBM_REPLACE
);
break;
case ACTION_DEL:
break;
case ACTION_DEL:
-
dpout (dp, username, -1
);
+
r = gdbm_delete (db, key
);
break;
case ACTION_LIST:
break;
case ACTION_LIST:
- pp_d
plistkeys (dp
);
- r =
1
;
+ pp_d
blistkeys (db
);
+ r =
0
;
break;
default:
fprintf (stderr, "Action unrecognized.\n");
r = 1;
}
break;
default:
fprintf (stderr, "Action unrecognized.\n");
r = 1;
}
-
dpclose (dp
);
+
gdbm_close (db
);
return r;
}
return r;
}