string CommandOptionWithCommonTimeArg :: checkArguments() { string errstr = CommandOptionWithAnyArg::checkArguments(); if (errstr != string()) return errstr; vector<string>::size_type vecindex; for(vecindex = 0; vecindex < value.size(); vecindex++) { if (timeSpec != string()) { try { CommonTime t; scanTime(t, value[vecindex], timeSpec); times.push_back(t); } catch (...) { errstr += "\"" + value[vecindex] + "\" is not a valid time."; } } else errstr += "\"" + value[vecindex] + "\" is not a valid time."; } return errstr; }
int dateScanF(uchar *buf,int len,uchar *fmt,int *Y) { // try to scan this fmt... int r,tmp; //printf("TryScan src=<%*.*s> and mask=%s\n",len,len,buf,fmt); for(r=0;*fmt && len>0;) { int l=1; while(*fmt && *fmt<=32) fmt++; if (!*fmt) break; while(len>0 && buf[0]<=32) {buf++; len--;} if (len==0) break; //printf("fmt=%s in %*.*s\n",fmt,len,len,buf); switch(*fmt) { case 'y': l = scanYear(buf,len,Y+0); break; case 'Y': l = scanYear4(buf,len,Y+0); break; case 'm': l = scanMonth(buf,len,Y+1); //printf("MonScan=%d\n",l); getch(); break; case 'd': l = scanDay(buf,len,Y+2); break; case 'w': l = scanWeekDay(buf,len,&tmp); break; case 't': l = scanTime(buf,len,Y+3); break; case 'h': l = scanUINT2(buf,len,Y+3,24); break; case 'n': l = scanUINT2(buf,len,Y+4,60); break; case 's': l = scanUINT2(buf,len,Y+5,60); break; case 'z': l = scanTZ(buf,len,Y+7); //printf("ScanTZ=%d shift=%d since '%s'\n",l,Y[7],buf); break; // if cant - nothing -))) default: if (*buf!=*fmt) l=0; break; } //printf("Scan Res: %d\n",l); if (!l) if (*fmt!='z') return 0; r+=l; buf+=l; len-=l; fmt++; } if (*fmt=='z') fmt++; // optional if (!*fmt) return 1; return 0; }
/************************************************************ Get time from standard input; if time is invalid, ask the user to re-enter it. */ void getTime( Time *t ) { printf("Time: "); while( !scanTime( t ) || !timeOK( t )) { printf("Re-enter time in format hh:mm:ss: "); } }
static void setOption (const char c, char *optarg) { switch (c) { case 'n' : exit (sleepImmediately()); break; case 'v' : copyright (); break; case 'V' : args.verbose = 1; break; case 'd' : args.daemon = 1; break; case 'g' : printf ("%ld\n", getIdleTime()); exit (0); break; case 'f' : readConfig (optarg); break; case 'p' : writePidFile (optarg); break; case 'a' : if (args.allowsleepcommand == DENY_SLEEP) args.allowsleepcommand = NULL; args.allowsleepcommand = setstr(args.allowsleepcommand, optarg); if (args.allowsleepcommand == NULL) args.allowsleepcommand = DENY_SLEEP; break; case 'c' : args.cantsleepcommand = setstr(args.cantsleepcommand, optarg); break; case 's' : args.sleepcommand = setstr(args.sleepcommand, optarg); break; case 'w' : args.wakeupcommand = setstr(args.wakeupcommand, optarg); break; case 'D' : args.displaydimcommand = setstr(args.displaydimcommand, optarg); break; case 'E' : args.displayundimcommand = setstr(args.displayundimcommand, optarg); break; case 'S' : args.displaysleepcommand = setstr(args.displaysleepcommand, optarg); break; case 'W' : args.displaywakeupcommand = setstr(args.displaywakeupcommand, optarg); break; case 't' : args.idletimeout = scanTime(optarg, "invalid digit(s) in timeout argument '%s'\n"); break; case 'i' : args.idlecommand = setstr(args.idlecommand, optarg); break; case 'R' : args.idleresume = 0; args.idleresumecommand = setstr(args.idleresumecommand, optarg); break; case 'b' : args.breaklength = scanTime(optarg, "invalid digit(s) in pause argument '%s'\n"); break; case 'r' : args.resumecommand = setstr(args.resumecommand, optarg); break; case 'P' : args.plugcommand = setstr(args.plugcommand, optarg); break; case 'U' : args.unplugcommand = setstr(args.unplugcommand, optarg); break; default : exit (2); break; } }
// Method to store satellite data in this class' data map void SatDataReader::loadData(void) throw(FFStreamError, gpstk::StringUtils::StringException) { // Do this until end-of-file reached or something else happens while(1) { try { std::string line; formattedGetLine(line, true); // If line is too long, we throw an exception if (line.size()>255) { FFStreamError e("Line too long"); GPSTK_THROW(e); } // Let's find and strip comments, wherever they are if( StringUtils::firstWord(line)[0] == '#' ) { formattedGetLine(line, true); } std::string::size_type idx = line.find('#'); if( !(idx == std::string::npos) ) { line = line.substr(0, idx); } // We erase the header (first line) if( StringUtils::firstWord(line) == "Launch" ) { formattedGetLine(line, true); } // Remove trailing and leading blanks line = StringUtils::strip(line); // Skip blank lines if (line.size()==0) { continue; } // Let's start to get data out of file // Launch date string ldate(StringUtils::stripFirstWord(line)); // Deactivation date string ddate(StringUtils::stripFirstWord(line)); // GPS number string gnumber(StringUtils::stripFirstWord(line)); // PRN number string prn(StringUtils::stripFirstWord(line)); // Block tipe string block(StringUtils::upperCase( StringUtils::stripFirstWord(line))); // Get satellite id. If it doesn't fit GPS or Glonass, it is // marked as unknown SatID sat(StringUtils::asInt(prn),SatID::systemUnknown); // Let's identify satellite system if(block[0] == 'I') { sat.system = SatID::systemGPS; } else { if (block.substr(0, 3) == "GLO") { sat.system = SatID::systemGlonass; } } // Declare the structure to store data SatDataReader::svData data; data.block = block; data.gpsNumber = StringUtils::asInt(gnumber); // Get launch date in a proper format if(ldate[0] != '0') { ldate = StringUtils::translate(ldate, "-", " "); scanTime(data.launchDate, ldate, "%Y %m %d"); } // Get deactivation date in a proper format if(ddate[0] != '0') { ddate = StringUtils::translate(ddate, "-", " "); scanTime(data.deactivationDate, ddate, "%Y %m %d"); } // It's not a good way!!! data.launchDate.setTimeSystem(TimeSystem::Any); data.deactivationDate.setTimeSystem(TimeSystem::Any); // Insert data in data map setData(sat, data); } // End of try block catch (EndOfFile& e) { // Close this data stream (*this).close(); return; } catch (...) { // Close this data stream (*this).close(); return; } } // End of while(1) } // End of method 'SatDataReader::loadData()'