More Cisco stuff
FossilOrigin-Name: f5d524e032376c67bfe637ce08b701e55e4be62ac7ee960b0daacda910cf1d2f
This commit is contained in:
@ -131,6 +131,7 @@ KTVSRC=\
|
||||
cw_ktv_write_struct.c\
|
||||
cw_ktv_std_types.c\
|
||||
cw_ktv_base_exists.c\
|
||||
cw_ktv_save.c\
|
||||
|
||||
|
||||
LWSRC=\
|
||||
|
@ -0,0 +1,58 @@
|
||||
|
||||
#include "ktv.h"
|
||||
|
||||
|
||||
static int write_str(FILE *outfile,const char *str)
|
||||
{
|
||||
if ( (strchr(str,'\\')!=NULL) || (strchr(str,'"')!=NULL) || (strchr(str,'\n')!=NULL)){
|
||||
fprintf(outfile,"\"");
|
||||
|
||||
while (*str != 0){
|
||||
switch(*str){
|
||||
case '\n':
|
||||
fprintf(outfile,"\\n");
|
||||
break;
|
||||
case '\\':
|
||||
fprintf(outfile,"\\\\");
|
||||
break;
|
||||
case '"':
|
||||
fprintf(outfile,"\\\"");
|
||||
break;
|
||||
default:
|
||||
fprintf(outfile,"%c",*str);
|
||||
break;
|
||||
}
|
||||
str++;
|
||||
}
|
||||
|
||||
fprintf(outfile,"\"");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fprintf(outfile,"%s",str);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int cw_ktv_save(mavl_t ktvstore, const char * filename){
|
||||
mavliter_t it;
|
||||
FILE * outfile;
|
||||
|
||||
outfile = fopen(filename,"w");
|
||||
if (outfile == NULL)
|
||||
return 0;
|
||||
|
||||
mavliter_init(&it,ktvstore);
|
||||
mavliter_foreach(&it){
|
||||
cw_KTV_t * val;
|
||||
char buf[4000];
|
||||
val = mavliter_get(&it);
|
||||
val->type->to_str(val,buf,4000);
|
||||
write_str(outfile,val->key);
|
||||
fprintf(outfile," :%s: ",val->type->name);
|
||||
write_str(outfile,buf);
|
||||
fprintf(outfile,"\n");
|
||||
|
||||
}
|
||||
fclose(outfile);
|
||||
return 1;
|
||||
}
|
@ -172,7 +172,8 @@ char * cw_ktv_get_str(mavl_t ktv,const char *key, char * def);
|
||||
|
||||
int cw_ktv_idx_get(mavl_t ktv, const char *key);
|
||||
cw_KTV_t * cw_ktv_base_exists(mavl_t ktvstore, const char *basekey);
|
||||
|
||||
int cw_ktv_save(mavl_t ktvstore, const char * filename);
|
||||
|
||||
extern const cw_Type_t * cw_ktv_std_types[];
|
||||
#define CW_KTV_STD_TYPES cw_ktv_std_types
|
||||
|
||||
|
Reference in New Issue
Block a user