Boolean Process::getCreationDate (CIMDateTime & d) const { long status, dst_desc[2]; char cimtime[80] = ""; char log_string[] = "SYS$TIMEZONE_DAYLIGHT_SAVING"; char libdst; unsigned __int64 bintime = 0; unsigned short int timbuf[7]; unsigned long libop, libdayweek, libdayear; unsigned int retlen; struct tm timetm; struct tm *ptimetm = &timetm; static $DESCRIPTOR (lnm_tbl, "LNM$SYSTEM"); struct { unsigned short wLength; unsigned short wCode; void *pBuffer; unsigned int *pRetLen; int term; } item_list; bintime = pInfo->p_stime; libop = LIB$K_DAY_OF_WEEK; status = lib$cvt_from_internal_time (&libop, &libdayweek, &bintime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } libop = LIB$K_DAY_OF_YEAR; status = lib$cvt_from_internal_time (&libop, &libdayear, &bintime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } dst_desc[0] = strlen (log_string); dst_desc[1] = (long) log_string; item_list.wLength = 1; item_list.wCode = LNM$_STRING; item_list.pBuffer = &libdst; item_list.pRetLen = &retlen; item_list.term = 0; status = sys$trnlnm (0, &lnm_tbl, &dst_desc, 0, &item_list); if (!$VMS_STATUS_SUCCESS (status)) { return false; } status = sys$numtim (timbuf, &bintime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } timetm.tm_sec = timbuf[5]; timetm.tm_min = timbuf[4]; timetm.tm_hour = timbuf[3]; timetm.tm_mday = timbuf[2]; timetm.tm_mon = timbuf[1] - 1; timetm.tm_year = timbuf[0] - 1900; timetm.tm_wday = libdayweek - 1; timetm.tm_yday = libdayear - 1; timetm.tm_isdst = 0; if (libdst != 48) { timetm.tm_isdst = 1; } timetm.tm_gmtoff = -18000; timetm.tm_zone = "EST"; if (convertToCIMDateString (ptimetm, cimtime) != -1) { d = CIMDateTime (cimtime); return true; } return false; }
Boolean Process::getCreationDate (CIMDateTime & d) const { long status; long dst_desc[2]; char cimtime[80] = ""; char log_string[] = "SYS$TIMEZONE_DAYLIGHT_SAVING"; char libdst; unsigned __int64 bintime = 0; unsigned short int timbuf[7]; unsigned long libop; unsigned long libdayweek; unsigned long libdayear; unsigned int retlen; struct tm timetm; struct tm *ptimetm = &timetm; // Added to get system uptime for SWAPPER process - PTR 73-51-29 long item = SYI$_BOOTTIME; char t_string[24] = ""; unsigned __int64 val = 0; struct dsc$descriptor_s sysinfo; sysinfo.dsc$b_dtype = DSC$K_DTYPE_T; sysinfo.dsc$b_class = DSC$K_CLASS_S; sysinfo.dsc$w_length = sizeof (t_string); sysinfo.dsc$a_pointer = t_string; static $DESCRIPTOR (lnm_tbl, "LNM$SYSTEM"); struct { unsigned short wLength; unsigned short wCode; void *pBuffer; unsigned int *pRetLen; int term; } dst_item_list; bintime = pInfo.p_stime; libop = LIB$K_DAY_OF_WEEK; status = lib$cvt_from_internal_time (&libop, &libdayweek, &bintime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } libop = LIB$K_DAY_OF_YEAR; status = lib$cvt_from_internal_time (&libop, &libdayear, &bintime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } dst_desc[0] = strlen (log_string); dst_desc[1] = (long) log_string; dst_item_list.wLength = 1; dst_item_list.wCode = LNM$_STRING; dst_item_list.pBuffer = &libdst; dst_item_list.pRetLen = &retlen; dst_item_list.term = 0; status = sys$trnlnm (0, &lnm_tbl, &dst_desc, 0, &dst_item_list); if (!$VMS_STATUS_SUCCESS (status)) { return false; } // Added to get sysuptime for SWAPPER process --- PTR 73-51-29 if (bintime == 0) { status = lib$getsyi(&item, 0, &sysinfo, &val, 0, 0); status = sys$bintim(&sysinfo, &bintime); } status = sys$numtim (timbuf, &bintime); if (!$VMS_STATUS_SUCCESS (status)) { return false; } timetm.tm_sec = timbuf[5]; timetm.tm_min = timbuf[4]; timetm.tm_hour = timbuf[3]; timetm.tm_mday = timbuf[2]; timetm.tm_mon = timbuf[1] - 1; timetm.tm_year = timbuf[0] - 1900; timetm.tm_wday = libdayweek - 1; timetm.tm_yday = libdayear - 1; timetm.tm_isdst = 0; if (libdst != 48) { timetm.tm_isdst = 1; } timetm.tm_gmtoff = -18000; timetm.tm_zone = "EST"; if (convertToCIMDateString (ptimetm, cimtime) != -1) { d = CIMDateTime (cimtime); return true; } return false; }
Boolean ComputerSystem::getInstallDate(CIMProperty& p) { int status, istr; char record1[512], *rptr1=0; FILE *fptr1=0; unsigned __int64 bintime=0; unsigned short int timbuf[7], val=0; char cimtime[80]=""; struct tm timetm; struct tm *ptimetm=&timetm; time_t tme=0, tme1=0; char t_string[24]="", libdst; unsigned int retlen; unsigned long libop, libdayweek, libdayear; long dst_desc[2]; char log_string[]="SYS$TIMEZONE_DAYLIGHT_SAVING"; struct dsc$descriptor_s sysinfo; static $DESCRIPTOR(lnm_tbl,"LNM$SYSTEM"); struct { unsigned short wLength; unsigned short wCode; void* pBuffer; unsigned int* pRetLen; int term; } item_list; sysinfo.dsc$b_dtype=DSC$K_DTYPE_T; sysinfo.dsc$b_class=DSC$K_CLASS_S; sysinfo.dsc$w_length=sizeof(t_string); sysinfo.dsc$a_pointer=t_string; status = system("pipe product show history openvms | search/nolog/nowarn/out=history.out sys$input install"); if (!$VMS_STATUS_SUCCESS(status)) return false; if (fptr1 = fopen("history.out", "r")) { while (fgets(record1, sizeof(record1), fptr1)) { for (istr=0; istr<=(sizeof(record1)-4); istr++) { if ((rptr1 = strstr(record1+istr,"-")) && !strncmp(rptr1+4,"-",1)) break; rptr1 = 0; } if (rptr1) { time(&tme); tme1 = mktime(ptimetm); /* get timezone */ strcpy(t_string,rptr1-2); t_string[20]='.'; t_string[21]='0'; t_string[22]='0'; t_string[23]='0'; status = sys$bintim (&sysinfo, &bintime); if (!$VMS_STATUS_SUCCESS(status)) return false; libop=LIB$K_DAY_OF_WEEK; status=lib$cvt_from_internal_time (&libop,&libdayweek,&bintime); if (!$VMS_STATUS_SUCCESS(status)) return false; libop=LIB$K_DAY_OF_YEAR; status=lib$cvt_from_internal_time (&libop,&libdayear,&bintime); if (!$VMS_STATUS_SUCCESS(status)) return false; dst_desc[0] = strlen(log_string); dst_desc[1] = (long) log_string; item_list.wLength = 1; item_list.wCode = LNM$_STRING; item_list.pBuffer = &libdst; item_list.pRetLen = &retlen; item_list.term =0; status = sys$trnlnm (0,&lnm_tbl,&dst_desc,0,&item_list); if (!$VMS_STATUS_SUCCESS(status)) return false; status = sys$numtim(timbuf,&bintime); if (!$VMS_STATUS_SUCCESS(status)) return false; timetm.tm_sec = timbuf[5]; timetm.tm_min = timbuf[4]; timetm.tm_hour = timbuf[3]; timetm.tm_mday = timbuf[2]; timetm.tm_mon = timbuf[1]-1; timetm.tm_year = timbuf[0]-1900; timetm.tm_wday = libdayweek-1; timetm.tm_yday = libdayear-1; timetm.tm_isdst = 0; if (libdst != 48) timetm.tm_isdst = 1; status = convertToCIMDateString(ptimetm,cimtime); if (!$VMS_STATUS_SUCCESS(status)) return false; CIMDateTime _installDate(cimtime); p = CIMProperty(PROPERTY_INSTALL_DATE, _installDate); fclose (fptr1); status = system("if (f$search(\"history.out\") .nes. \"\") then delete history.out;*"); return true; } // end if (rptr1 = strstr(record1,"Install")) } fclose (fptr1); status = system("if (f$search(\"history.out\") .nes. \"\") then delete history.out;*"); return false; } // end if (fptr1 = fopen(history.out, "r")) else { fclose (fptr1); status = system("if (f$search(\"history.out\") .nes. \"\") then delete history.out;*"); return false; } }