3 /* Copyright (C) 2009 Trend Micro Inc.
6 * This program is a free software; you can redistribute it
7 * and/or modify it under the terms of the GNU General Public
8 * License (version 3) as published by the FSF - Free Software
15 #include "cdb/cdb_make.h"
20 #include "lists_make.h"
22 void Lists_OP_MakeAll(int force)
24 ListNode *lnode = OS_GetFirstList();
27 Lists_OP_MakeCDB(lnode->txt_filename,
34 void Lists_OP_MakeCDB(char *txt_filename, char *cdb_filename, int force)
45 char str[OS_MAXSTR+1];
48 char tmp_filename[OS_MAXSTR];
49 tmp_filename[OS_MAXSTR - 2] = '\0';
50 snprintf(tmp_filename, OS_MAXSTR - 2, "%s.tmp", txt_filename);
53 if((stat(txt_filename, &txt_stat)) == -1)
54 debug1("%s: stat of file %s failed", ARGV0, txt_filename);
55 if((stat(cdb_filename, &cdb_stat)) == -1)
56 debug1("%s: stat of file %s failed", ARGV0, cdb_filename);
58 if(File_DateofChange(txt_filename) > File_DateofChange(cdb_filename) ||
61 printf(" * File %s need to be updated\n", cdb_filename);
62 tmp_fd = fopen(tmp_filename, "w+");
63 cdb_make_start(&cdbm, tmp_fd);
64 if(!(txt_fd = fopen(txt_filename, "r")))
66 merror(FOPEN_ERROR, ARGV0, txt_filename);
69 while((fgets(str, OS_MAXSTR-1,txt_fd)) != NULL)
71 /* Removing new lines or carriage returns. */
72 tmp_str = strchr(str, '\r');
75 tmp_str = strchr(str, '\n');
78 if((val = strchr(str, ':')))
88 cdb_make_add(&cdbm, key, strlen(key), val, strlen(val));
89 if(force) print_out(" * adding - key: %s value: %s",key,val);
91 cdb_make_finish(&cdbm);
92 rename(tmp_filename,cdb_filename);
96 printf(" * File %s does not need to be compiled\n", cdb_filename);