9beec9aceb
to use snprintf while here.
115 lines
3.2 KiB
Text
115 lines
3.2 KiB
Text
$NetBSD: patch-ad,v 1.1 2006/03/14 02:21:46 joerg Exp $
|
|
|
|
--- hashf.c.orig 2006-03-14 02:10:26.000000000 +0000
|
|
+++ hashf.c
|
|
@@ -33,6 +33,7 @@ SOFTWARE.
|
|
|
|
|
|
#include <sys/types.h>
|
|
+#include <limits.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifndef USE_BFUNCS
|
|
@@ -168,10 +169,14 @@ hashf_Exists(hashtable, hashcode, compar
|
|
hash_datum *key;
|
|
{
|
|
FILE *fp;
|
|
+#if defined(NAME_MAX)
|
|
+ char name[NAME_MAX],buf[MAXELEMENTLEN];
|
|
+#else
|
|
char name[MAXNAMLEN],buf[MAXELEMENTLEN];
|
|
+#endif
|
|
int len,rc;
|
|
|
|
- sprintf(name,"%s/%X",hashtable->dirname,hashcode % hashtable->size);
|
|
+ snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode % hashtable->size);
|
|
fp=fopen(name,"r");
|
|
if(!fp)
|
|
return FALSE;
|
|
@@ -215,10 +220,14 @@ hashf_Insert(hashtable, hashcode, compar
|
|
unsigned long elen;
|
|
{
|
|
FILE *fp;
|
|
+#if defined(NAME_MAX)
|
|
+ char name[NAME_MAX],buf[MAXELEMENTLEN];
|
|
+#else
|
|
char name[MAXNAMLEN],buf[MAXELEMENTLEN];
|
|
+#endif
|
|
int rc,len;
|
|
hashcode %= hashtable->size;
|
|
- sprintf(name,"%s/%X",hashtable->dirname,hashcode);
|
|
+ snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode);
|
|
|
|
fp=fopen(name,"a+");
|
|
if(!fp)
|
|
@@ -265,10 +274,14 @@ hashf_Delete(hashtable, hashcode, compar
|
|
hash_datum *key;
|
|
{
|
|
FILE *fp,*tmp;
|
|
+#if defined(NAME_MAX)
|
|
+ char name[NAME_MAX],buf[MAXELEMENTLEN];
|
|
+#else
|
|
char name[MAXNAMLEN],buf[MAXELEMENTLEN];
|
|
+#endif
|
|
int rc,len;
|
|
hashcode %= hashtable->size;
|
|
- sprintf(name,"%s/%X",hashtable->dirname,hashcode);
|
|
+ snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode);
|
|
|
|
fp=fopen(name,"r");
|
|
if(!fp)
|
|
@@ -331,10 +344,14 @@ hashf_Replace(hashtable, hashcode, compa
|
|
unsigned long elen;
|
|
{
|
|
FILE *fp,*tmp;
|
|
+#if defined(NAME_MAX)
|
|
+ char name[NAME_MAX],buf[MAXELEMENTLEN];
|
|
+#else
|
|
char name[MAXNAMLEN],buf[MAXELEMENTLEN];
|
|
+#endif
|
|
int rc,len;
|
|
char write,done;
|
|
- sprintf(name,"%s/%X",hashtable->dirname,hashcode % hashtable->size);
|
|
+ snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode % hashtable->size);
|
|
|
|
fp=fopen(name,"r");
|
|
if(!fp)
|
|
@@ -432,11 +449,15 @@ hashf_Lookup(hashtable, hashcode, compar
|
|
int *length;
|
|
{
|
|
FILE *fp;
|
|
- char name[MAXNAMLEN],buf[MAXELEMENTLEN];
|
|
+#if defined(NAME_MAX)
|
|
+ char name[NAME_MAX],buf[MAXELEMENTLEN];
|
|
+#else
|
|
+ char name[MAXNAMLEN],buf[MAXELEMENTLEN];
|
|
+#endif
|
|
int len,rc;
|
|
hash_datum *p;
|
|
|
|
- sprintf(name,"%s/%X",hashtable->dirname,hashcode % hashtable->size);
|
|
+ snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode % hashtable->size);
|
|
fp=fopen(name,"r");
|
|
if(!fp)
|
|
return NULL;
|
|
@@ -479,7 +500,11 @@ hashf_NextEntry(hashtable,length)
|
|
int *length;
|
|
{
|
|
unsigned long len;
|
|
+#if defined(NAME_MAX)
|
|
+ char name[NAME_MAX];
|
|
+#else
|
|
char name[MAXNAMLEN];
|
|
+#endif
|
|
int rc;
|
|
hash_datum *p;
|
|
struct dirent *direntry;
|
|
@@ -494,7 +519,7 @@ hashf_NextEntry(hashtable,length)
|
|
}while(direntry->d_name[0]=='.');
|
|
if(hashtable->next)
|
|
fclose(hashtable->next);
|
|
- sprintf(name,"%s/%s",hashtable->dirname,direntry->d_name);
|
|
+ snprintf(name,sizeof(name),"%s/%s",hashtable->dirname,direntry->d_name);
|
|
hashtable->next=fopen(name,"r");
|
|
rc=fread(&len,4,1,hashtable->next);
|
|
if(rc==0)
|