void greetings ( void ) { int fail,n; char s[40]; fail = version_string(&n,s); printf("Running %s ...\n",s); }
static void gtp_version( FILE * fp, int id ){ char * s = alloc(); version_string(s); gtp_answer(fp, id, s); release(s); }
PRIVATE void Kip::debug_print_features() const { printf("Kernel features:"); char const *f = version_string(); for (f += strlen(f) + 1; *f; f += strlen(f) + 1) { putchar(' '); putstr(f); } putchar('\n'); }
// Print the help info & exit static void print_help(void) { asfPrintStatus( "\n" "Tool name:\n " ASF_NAME_STRING "\n\n" "Usage:\n" ASF_USAGE_STRING "\n" "Description:\n" ASF_DESCRIPTION_STRING "\n" "Input:\n" ASF_INPUT_STRING "\n" "Output:\n"ASF_OUTPUT_STRING "\n" "Options:\n" ASF_OPTIONS_STRING "\n" "Contact:\n" ASF_CONTACT_STRING "\n" "Version:\n %s\n\n", version_string(ASF_NAME_STRING)); exit(EXIT_SUCCESS); }
// load stored parameters from disk void read_from_disk() { BOOST_ASSERT(!m_file_name.empty()); m_cache.clear(); boost::property_tree::ptree pt; try { read_json(m_file_name, pt); } catch(boost::property_tree::json_parser::json_parser_error &e){ // no saved cache file, ignore return; } std::string stored_device; try { stored_device = pt.get<std::string>("header.device"); } catch(boost::property_tree::ptree_bad_path&){ return; } std::string stored_version; try { stored_version = pt.get<std::string>("header.version"); } catch(boost::property_tree::ptree_bad_path&){ return; } if(stored_device == m_device_name && stored_version == version_string()){ typedef boost::property_tree::ptree::const_iterator pt_iter; for(pt_iter iter = pt.begin(); iter != pt.end(); ++iter){ if(iter->first == "header"){ // skip header continue; } boost::property_tree::ptree child_pt = pt.get_child(iter->first); for(pt_iter child_iter = child_pt.begin(); child_iter != child_pt.end(); ++child_iter){ set(iter->first, child_iter->first, boost::lexical_cast<uint_>(child_iter->second.data())); } } } m_dirty = false; }
static void open_stack(FILE *fp, ursa_type_t *ursa) { fprintf(fp, "<Placemark>\n"); fprintf(fp, " <description><![CDATA[\n"); fprintf(fp, "<table width=\"350\"><tr><td>\n"); fprintf(fp, "<!-- Format: URSA (generated by %s) -->\n", version_string("convert2vector")); fprintf(fp, "<strong>Platform</strong>: %s <br>\n", ursa->platform); fprintf(fp, "<strong>Sensor</strong>: %s <br>\n", ursa->sensor); fprintf(fp, "<strong>Beam mode</strong>: %s <br>\n", ursa->beam_mode); fprintf(fp, "<strong>Frame Number</strong>: %d <br>\n", ursa->frame_number); fprintf(fp, "<strong>Off Nadir Angle</strong>: %.1f <br><br>\n", ursa->off_nadir_angle); fprintf(fp, "<table border=\"1\" cellpadding=\"5\"><tr>\n"); fprintf(fp, "<td><strong>Granule Name</strong></td>"); fprintf(fp, "<td><strong>Center Time</strong></td></tr>\n"); }
int fileop_save_by_name( char *file_name ) { FILE *fp; char name[ MAX_TOKEN_LENGTH ]; char s[80]; strcpy( name, file_name ); file_handle_path( name, MAX_TOKEN_LENGTH ); if ( NULL == (fp = fopen( name, "w" )) ) { cprintf( ERROR, CONT, "fail to save file \"%s\"\n", name ); return ( ERROR ); } fprintf( fp, "###\n" ); fprintf( fp, "### CaFE file made by \"save\" command.\n" ); fprintf( fp, "### --- %s ---\n", version_string( s ) ); time_now( s ); fprintf( fp, "###\n### ### saved : %s\n###\n", s ); fprintf( fp, "\n\n### user stack operation functions\n\n" ); fprintf( fp, "0 >newlydefined_{\n" ); fprintf( fp, "0 >newlydefined_k}\n\n" ); fprintf( fp, "fisdef { if z :@ :{ =new =target ; 1 >newlydefined_{ ; pop\n\n" ); fprintf( fp, "fisdef k} if z :@ :k} =parent =target ; 1 >newlydefined_k} ; pop\n\n\n" ); fprintf( fp, "### content of stack\n\n" ); save_stack( NULL, fp ); fprintf( fp, "\n\n### content of stack end\n\n" ); fprintf( fp, "<newlydefined_{ if t :@ forget { ; pop\n" ); fprintf( fp, "<newlydefined_k} if t :@ forget k} ; pop\n" ); fclose( fp ); return ( NO_ERROR ); }
// store current parameters to disk void write_to_disk() { BOOST_ASSERT(!m_file_name.empty()); if(m_dirty){ // save current parameters to disk boost::property_tree::ptree pt; pt.put("header.device", m_device_name); pt.put("header.version", version_string()); typedef std::map<std::pair<std::string, std::string>, uint_> map_type; for(map_type::const_iterator iter = m_cache.begin(); iter != m_cache.end(); ++iter){ const std::pair<std::string, std::string> &key = iter->first; pt.add(key.first + "." + key.second, iter->second); } write_json(m_file_name, pt); m_dirty = false; } }
/*ARGSUSED*/ void paniclog(const char *type, /* panic, impossible, trickery */ const char *reason) /* explanation */ { #ifdef PANICLOG FILE *lfile; char buf[BUFSZ]; if (!program_state.in_paniclog) { program_state.in_paniclog = 1; lfile = fopen_datafile(PANICLOG, "a", TROUBLEPREFIX); if (lfile) { fprintf(lfile, "%s %08ld: %s %s\n", version_string(buf), yyyymmdd((time_t)0L), type, reason); fclose(lfile); } program_state.in_paniclog = 0; } #endif /* PANICLOG */ return; }
void show_help(struct statics * stp) { static char *fullhelp; char *p = NULL; char *q = NULL; if (fullhelp == NULL) { /* set it up first time thru */ if (stp->order_names != NULL) { p = string_list(stp->order_names); } if (p == NULL) { p = "not supported"; } if (stp->order_names != NULL) { q = string_list(stp->order_names_io); } if (q == NULL) { q = "not supported"; } fullhelp = (char *) malloc(strlen(help_text) + strlen(p) + strlen(q) + 2); sprintf(fullhelp, help_text, p, q); } display_pager("Top version "); display_pager(version_string()); display_pager(", "); display_pager(copyright); display_pager("\n"); display_pager(fullhelp); }
show_help() { printf("Top version %s, %s\n", version_string(), copyright); fputs("\n\n\ A top users display for Unix\n\ \n\ These single-character commands are available:\n\ \n\ ^L - redraw screen\n\ q - quit\n\ h or ? - help; show this text\n", stdout); /* not all commands are availalbe with overstrike terminals */ if (overstrike) { fputs("\n\ Other commands are also available, but this terminal is not\n\ sophisticated enough to handle those commands gracefully.\n\n", stdout); } else {
void *ManagerImpl::systemInfoEvent(void *data) { struct sysinfo_s *sysinfo = (struct sysinfo_s *) data; QString platformString; QString detailsString; detailsString = QString::fromUcs2(sysinfo->version.szCSDVersion); if (VER_PLATFORM_WIN32_CE == sysinfo->version.dwPlatformId) platformString = "Windows CE"; major->setText(QString::number(sysinfo->version.dwMajorVersion)); minor->setText(QString::number(sysinfo->version.dwMinorVersion)); build->setText(QString::number(sysinfo->version.dwBuildNumber)); sysName->setText(QString(version_string(&sysinfo->version))); id->setText(QString::number(sysinfo->version.dwPlatformId)); platform->setText(platformString); details->setText(detailsString); architecture->setText( QString::number(sysinfo->system.wProcessorArchitecture) + " " + QString((sysinfo->system.wProcessorArchitecture < PROCESSOR_ARCHITECTURE_COUNT) ? architectures[ sysinfo->system.wProcessorArchitecture] : i18n("Processor architecture", "Unknown"))); procType->setText(QString::number(sysinfo->system.dwProcessorType) + " " + QString(processor(sysinfo->system.dwProcessorType))); pageSize->setText("0x" + QString::number( sysinfo->system.dwAllocationGranularity, 16)); storageSize->setText(QString::number(sysinfo->store.dwStoreSize) + " B (" + QString::number(sysinfo->store.dwStoreSize / (1024 * 1024)) + " MB)"); freeSpace->setText(QString::number(sysinfo->store.dwFreeSize) + " B (" + QString::number(sysinfo->store.dwFreeSize / (1024 * 1024)) + " MB)"); delete sysinfo; return NULL; }
int fileop_put_by_name( char *file_name ) { FILE *fp; char name[ MAX_TOKEN_LENGTH ]; char s[80]; char **strp; char *quoted; int i; strcpy( name, file_name ); file_handle_path( name, MAX_TOKEN_LENGTH ); if ( NULL == (fp = fopen( name, "w" )) ) { cprintf( ERROR, CONT, "fail to put file \"%s\"\n", name ); return ( ERROR ); } fprintf( fp, "###\n" ); fprintf( fp, "### CaFE file made by \"put\" command.\n" ); fprintf( fp, "### --- %s ---\n", version_string( s ) ); fprintf( fp, "###\n" ); fprintf( fp, "\n" ); time_now( s ); fprintf( fp, "###\n### ### saved : %s\n###\n", s ); fprintf( fp, "\n\n### functions\n\n" ); if ( !(strcmp( file_name, PREFERENCE_FILE3 )) ) fprintf( fp, "\"\" package\n\n" ); function_list( fp ); fprintf( fp, "\n\n### history section\n\n" ); if ( NULL == (strp =( char **)malloc( sizeof( char * ) * g_cafe_mode.n_history.value )) ) { fclose( fp ); cprintf( ERROR, CONT, "fail to put file (@malloc)\"%s\"\n", name ); return ( ERROR ); } history_strings( strp, g_cafe_mode.n_history.value ); for ( i = (g_cafe_mode.n_history.value - 1); i >= 0 ; --i ) { if ( !strp[ i ] ) continue; if ( strstr( strp[ i ], "qq" ) ) continue; if ( strstr( strp[ i ], "quit" ) ) continue; quoted = string_quote( strp[ i ], '\"' ); fprintf( fp, "%s\thistory\n", quoted ); dispose_string_object( quoted ); } free( strp ); fclose( fp ); return ( NO_ERROR ); }
void do_arguments(globalstate *gstate, int ac, char **av) { int i; /* this appears to keep getopt happy */ optind = 1; #ifdef HAVE_GETOPT_LONG while ((i = getopt_long(ac, av, "CDSIMTabcinqtuvs:d:U:o:m:", longopts, NULL)) != -1) #else while ((i = getopt(ac, av, "CDSIMTabcinqtuvs:d:U:o:m:")) != EOF) #endif { switch(i) { #ifdef ENABLE_COLOR case 'C': gstate->use_color = !gstate->use_color; break; #endif case 'D': debug_set(1); break; case 'v': fprintf(stderr, "%s: version %s\n", myname, version_string()); exit(EX_OK); break; case 'b': case 'n': gstate->interactive = No; break; case 'a': gstate->displays = Infinity; gstate->topn = Infinity; break; case 'i': gstate->interactive = Yes; break; case 'o': gstate->order_name = optarg; break; case 'd': i = atoiwi(optarg); if (i == Invalid || i == 0) { message_error(" Bad display count"); } else { gstate->displays = i; } break; case 's': i = atoi(optarg); if (i < 0 || (i == 0 && getuid() != 0)) { message_error(" Bad seconds delay"); } else { gstate->delay = i; } break; case 'u': gstate->show_usernames = !gstate->show_usernames; break; case 'U': i = userid(optarg); if (i == -1) { message_error(" Unknown user '%s'", optarg); } else { gstate->pselect.uid = i; } break; case 'm': i = atoi(optarg); gstate->pselect.mode = i; break; case 'S': gstate->pselect.system = !gstate->pselect.system; break; case 'I': gstate->pselect.idle = !gstate->pselect.idle; break; case 'M': enable_ncpus = 1; break; #ifdef ENABLE_COLOR case 'T': gstate->show_tags = 1; break; #endif case 'c': gstate->pselect.fullcmd = !gstate->pselect.fullcmd; break; case 't': gstate->pselect.threads = !gstate->pselect.threads; break; case 'q': /* be quick about it */ /* only allow this if user is really root */ if (getuid() == 0) { /* be very un-nice! */ (void) nice(-20); } else { message_error(" Option -q can only be used by root"); } break; default: fprintf(stderr, "\ Top version %s\n\ Usage: %s [-ISTabcinqu] [-d x] [-s x] [-o field] [-U username] [number]\n", version_string(), myname); exit(EX_USAGE); } } /* get count of top processes to display */ if (optind < ac && *av[optind]) { if ((i = atoiwi(av[optind])) == Invalid) { message_error(" Process count not a number"); } else { gstate->topn = i; } } }
static ambit_device_info_t * ambit_device_info_new(const struct hid_device_info *dev) { ambit_device_info_t *device = NULL; const ambit_known_device_t *known_device = NULL; const char *dev_path; uint16_t vid; uint16_t pid; hid_device *hid; if (!dev || !dev->path) { LOG_ERROR("internal error: expecting hidraw device"); return NULL; } dev_path = dev->path; vid = dev->vendor_id; pid = dev->product_id; if (!libambit_device_support_known(vid, pid)) { LOG_INFO("ignoring unknown device (VID/PID: %04x/%04x)", vid, pid); return NULL; } dev_path = strdup(dev_path); if (!dev_path) return NULL; device = calloc(1, sizeof(*device)); if (!device) { free ((char *) dev_path); return NULL; } device->path = dev_path; device->vendor_id = vid; device->product_id = pid; { /* create name for display purposes */ char *vendor = utf8wcsconv(dev->manufacturer_string); char *product = utf8wcsconv(dev->product_string); if (vendor && product) { char *name = (char *)malloc((strlen(vendor) + 1 + strlen(product) + 1) * sizeof(char)); if (name) { strcpy(name, vendor); strcat(name, " "); strcat(name, product); free(vendor); free(product); device->name = name; } else { device->name = product; if (vendor) free(vendor); } } else { device->name = product; if (vendor) free(vendor); } device->serial = utf8wcsconv(dev->serial_number); } LOG_INFO("HID : %s: '%s' (serial: %s, VID/PID: %04x/%04x)", device->path, device->name, device->serial, device->vendor_id, device->product_id); hid = hid_open_path(device->path); if (hid) { /* HACK ALERT: minimally initialize an ambit object so we can * call device_info_get(). Note that this function sets the * device's model and serial string fields. Above the latter * has been set already using the HID information. */ char *serial = device->serial; ambit_object_t obj; obj.handle = hid; obj.sequence_no = 0; if (0 == device_info_get(&obj, device)) { if (!device->serial) { /* fall back to HID information */ device->serial = serial; } else { if (serial && 0 != strcmp(device->serial, serial)) { LOG_INFO("preferring F/W serial number over HID '%s'", serial); } if (serial) free(serial); } known_device = libambit_device_support_find(device->vendor_id, device->product_id, device->model, device->fw_version); if (known_device != NULL) { device->is_supported = known_device->supported; if (device->name && known_device->name && 0 != strcmp(device->name, known_device->name)) { char *name = strdup(known_device->name); if (name) { LOG_INFO("preferring known name over HID '%s'", device->name); free(device->name); device->name = name; } } } #ifdef DEBUG_PRINT_INFO { char fw_version[LIBAMBIT_VERSION_LENGTH+1]; char hw_version[LIBAMBIT_VERSION_LENGTH+1]; version_string(fw_version, device->fw_version); version_string(hw_version, device->hw_version); LOG_INFO("Ambit: %s: '%s' (serial: %s, VID/PID: %04x/%04x, " "nick: %s, F/W: %s, H/W: %s, supported: %s)", device->path, device->name, device->serial, device->vendor_id, device->product_id, device->model, fw_version, hw_version, (device->is_supported ? "YES" : "NO")); } #endif } else { LOG_ERROR("cannot get device info from %s", device->path); } hid_close(hid); } else { /* Store an educated guess as to why we cannot open the HID * device. Without read/write access we cannot communicate * to begin with but there may be other reasons. */ int fd = open(device->path, O_RDWR); if (-1 == fd) { device->access_status = errno; LOG_ERROR("cannot open HID device (%s): %s", device->path, strerror (device->access_status)); } else { LOG_WARNING("have read/write access to %s but cannot open HID " "device", device->path); close(fd); } } return device; }
static void version_info(void) { printf("Xconq (%s) version %s\n", program_name, version_string()); }
/* * XXX: this only supports reading and writing to version 4 superblock fields. * V5 superblocks always define certain V4 feature bits - they are blocked from * being changed if a V5 sb is detected, but otherwise v5 superblock features * are not handled here. */ static int version_f( int argc, char **argv) { __uint16_t version = 0; __uint32_t features = 0; xfs_agnumber_t ag; if (argc == 2) { /* WRITE VERSION */ if ((x.isreadonly & LIBXFS_ISREADONLY) || !expert_mode) { dbprintf(_("%s: not in expert mode, writing disabled\n"), progname); return 0; } /* Logic here derived from the IRIX xfs_chver(1M) script. */ if (!strcasecmp(argv[1], "extflg")) { switch (XFS_SB_VERSION_NUM(&mp->m_sb)) { case XFS_SB_VERSION_1: version = 0x0004 | XFS_SB_VERSION_EXTFLGBIT; break; case XFS_SB_VERSION_2: version = 0x0014 | XFS_SB_VERSION_EXTFLGBIT; break; case XFS_SB_VERSION_3: version = 0x0034 | XFS_SB_VERSION_EXTFLGBIT; break; case XFS_SB_VERSION_4: if (xfs_sb_version_hasextflgbit(&mp->m_sb)) dbprintf( _("unwritten extents flag is already enabled\n")); else version = mp->m_sb.sb_versionnum | XFS_SB_VERSION_EXTFLGBIT; break; case XFS_SB_VERSION_5: dbprintf( _("unwritten extents always enabled for v5 superblocks.\n")); break; } } else if (!strcasecmp(argv[1], "log2")) { switch (XFS_SB_VERSION_NUM(&mp->m_sb)) { case XFS_SB_VERSION_1: version = 0x0004 | XFS_SB_VERSION_LOGV2BIT; break; case XFS_SB_VERSION_2: version = 0x0014 | XFS_SB_VERSION_LOGV2BIT; break; case XFS_SB_VERSION_3: version = 0x0034 | XFS_SB_VERSION_LOGV2BIT; break; case XFS_SB_VERSION_4: if (xfs_sb_version_haslogv2(&mp->m_sb)) dbprintf( _("version 2 log format is already in use\n")); else version = mp->m_sb.sb_versionnum | XFS_SB_VERSION_LOGV2BIT; break; case XFS_SB_VERSION_5: dbprintf( _("Version 2 logs always enabled for v5 superblocks.\n")); break; } } else if (XFS_SB_VERSION_NUM(&mp->m_sb) == XFS_SB_VERSION_5) { dbprintf( _("%s: Cannot change %s on v5 superblocks.\n"), progname, argv[1]); return 0; } else if (!strcasecmp(argv[1], "attr1")) { if (xfs_sb_version_hasattr2(&mp->m_sb)) { if (!(mp->m_sb.sb_features2 &= ~XFS_SB_VERSION2_ATTR2BIT)) mp->m_sb.sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; } xfs_sb_version_addattr(&mp->m_sb); version = mp->m_sb.sb_versionnum; features = mp->m_sb.sb_features2; } else if (!strcasecmp(argv[1], "attr2")) { xfs_sb_version_addattr(&mp->m_sb); xfs_sb_version_addattr2(&mp->m_sb); version = mp->m_sb.sb_versionnum; features = mp->m_sb.sb_features2; } else if (!strcasecmp(argv[1], "projid32bit")) { xfs_sb_version_addprojid32bit(&mp->m_sb); version = mp->m_sb.sb_versionnum; features = mp->m_sb.sb_features2; } else { dbprintf(_("%s: invalid version change command \"%s\"\n"), progname, argv[1]); return 0; } if (version) { dbprintf(_("writing all SBs\n")); for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) if (!do_version(ag, version, features)) { dbprintf(_("failed to set versionnum " "in AG %d\n"), ag); break; } mp->m_sb.sb_versionnum = version; mp->m_sb.sb_features2 = features; } } if (argc == 3) { /* VERSIONNUM + FEATURES2 */ char *sp; version = mp->m_sb.sb_versionnum; features = mp->m_sb.sb_features2; mp->m_sb.sb_versionnum = strtoul(argv[1], &sp, 0); mp->m_sb.sb_features2 = strtoul(argv[2], &sp, 0); } dbprintf(_("versionnum [0x%x+0x%x] = %s\n"), mp->m_sb.sb_versionnum, mp->m_sb.sb_features2, version_string(&mp->m_sb)); if (argc == 3) { /* now reset... */ mp->m_sb.sb_versionnum = version; mp->m_sb.sb_features2 = features; return 0; } return 0; }
static void add_to_kml(FILE *fp, datapool_type_t *datapool, dbf_header_t *dbf, int nCols) { int ii; char begin[10], end[10]; // Print out according to configuration fprintf(fp, "<Placemark>\n"); fprintf(fp, " <description><![CDATA[\n"); fprintf(fp, "<table width=\"350\"><tr><td>\n"); fprintf(fp, "<!-- Format: DATAPOOL (generated by %s) -->\n", version_string("conver2vector")); for (ii=0; ii<nCols; ii++) { if (dbf[ii].visible == 0) { strcpy(begin, "<!--"); strcpy(end, "-->\n"); } else { strcpy(begin, ""); strcpy(end, "\n"); } if (strcmp(dbf[ii].header, "Granule_Name") == 0) fprintf(fp, "%s<strong>Granule Name</strong>: %s <br>%s", begin, datapool->granule_name, end); else if (strcmp(dbf[ii].header, "Platform") == 0) fprintf(fp, "%s<strong>Platform</strong>: %s <br>%s", begin, datapool->platform, end); else if (strcmp(dbf[ii].header, "Sensor") == 0) fprintf(fp, "%s<strong>Sensor</strong>: %s <br>%s", begin, datapool->sensor, end); else if (strcmp(dbf[ii].header, "Beam_Mode") == 0) fprintf(fp, "%s<strong>Beam mode</strong>: %s <br>%s", begin, datapool->beam_mode, end); else if (strcmp(dbf[ii].header, "Beam_Mode_Description") == 0) fprintf(fp, "%s<strong>Beam mode description</strong>: %s <br>%s", begin, datapool->beam_mode_description, end); else if (strcmp(dbf[ii].header, "Orbit") == 0) fprintf(fp, "%s<strong>Orbit</strong>: %d <br>%s", begin, datapool->orbit, end); else if (strcmp(dbf[ii].header, "Path_Number") == 0) fprintf(fp, "%s<strong>Path Number</strong>: %d <br>%s", begin, datapool->path_number, end); else if (strcmp(dbf[ii].header, "Frame_Number") == 0) fprintf(fp, "%s<strong>Frame Number</strong>: %d <br>%s", begin, datapool->frame_number, end); else if (strcmp(dbf[ii].header, "Acquisition_Date") == 0) fprintf(fp, "%s<strong>Acquisition Date</strong>: %s <br>%s", begin, datapool->acquisition_date, end); else if (strcmp(dbf[ii].header, "Processing_Date") == 0) fprintf(fp, "%s<strong>Processing Date</strong>: %s <br>%s", begin, datapool->processing_date, end); else if (strcmp(dbf[ii].header, "Processing_Level") == 0) fprintf(fp, "%s<strong>Processing Level</strong>: %s <br>%s", begin, datapool->processing_level, end); else if (strcmp(dbf[ii].header, "Start_Time") == 0) fprintf(fp, "%s<strong>Start Time</strong>: %s <br>%s", begin, datapool->start_time, end); else if (strcmp(dbf[ii].header, "End_Time") == 0) fprintf(fp, "%s<strong>End Time</strong>: %s <br>%s", begin, datapool->end_time, end); else if (strcmp(dbf[ii].header, "Center_Lat") == 0) fprintf(fp, "%s<strong>Center Lat</strong>: %.4f <br>%s", begin, datapool->center_lat, end); else if (strcmp(dbf[ii].header, "Center_Lon") == 0) fprintf(fp, "%s<strong>Center Lon</strong>: %.4f <br>%s", begin, datapool->center_lon, end); else if (strcmp(dbf[ii].header, "Near_Start_Lat") == 0) fprintf(fp, "%s<strong>Near Start Lat</strong>: %.4f <br>%s", begin, datapool->near_start_lat, end); else if (strcmp(dbf[ii].header, "Near_Start_Lon") == 0) fprintf(fp, "%s<strong>Near Start Lon</strong>: %.4f <br>%s", begin, datapool->near_start_lon, end); else if (strcmp(dbf[ii].header, "Far_Start_Lat") == 0) fprintf(fp, "%s<strong>Far Start Lat</strong>: %.4f <br>%s", begin, datapool->far_start_lat, end); else if (strcmp(dbf[ii].header, "Far_Start_Lon") == 0) fprintf(fp, "%s<strong>Far Start Lon</strong>: %.4f <br>%s", begin, datapool->far_start_lon, end); else if (strcmp(dbf[ii].header, "Near_End_Lat") == 0) fprintf(fp, "%s<strong>Near End Lat</strong>: %.4f <br>%s", begin, datapool->near_end_lat, end); else if (strcmp(dbf[ii].header, "Near_End_Lon") == 0) fprintf(fp, "%s<strong>Near End Lon</strong>: %.4f <br>%s", begin, datapool->near_end_lon, end); else if (strcmp(dbf[ii].header, "Far_End_Lat") == 0) fprintf(fp, "%s<strong>Far End Lat</strong>: %.4f <br>%s", begin, datapool->far_end_lat, end); else if (strcmp(dbf[ii].header, "Far_End_Lon") == 0) fprintf(fp, "%s<strong>Far End Lon</strong>: %.4f <br>%s", begin, datapool->far_end_lon, end); else if (strcmp(dbf[ii].header, "Faraday_Rotation") == 0) fprintf(fp, "%s<strong>Faraday Rotation</strong>: %.1f <br>%s", begin, datapool->faraday_rotation, end); else if (strcmp(dbf[ii].header, "Orbit_Direction") == 0) fprintf(fp, "%s<strong>Orbit Direction</strong>: %s <br>%s", begin, datapool->orbit_direction, end); else if (strcmp(dbf[ii].header, "Url") == 0) fprintf(fp, "%s<strong>URL</strong>: %s <br>%s", begin, datapool->url, end); else if (strcmp(dbf[ii].header, "Size") == 0) fprintf(fp, "%s<strong>Size (MB)</strong>: %.2f <br>%s", begin, datapool->size, end); else if (strcmp(dbf[ii].header, "Off_Nadir_Angle") == 0) fprintf(fp, "%s<strong>Off Nadir Angle</strong>: %.1f <br>%s", begin, datapool->off_nadir_angle, end); } fprintf(fp, "</td></tr></table>\n"); fprintf(fp, " ]]></description>\n"); fprintf(fp, " <name>%s</name>\n", datapool->granule_name); fprintf(fp, " <LookAt>\n"); fprintf(fp, " <longitude>%.4f</longitude>\n", datapool->center_lon); fprintf(fp, " <latitude>%.4f</latitude>\n", datapool->center_lat); fprintf(fp, " <range>400000</range>\n"); fprintf(fp, " </LookAt>\n"); fprintf(fp, " <visibility>1</visibility>\n"); fprintf(fp, " <open>1</open>\n"); write_kml_style_keys(fp); fprintf(fp, " <Polygon>\n"); fprintf(fp, " <extrude>1</extrude>\n"); fprintf(fp, " <altitudeMode>%s</altitudeMode>\n", altitude_mode()); fprintf(fp, " <outerBoundaryIs>\n"); fprintf(fp, " <LinearRing>\n"); fprintf(fp, " <coordinates>\n"); fprintf(fp, " %.4f,%.4f,7000\n", datapool->near_start_lon, datapool->near_start_lat); fprintf(fp, " %.4f,%.4f,7000\n", datapool->far_start_lon, datapool->far_start_lat); fprintf(fp, " %.4f,%.4f,7000\n", datapool->far_end_lon, datapool->far_end_lat); fprintf(fp, " %.4f,%.4f,7000\n", datapool->near_end_lon, datapool->near_end_lat); fprintf(fp, " %.4f,%.4f,7000\n", datapool->near_start_lon, datapool->near_start_lat); fprintf(fp, " </coordinates>\n"); fprintf(fp, " </LinearRing>\n"); fprintf(fp, " </outerBoundaryIs>\n"); fprintf(fp, " </Polygon>\n"); fprintf(fp, "</Placemark>\n"); }
int main() { constexpr char_array ver = version_string(); std::cout << ver.c_str() << '\n'; }
DWORD CrashExceptionHandler (qboolean iswatchdog, DWORD exceptionCode, LPEXCEPTION_POINTERS exceptionInfo) { char dumpPath[1024]; HANDLE hProc = GetCurrentProcess(); DWORD procid = GetCurrentProcessId(); HANDLE dumpfile; HMODULE hDbgHelp; MINIDUMPWRITEDUMP fnMiniDumpWriteDump; HMODULE hKernel; BOOL (WINAPI *pIsDebuggerPresent)(void); DWORD (WINAPI *pSymSetOptions)(DWORD SymOptions); BOOL (WINAPI *pSymInitialize)(HANDLE hProcess, PSTR UserSearchPath, BOOL fInvadeProcess); BOOL (WINAPI *pSymFromAddr)(HANDLE hProcess, DWORD64 Address, PDWORD64 Displacement, PSYMBOL_INFO Symbol); #ifdef _WIN64 #define DBGHELP_POSTFIX "64" BOOL (WINAPI *pStackWalkX)(DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME64 StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine, PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress); PVOID (WINAPI *pSymFunctionTableAccessX)(HANDLE hProcess, DWORD64 AddrBase); DWORD64 (WINAPI *pSymGetModuleBaseX)(HANDLE hProcess, DWORD64 qwAddr); BOOL (WINAPI *pSymGetLineFromAddrX)(HANDLE hProcess, DWORD64 qwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line64); BOOL (WINAPI *pSymGetModuleInfoX)(HANDLE hProcess, DWORD64 qwAddr, PIMAGEHLP_MODULE64 ModuleInfo); #define STACKFRAMEX STACKFRAME64 #define IMAGEHLP_LINEX IMAGEHLP_LINE64 #define IMAGEHLP_MODULEX IMAGEHLP_MODULE64 #else #define DBGHELP_POSTFIX "" BOOL (WINAPI *pStackWalkX)(DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine, PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE TranslateAddress); PVOID (WINAPI *pSymFunctionTableAccessX)(HANDLE hProcess, DWORD AddrBase); DWORD (WINAPI *pSymGetModuleBaseX)(HANDLE hProcess, DWORD dwAddr); BOOL (WINAPI *pSymGetLineFromAddrX)(HANDLE hProcess, DWORD dwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE Line); BOOL (WINAPI *pSymGetModuleInfoX)(HANDLE hProcess, DWORD dwAddr, PIMAGEHLP_MODULE ModuleInfo); #define STACKFRAMEX STACKFRAME #define IMAGEHLP_LINEX IMAGEHLP_LINE #define IMAGEHLP_MODULEX IMAGEHLP_MODULE #endif dllfunction_t debughelpfuncs[] = { {(void*)&pSymFromAddr, "SymFromAddr"}, {(void*)&pSymSetOptions, "SymSetOptions"}, {(void*)&pSymInitialize, "SymInitialize"}, {(void*)&pStackWalkX, "StackWalk"DBGHELP_POSTFIX}, {(void*)&pSymFunctionTableAccessX, "SymFunctionTableAccess"DBGHELP_POSTFIX}, {(void*)&pSymGetModuleBaseX, "SymGetModuleBase"DBGHELP_POSTFIX}, {(void*)&pSymGetLineFromAddrX, "SymGetLineFromAddr"DBGHELP_POSTFIX}, {(void*)&pSymGetModuleInfoX, "SymGetModuleInfo"DBGHELP_POSTFIX}, {NULL, NULL} }; switch(exceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_BREAKPOINT: case EXCEPTION_SINGLE_STEP: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_FLT_DENORMAL_OPERAND: case EXCEPTION_FLT_DIVIDE_BY_ZERO: case EXCEPTION_FLT_INEXACT_RESULT: case EXCEPTION_FLT_INVALID_OPERATION: case EXCEPTION_FLT_OVERFLOW: case EXCEPTION_FLT_STACK_CHECK: case EXCEPTION_FLT_UNDERFLOW: case EXCEPTION_INT_DIVIDE_BY_ZERO: case EXCEPTION_INT_OVERFLOW: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_NONCONTINUABLE_EXCEPTION: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_INVALID_DISPOSITION: case EXCEPTION_GUARD_PAGE: case EXCEPTION_INVALID_HANDLE: // case EXCEPTION_POSSIBLE_DEADLOCK: break; default: //because windows is a steaming pile of s***e, we have to ignore any software-generated exceptions, because most of them are not in fact fatal, *EVEN IF THEY CLAIM TO BE NON-CONTINUABLE* return exceptionCode; } hKernel = LoadLibrary ("kernel32"); pIsDebuggerPresent = (void*)GetProcAddress(hKernel, "IsDebuggerPresent"); if (pIsDebuggerPresent && pIsDebuggerPresent()) return EXCEPTION_CONTINUE_SEARCH; #ifdef GLQUAKE GLVID_Crashed(); #endif #if 1//ndef _MSC_VER { if (Sys_LoadLibrary("DBGHELP", debughelpfuncs)) { STACKFRAMEX stack; CONTEXT *pcontext = exceptionInfo->ContextRecord; IMAGEHLP_LINEX line; IMAGEHLP_MODULEX module; struct { SYMBOL_INFO sym; char name[1024]; } sym; int frameno; char stacklog[8192]; int logpos, logstart; char *logline; stacklog[logpos=0] = 0; pSymInitialize(hProc, NULL, TRUE); pSymSetOptions(SYMOPT_LOAD_LINES); memset(&stack, 0, sizeof(stack)); #ifdef _WIN64 #define IMAGE_FILE_MACHINE_THIS IMAGE_FILE_MACHINE_AMD64 stack.AddrPC.Mode = AddrModeFlat; stack.AddrPC.Offset = pcontext->Rip; stack.AddrFrame.Mode = AddrModeFlat; stack.AddrFrame.Offset = pcontext->Rbp; stack.AddrStack.Mode = AddrModeFlat; stack.AddrStack.Offset = pcontext->Rsp; #else #define IMAGE_FILE_MACHINE_THIS IMAGE_FILE_MACHINE_I386 stack.AddrPC.Mode = AddrModeFlat; stack.AddrPC.Offset = pcontext->Eip; stack.AddrFrame.Mode = AddrModeFlat; stack.AddrFrame.Offset = pcontext->Ebp; stack.AddrStack.Mode = AddrModeFlat; stack.AddrStack.Offset = pcontext->Esp; #endif Q_strncpyz(stacklog+logpos, FULLENGINENAME " or dependancy has crashed. The following stack dump been copied to your windows clipboard.\n" #ifdef _MSC_VER "Would you like to generate a core dump too?\n" #endif "\n", sizeof(stacklog)-logpos); logstart = logpos += strlen(stacklog+logpos); //so I know which one it is #if defined(DEBUG) || defined(_DEBUG) #define BUILDDEBUGREL "Debug" #else #define BUILDDEBUGREL "Optimised" #endif #ifdef MINIMAL #define BUILDMINIMAL "Min" #else #define BUILDMINIMAL "" #endif #if defined(GLQUAKE) && !defined(D3DQUAKE) #define BUILDTYPE "GL" #elif !defined(GLQUAKE) && defined(D3DQUAKE) #define BUILDTYPE "D3D" #else #define BUILDTYPE "Merged" #endif Q_snprintfz(stacklog+logpos, sizeof(stacklog)-logpos, "Build: %s %s %s: %s\r\n", BUILDDEBUGREL, PLATFORM, BUILDMINIMAL BUILDTYPE, version_string()); logpos += strlen(stacklog+logpos); for(frameno = 0; ; frameno++) { DWORD64 symdisp; DWORD linedisp; DWORD_PTR symaddr; if (!pStackWalkX(IMAGE_FILE_MACHINE_THIS, hProc, GetCurrentThread(), &stack, pcontext, NULL, pSymFunctionTableAccessX, pSymGetModuleBaseX, NULL)) break; memset(&module, 0, sizeof(module)); module.SizeOfStruct = sizeof(module); pSymGetModuleInfoX(hProc, stack.AddrPC.Offset, &module); memset(&line, 0, sizeof(line)); line.SizeOfStruct = sizeof(line); symdisp = 0; memset(&sym, 0, sizeof(sym)); sym.sym.MaxNameLen = sizeof(sym.name); symaddr = stack.AddrPC.Offset; sym.sym.SizeOfStruct = sizeof(sym.sym); if (pSymFromAddr(hProc, symaddr, &symdisp, &sym.sym)) { if (pSymGetLineFromAddrX(hProc, stack.AddrPC.Offset, &linedisp, &line)) logline = va("%-20s - %s:%i (%s)\r\n", sym.sym.Name, line.FileName, (int)line.LineNumber, module.LoadedImageName); else logline = va("%-20s+%#x (%s)\r\n", sym.sym.Name, (unsigned int)symdisp, module.LoadedImageName); } else logline = va("0x%p (%s)\r\n", (void*)(DWORD_PTR)stack.AddrPC.Offset, module.LoadedImageName); Q_strncpyz(stacklog+logpos, logline, sizeof(stacklog)-logpos); logpos += strlen(stacklog+logpos); if (logpos+1 >= sizeof(stacklog)) break; } Sys_Printf("%s", stacklog+logstart); return EXCEPTION_EXECUTE_HANDLER; } else { Sys_Printf("We crashed.\nUnable to load dbghelp library. Stack info is not available\n"); return EXCEPTION_EXECUTE_HANDLER; } } #endif hDbgHelp = LoadLibrary ("DBGHELP"); if (hDbgHelp) fnMiniDumpWriteDump = (MINIDUMPWRITEDUMP)GetProcAddress (hDbgHelp, "MiniDumpWriteDump"); else fnMiniDumpWriteDump = NULL; if (fnMiniDumpWriteDump) { if (MessageBox(NULL, "KABOOM! We crashed!\nBlame the monkey in the corner.\nI hope you saved your work.\nWould you like to take a dump now?", DISTRIBUTION " Sucks", MB_ICONSTOP|MB_YESNO) != IDYES) { if (pIsDebuggerPresent ()) { //its possible someone attached a debugger while we were showing that message return EXCEPTION_CONTINUE_SEARCH; } return EXCEPTION_EXECUTE_HANDLER; } /*take a dump*/ GetTempPath (sizeof(dumpPath)-16, dumpPath); Q_strncatz(dumpPath, DISTRIBUTION"CrashDump.dmp", sizeof(dumpPath)); dumpfile = CreateFile (dumpPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (dumpfile) { MINIDUMP_EXCEPTION_INFORMATION crashinfo; crashinfo.ClientPointers = TRUE; crashinfo.ExceptionPointers = exceptionInfo; crashinfo.ThreadId = GetCurrentThreadId (); if (fnMiniDumpWriteDump(hProc, procid, dumpfile, MiniDumpWithIndirectlyReferencedMemory|MiniDumpWithDataSegs, &crashinfo, NULL, NULL)) { CloseHandle(dumpfile); MessageBox(NULL, va("You can find the crashdump at\n%s\nPlease send this file to someone.\n\nWarning: sensitive information (like your current user name) might be present in the dump.\nYou will probably want to compress it.", dumpPath), DISTRIBUTION " Sucks", 0); return EXCEPTION_EXECUTE_HANDLER; } } } else MessageBox(NULL, "Kaboom! Sorry. No MiniDumpWriteDump function.", FULLENGINENAME " Sucks", 0); return EXCEPTION_EXECUTE_HANDLER; }