00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #include "libts.h"
00025 
00026 AppVersionInfo::AppVersionInfo()
00027 {
00028   defined = 0;
00029   ink_strlcpy(PkgStr, "?", sizeof(PkgStr));
00030   ink_strlcpy(AppStr, "?", sizeof(AppStr));
00031   ink_strlcpy(VersionStr, "?", sizeof(VersionStr));
00032   ink_strlcpy(BldNumStr, "?", sizeof(BldNumStr));
00033   ink_strlcpy(BldTimeStr, "?", sizeof(BldTimeStr));
00034   ink_strlcpy(BldDateStr, "?", sizeof(BldDateStr));
00035   ink_strlcpy(BldMachineStr, "?", sizeof(BldMachineStr));
00036   ink_strlcpy(BldPersonStr, "?", sizeof(BldPersonStr));
00037   ink_strlcpy(BldCompileFlagsStr, "?", sizeof(BldCompileFlagsStr));
00038   ink_strlcpy(FullVersionInfoStr, "?", sizeof(FullVersionInfoStr));
00039   
00040 }
00041 
00042 
00043 void
00044 AppVersionInfo::setup(const char *pkg_name, const char *app_name, const char *app_version,
00045                       const char *build_date, const char *build_time, const char *build_machine,
00046                       const char *build_person, const char *build_cflags)
00047 {
00048   char month_name[8];
00049   int year, month, day, hour, minute, second;
00050 
00051   static const char *months[] = {
00052     "Jan", "Feb", "Mar", "Apr", "May", "Jun",
00053     "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "???"
00054   };
00055 
00056   
00057   sscanf(build_time, "%d:%d:%d", &hour, &minute, &second);
00058   
00059   sscanf(build_date, "%3s %d %d", month_name, &day, &year);
00060 
00061   for (month = 0; month < 11; month++) {
00062     if (strcasecmp(months[month], month_name) == 0)
00063       break;
00064   }
00065 
00066 
00067   
00068 
00069   ink_strlcpy(PkgStr, pkg_name, sizeof(PkgStr));
00070   ink_strlcpy(AppStr, app_name, sizeof(AppStr));
00071   snprintf(VersionStr, sizeof(VersionStr), "%s", app_version);
00072 
00073   
00074   if (strlen(BUILD_NUMBER) == 0) {
00075     snprintf(BldNumStr, sizeof(BldNumStr), "%d%d%d", month, day, hour);
00076   } else {
00077     snprintf(BldNumStr, sizeof(BldNumStr), "%s", BUILD_NUMBER);
00078   }
00079 
00080   snprintf(BldTimeStr, sizeof(BldTimeStr), "%s", build_time);
00081   snprintf(BldDateStr, sizeof(BldDateStr), "%s", build_date);
00082   snprintf(BldMachineStr, sizeof(BldMachineStr), "%s", build_machine);
00083   snprintf(BldPersonStr, sizeof(BldPersonStr), "%s", build_person);
00084   snprintf(BldCompileFlagsStr, sizeof(BldCompileFlagsStr), "%s", build_cflags);
00085 
00086 
00087   
00088 
00089   if (PkgStr[0] == '\0')
00090     ink_strlcpy(PkgStr, "?", sizeof(PkgStr));
00091   if (AppStr[0] == '\0')
00092     ink_strlcpy(AppStr, "?", sizeof(AppStr));
00093   if (VersionStr[0] == '\0')
00094     ink_strlcpy(VersionStr, "?", sizeof(VersionStr));
00095   if (BldNumStr[0] == '\0')
00096     ink_strlcpy(BldNumStr, "?", sizeof(BldNumStr));
00097   if (BldTimeStr[0] == '\0')
00098     ink_strlcpy(BldTimeStr, "?", sizeof(BldTimeStr));
00099   if (BldDateStr[0] == '\0')
00100     ink_strlcpy(BldDateStr, "?", sizeof(BldDateStr));
00101   if (BldMachineStr[0] == '\0')
00102     ink_strlcpy(BldMachineStr, "?", sizeof(BldMachineStr));
00103   if (BldPersonStr[0] == '\0')
00104     ink_strlcpy(BldPersonStr, "?", sizeof(BldPersonStr));
00105   if (BldCompileFlagsStr[0] == '\0')
00106     ink_strlcpy(BldCompileFlagsStr, "?", sizeof(BldCompileFlagsStr));
00107   if (FullVersionInfoStr[0] == '\0')
00108     ink_strlcpy(FullVersionInfoStr, "?", sizeof(FullVersionInfoStr));
00109 
00110   snprintf(FullVersionInfoStr, sizeof(FullVersionInfoStr),
00111            "%s - %s - %s - (build # %s on %s at %s)",
00112            PkgStr, AppStr, VersionStr, BldNumStr, BldDateStr, BldTimeStr);
00113 
00114   defined = 1;
00115 }