extract generation time of packages file
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#include <library.h>
|
#include <library.h>
|
||||||
#include <utils/debug.h>
|
#include <utils/debug.h>
|
||||||
@@ -84,6 +85,42 @@ static void usage(void)
|
|||||||
"ipsec pacman --file <filename> --package <name>\n");
|
"ipsec pacman --file <filename> --package <name>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract the time the package file was generated
|
||||||
|
*/
|
||||||
|
static time_t extract_time(char *line)
|
||||||
|
{
|
||||||
|
struct tm t;
|
||||||
|
char wday[4], mon[4];
|
||||||
|
char* months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (sscanf(line, "Generated: %3s %3s %2d %2d:%2d:%2d %4d UTC", wday, mon,
|
||||||
|
&t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec, &t.tm_year) != 7)
|
||||||
|
{
|
||||||
|
return UNDEFINED_TIME;
|
||||||
|
}
|
||||||
|
t.tm_isdst = 0;
|
||||||
|
t.tm_year -= 1900;
|
||||||
|
t.tm_mon = 12;
|
||||||
|
|
||||||
|
for (i = 0; i < countof(months); i++)
|
||||||
|
{
|
||||||
|
if (streq(mon, months[i]))
|
||||||
|
{
|
||||||
|
t.tm_mon = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (t.tm_mon == 12)
|
||||||
|
{
|
||||||
|
return UNDEFINED_TIME;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mktime(&t) - timezone;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process a package file and store updates in the database
|
* Process a package file and store updates in the database
|
||||||
*/
|
*/
|
||||||
@@ -102,7 +139,7 @@ static void process_packages(char *filename, char *product, bool update)
|
|||||||
file = fopen(filename, "r");
|
file = fopen(filename, "r");
|
||||||
if (!file)
|
if (!file)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "could not open \"%s\"", filename);
|
fprintf(stderr, "could not open \"%s\"\n", filename);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,12 +189,26 @@ static void process_packages(char *filename, char *product, bool update)
|
|||||||
bool security, update_version = TRUE;
|
bool security, update_version = TRUE;
|
||||||
int current_security;
|
int current_security;
|
||||||
u_int32_t gid = 0, vid = 0;
|
u_int32_t gid = 0, vid = 0;
|
||||||
|
time_t generation_time;
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
if (count == 1 || count == 3)
|
if (count == 1)
|
||||||
{
|
{
|
||||||
printf("%s", line);
|
printf("%s", line);
|
||||||
}
|
}
|
||||||
|
if (count == 3)
|
||||||
|
{
|
||||||
|
generation_time = extract_time(line);
|
||||||
|
|
||||||
|
if (generation_time == UNDEFINED_TIME)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "could not extract generation time\n");
|
||||||
|
fclose(file);
|
||||||
|
db->destroy(db);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
printf("Generated: %T\n", &generation_time, TRUE);
|
||||||
|
}
|
||||||
if (count < 7)
|
if (count < 7)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user