Fixed bug of null being passed to printf for %s

This commit is contained in:
Marty Kraimer
1997-06-25 18:34:23 +00:00
parent f230abdb8e
commit 71617fdcf7
+23 -8
View File
@@ -222,6 +222,14 @@ void dbDumpRecDes(DBBASE *pdbbase,char *recordTypeName)
{dbDumpRecordType(pdbbase,recordTypeName);}
/* internal routines*/
static int fcloseNotSTD(FILE *stream)
{
if(stream!=stdin && stream!=stdout && stream!=stderr) {
return(fclose(stream));
}
return(0);
}
static char *pNullString = "";
long setLinkType(DBENTRY *pdbentry)
{
@@ -788,7 +796,7 @@ long dbWriteRecord(DBBASE *ppdbbase,const char *filename,
return(-1);
}
dbWriteRecordFP(ppdbbase,outFile,precordTypename,level);
return(fclose(outFile));
return(fcloseNotSTD(outFile));
}
long dbWriteRecordFP(DBBASE *pdbbase,FILE *fp,char *precordTypename,int level)
@@ -826,8 +834,15 @@ long dbWriteRecordFP(DBBASE *pdbbase,FILE *fp,char *precordTypename,int level)
status = dbFirstField(pdbentry,dctonly);
while(!status) {
if(!dbIsDefaultValue(pdbentry) || level>0) {
fprintf(fp,"\tfield(%s,\"%s\")\n",
dbGetFieldName(pdbentry),dbGetString(pdbentry));
char *pvalstring = dbGetString(pdbentry);
if(!pvalstring) {
fprintf(fp,"\tfield(%s,\"\")\n",
dbGetFieldName(pdbentry));
} else {
fprintf(fp,"\tfield(%s,\"%s\")\n",
dbGetFieldName(pdbentry),dbGetString(pdbentry));
}
} else if(level>0) { /*generate 0 length string*/
fprintf(fp,"\tfield(%s,\"\")\n",dbGetFieldName(pdbentry));
}
@@ -853,7 +868,7 @@ long dbWriteMenu(DBBASE *ppdbbase,const char *filename,char *menuName)
return(-1);
}
dbWriteMenuFP(ppdbbase,outFile,menuName);
if(fclose(outFile)) {
if(fcloseNotSTD(outFile)) {
errPrintf(0,__FILE__,__LINE__,"Error closing %s\n",filename);
}
return(0);
@@ -900,7 +915,7 @@ long dbWriteRecordType(DBBASE *pdbbase,const char *filename,char *recordTypeName
return(-1);
}
dbWriteRecordTypeFP(pdbbase,outFile,recordTypeName);
if(fclose(outFile)) {
if(fcloseNotSTD(outFile)) {
errPrintf(0,__FILE__,__LINE__,"Error closing %s\n",filename);
}
return(0);
@@ -1000,7 +1015,7 @@ long dbWriteDevice(DBBASE *pdbbase,const char *filename)
return(-1);
}
dbWriteDeviceFP(pdbbase,outFile);
if(fclose(outFile)) {
if(fcloseNotSTD(outFile)) {
errPrintf(0,__FILE__,__LINE__,"Error closing %s\n",filename);
}
return(0);
@@ -1047,7 +1062,7 @@ long dbWriteDriver(DBBASE *pdbbase,const char *filename)
return(-1);
}
dbWriteDriverFP(pdbbase,outFile);
if(fclose(outFile)) {
if(fcloseNotSTD(outFile)) {
errPrintf(0,__FILE__,__LINE__,"Error closing %s\n",filename);
}
return(0);
@@ -1078,7 +1093,7 @@ long dbWriteBreaktable(DBBASE *pdbbase,const char *filename)
return(-1);
}
dbWriteBreaktableFP(pdbbase,outFile);
if(fclose(outFile)) {
if(fcloseNotSTD(outFile)) {
errPrintf(0,__FILE__,__LINE__,"Error closing %s\n",filename);
}
return(0);