diff -u -r --new-file radius-980618/radius-1.16-ascend/ascendd/Makefile radius-980618.gdbm/radius-1.16-ascend/ascendd/Makefile --- radius-980618/radius-1.16-ascend/ascendd/Makefile Thu Jun 18 20:31:43 1998 +++ radius-980618.gdbm/radius-1.16-ascend/ascendd/Makefile Wed Jan 12 22:36:06 2000 @@ -155,7 +155,7 @@ #LIBS= -lcrypt $(AUTH_LIBS) # use this for FreeBSD # use this for SunOs. Linux, BSDI, FreeBSD -DBMLIBS= -ldbm +DBMLIBS= -lgdbm # use this for Solaris #DBMLIBS= diff -u -r --new-file radius-980618/radius-1.16-ascend/ascendd/builddbm.c radius-980618.gdbm/radius-1.16-ascend/ascendd/builddbm.c --- radius-980618/radius-1.16-ascend/ascendd/builddbm.c Tue Jun 2 01:32:29 1998 +++ radius-980618.gdbm/radius-1.16-ascend/ascendd/builddbm.c Wed Jan 12 22:36:23 2000 @@ -37,9 +37,9 @@ # include # include # include -# include +# include #else -# include +# include #endif /* SOLARIS */ #include @@ -70,6 +70,8 @@ int verbose; extern int warning; +GDBM_FILE dbf; + #if !defined(FALSE) # define FALSE 0 # define TRUE 1 @@ -125,24 +127,26 @@ break; } } - - sprintf(pagfile, "%s/%s.pag", radius_dir, radius_users); +/* + sprintf(pagfile, "%s/%s.gdbm.pag", radius_dir, radius_users); if((fd = open(pagfile, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0) { fprintf(errf, "%s: Couldn't open %s for writing\n", progname, pagfile); exit(-1); } close(fd); - sprintf(dirfile, "%s/%s.dir", radius_dir, radius_users); + sprintf(dirfile, "%s/%s.gdbm.dir", radius_dir, radius_users); if((fd = open(dirfile, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0) { fprintf(errf, "%s: Couldn't open %s for writing\n", progname, dirfile); exit(-1); } close(fd); - sprintf(dbmname, "%s/%s", radius_dir, radius_users); - if(dbminit(dbmname) != 0) { - fprintf(errf, "%s: Couldn't dbminit(%s)\n", progname, dbmname); +*/ + sprintf(dbmname, "%s/%s.gdbm", radius_dir, radius_users); + if((dbf=gdbm_open(dbmname,512,GDBM_NEWDB|GDBM_FAST,0600,0)) == NULL) { + fprintf(errf, "%s: Couldn't gdbm_open(%s)\n", progname, dbmname); + perror("gdbm_open"); exit(-1); } @@ -155,7 +159,7 @@ } named.dptr = name; named.dsize = strlen(name)+1; - contentd = fetch(named); + contentd = gdbm_fetch(dbf,named); if(contentd.dsize != 0) { /* name found */ warn("Skipping duplicate record\n\tfor user '%s'", name); continue; @@ -164,7 +168,7 @@ named.dsize = strlen(name)+1; contentd.dptr = content; contentd.dsize = strlen(content)+1; - if(store(named, contentd) != 0) { + if(gdbm_store(dbf,named, contentd,GDBM_INSERT) != 0) { fprintf(errf, "%s: Couldn't store datum for %s\n", progname, name); exit(-1); diff -u -r --new-file radius-980618/radius-1.16-ascend/ascendd/users.c radius-980618.gdbm/radius-1.16-ascend/ascendd/users.c --- radius-980618/radius-1.16-ascend/ascendd/users.c Thu Jun 18 21:27:37 1998 +++ radius-980618.gdbm/radius-1.16-ascend/ascendd/users.c Wed Jan 12 22:36:41 2000 @@ -50,8 +50,9 @@ # if defined(SOLARIS) # include # else -# include +# include # endif /* SOLARIS */ +GDBM_FILE udbh; #endif /* DBM_MODE */ #include "radius.h" @@ -98,8 +99,16 @@ char *infoname; { #if defined(DBM_MODE) + + char buf[512]; + + strncpy(buf,infoname,512); + strncat(buf,".gdbm",512-strlen(buf)); + if ((udbh=gdbm_open(buf,0,GDBM_READER,700,0))==NULL) { + return(1); + } (void)userfp_p; - return dbminit(infoname); + return(0); #else *userfp_p = fopen(infoname, "r"); return *userfp_p == (FILE *)NULL; @@ -122,7 +131,7 @@ { #if defined(DBM_MODE) (void)userfp; - dbmclose(); + dbmclose(udbh); #else DEBUG("userinfo_close: fclosing fp=%p\n", userfp ); fclose(userfp); @@ -219,7 +228,7 @@ #ifdef DBM_MODE named.dptr = name; named.dsize = strlen(name)+1; - contentd = fetch(named); + contentd = gdbm_fetch(udbh,named); if(contentd.dsize != 0) { /* name found */ *user_data = contentd.dptr; userinfo_close(userfp); @@ -228,7 +237,7 @@ named.dptr = "DEFAULT"; named.dsize = sizeof("DEFAULT"); - contentd = fetch(named); + contentd = gdbm_fetch(udbh,named); if(contentd.dsize != 0) { /* DEFAULT found */ *user_data = contentd.dptr; userinfo_close(userfp);