1 /* Copyright (C) 2009 Trend Micro Inc.
4 * This program is a free software; you can redistribute it
5 * and/or modify it under the terms of the GNU General Public
6 * License (version 3) as published by the FSF - Free Software
13 #include "cdb/cdb_make.h"
18 #include "lists_make.h"
21 void Lists_OP_MakeAll(int force)
23 ListNode *lnode = OS_GetFirstList();
25 Lists_OP_MakeCDB(lnode->txt_filename,
32 void Lists_OP_MakeCDB(const char *txt_filename, const char *cdb_filename, int force)
39 char str[OS_MAXSTR + 1];
41 str[OS_MAXSTR] = '\0';
42 char tmp_filename[OS_MAXSTR];
43 tmp_filename[OS_MAXSTR - 2] = '\0';
44 snprintf(tmp_filename, OS_MAXSTR - 2, "%s.tmp", txt_filename);
46 if (File_DateofChange(txt_filename) > File_DateofChange(cdb_filename) ||
48 printf(" * File %s needs to be updated\n", cdb_filename);
49 tmp_fd = fopen(tmp_filename, "w+");
50 cdb_make_start(&cdbm, tmp_fd);
51 if (!(txt_fd = fopen(txt_filename, "r"))) {
52 merror(FOPEN_ERROR, ARGV0, txt_filename, errno, strerror(errno));
55 while ((fgets(str, OS_MAXSTR - 1, txt_fd)) != NULL) {
56 /* Remove newlines and carriage returns */
57 tmp_str = strchr(str, '\r');
61 tmp_str = strchr(str, '\n');
65 if ((val = strchr(str, ':'))) {
72 cdb_make_add(&cdbm, key, strlen(key), val, strlen(val));
74 print_out(" * adding - key: %s value: %s", key, val);
80 cdb_make_finish(&cdbm);
81 if (rename(tmp_filename, cdb_filename) == -1) {
82 merror(RENAME_ERROR, ARGV0, tmp_filename, cdb_filename, errno, strerror(errno));
86 printf(" * File %s does not need to be compiled\n", cdb_filename);