static void do_save() { rlPcontrol *item; char name[100]; //printf("%s",interpreter.line); interpreter.line[0] = '\0'; center.lock(); for(int irow=FIRST_ROW; spreadsheat.exists(irow,1); irow++) { rlstrncpy(name,spreadsheat.text(T_name,irow),sizeof(name)-1); if(name[0] > 0) { item = processlist; while(item != NULL) { if(strcmp(name,item->processName()) == 0) { #ifdef __VMS spreadsheat.printf(T_pid,irow,"%x",item->pid()); #else spreadsheat.printf(T_pid,irow,"%ld",item->pid()); #endif spreadsheat.printf(T_time,irow,item->processTime()->getTimeString()); } item = item->getNext(); } } } spreadsheat.write(SPREADSHEAT_FILE); center.unlock(); processes_have_been_modified = 0; }
//------------------------------------------------------------------------ int rlvsnprintf(char *text, int len, const char *format, va_list ap) { int ret; #ifdef RLWIN32 if(format == NULL || format[0] == '\0') { text[0] = '\0'; return 1; } ret = _vsnprintf(text, len, format, ap); #endif #ifdef __VMS static char vms_is_deprecated[rl_PRINTF_LENGTH]; if(format == NULL || format[0] == '\0') { text[0] = '\0'; return 1; } ret = vsprintf(vms_is_deprecated, format, ap); rlstrncpy(text,vms_is_deprecated,len); #endif #ifdef RLUNIX if(format == NULL || format[0] == '\0') { text[0] = '\0'; return 1; } ret = vsnprintf(text, len, format, ap); #endif return ret; }
static void do_remove() { char candidate_name[100],name[100]; long pid; interpreter.copyStringParam(candidate_name,0); center.lock(); for(int irow=FIRST_ROW; spreadsheat.exists(irow,1); irow++) { rlstrncpy(name,spreadsheat.text(T_name,irow), sizeof(name)-1); if(strcmp(name,candidate_name) == 0) { #ifdef __VMS sscanf(spreadsheat.text(T_pid,irow),"%x",&pid); #else sscanf(spreadsheat.text(T_pid,irow),"%ld",&pid); #endif spreadsheat.printf(T_state, irow,""); spreadsheat.printf(T_pid, irow,""); spreadsheat.printf(T_name, irow,""); spreadsheat.printf(T_credit, irow,""); spreadsheat.printf(T_interval, irow,""); spreadsheat.printf(T_priority, irow,""); spreadsheat.printf(T_startup_command,irow,""); spreadsheat.printf(T_input, irow,""); spreadsheat.printf(T_output, irow,""); spreadsheat.printf(T_error, irow,""); spreadsheat.printf(T_initial_credit, irow,""); spreadsheat.printf(T_time, irow,""); break; } } center.unlock(); do_reload(1); }
static void do_reload(int write_flag) { char name[100]; //printf("%s",interpreter.line); interpreter.line[0] = '\0'; center.lock(); if(write_flag) { spreadsheat.write(SPREADSHEAT_FILE); } spreadsheat.read(SPREADSHEAT_FILE); set_header(); for(int irow=FIRST_ROW; spreadsheat.exists(irow,1); irow++) { rlstrncpy(name,spreadsheat.text(T_name,irow),sizeof(name)-1); if(name[0] > 0) { spreadsheat.printf(T_credit,irow,"%s",spreadsheat.text(T_initial_credit,irow)); } } construct_processlist(); center.unlock(); }
static void construct_processlist() { long pid; rlPcontrol *item; char name[100]; for(int irow=FIRST_ROW; spreadsheat.exists(irow,1); irow++) { pid = 0; #ifdef __VMS sscanf(spreadsheat.text(T_pid,irow),"%x",&pid); #else sscanf(spreadsheat.text(T_pid,irow),"%ld",&pid); #endif rlstrncpy(name, spreadsheat.text(T_name,irow),sizeof(name)-1); if(name[0] > 0) { if(processlist == NULL) { processlist = new rlPcontrol(); item = processlist; } else item = processlist->addNew(); item->setStartupCommand(spreadsheat.text(T_startup_command,irow), name); if(pid > 0) item->setPID(pid); item->processTime()->setTimeFromString(spreadsheat.text(T_time,irow)); item->setPriority (atoi(spreadsheat.text(T_priority,irow))); #ifdef __VMS item->setInput (spreadsheat.text(T_input,irow)); item->setOutput (spreadsheat.text(T_output,irow)); item->setError (spreadsheat.text(T_error,irow)); #endif } } }
//------------------------------------------------------------------------ int rlsnprintf(char *text, int len, const char *format, ...) { int ret; va_list ap; va_start(ap,format); #ifdef RLWIN32 ret = _vsnprintf(text, len, format, ap); #endif #ifdef __VMS static char vms_is_deprecated[rl_PRINTF_LENGTH]; ret = vsprintf(vms_is_deprecated, format, ap); rlstrncpy(text,vms_is_deprecated,len); #endif #ifdef RLUNIX ret = vsnprintf(text, len, format, ap); #endif va_end(ap); return ret; }
void rlEventLogServer::putEvent(const char *event) { mutex.lock(); front++; if(front >= rlMAX_MESSAGES) front = 0; rlstrncpy(&memory[front*rlMAX_EVENT],event,rlMAX_EVENT-1); if(fp == NULL && filename != NULL) { char name[1024],time[50]; rlTime t; t.getLocalTime(); strcpy(time,t.getTimeString()); time[10] = '_'; time[13] = '_'; time[16] = '\0'; strcpy(name,filename); strcat(name,time); strcat(name,".rlEventLog"); //printf("openEventlog(%s)\n",name); #ifdef __VMS fp = (void *) fopen(name,"w","shr=get"); #else fp = (void *) fopen(name,"w"); #endif } if(fp != NULL && filename != NULL) { fprintf((FILE *) fp,"%s",event); fflush((FILE *) fp); num_events++; } if(num_events > max_events && filename != NULL) { num_events = 0; fclose((FILE *) fp); fp = NULL; } mutex.unlock(); }
int rlBussignalDatabase::writeDatabaseString(const char *item, char *val) { sprintf(typebuf,"S%d",strlen(val)); rlstrncpy(buf,val,sizeof(buf)-1); return writeDatabaseString(item); }
static void start_if_missing(int row) { char name[MAX_EVENT_LENGTH]; char state[MAX_EVENT_LENGTH]; rlPcontrol *item; int credit; rlstrncpy(state,spreadsheat.text(T_state,row),sizeof(state)-1); if(strcmp(state,STATE_INACTIVE) == 0) return; rlstrncpy(name,spreadsheat.text(T_name,row),sizeof(name)-1); if(name[0] <= ' ') return; item = processlist; while(item != NULL) { if(strcmp(name,item->processName()) == 0) { if(item->isAlive()) return; // nothing to do credit = 0; sscanf(spreadsheat.text(T_credit,row),"%d",&credit); if(credit > 0 || credit == -1) { item->setPriority(atoi(spreadsheat.text(T_priority,row))); item->start(); // restart spreadsheat.printf(T_state,row,STATE_ACTIVE); } if(credit == 0) spreadsheat.printf(T_state,row,STATE_MISSING); if(credit > 0) credit--; if(credit == 0 && strcmp(STATE_MISSING,spreadsheat.text(T_state,row)) == 0) { int interval = 0; timediff = now - *item->processTime(); sscanf(spreadsheat.text(T_interval,row),"%d",&interval); if(timediff.hour >= interval) { spreadsheat.printf(T_credit,row,"%s",spreadsheat.text(T_initial_credit,row)); } } spreadsheat.printf(T_credit,row,"%d",credit); spreadsheat.printf(T_time,row,item->processTime()->getTimeString()); processes_have_been_modified = 1; return; } item = item->getNext(); } // not found in processlist -> append to processlist and start if(processlist == NULL) { processlist = new rlPcontrol(); item = processlist; } else item = processlist->addNew(); item->setStartupCommand(spreadsheat.text(T_startup_command,row), name); item->setPriority (atoi(spreadsheat.text(T_priority,row))); #ifdef __VMS item->setInput (spreadsheat.text(T_input,row)); item->setOutput (spreadsheat.text(T_output,row)); item->setError (spreadsheat.text(T_error,row)); #endif credit = 0; sscanf(spreadsheat.text(T_credit,row),"%d",&credit); if(credit > 0) credit--; spreadsheat.printf(T_credit,row,"%d",credit); item->start(); spreadsheat.printf(T_state,row,STATE_ACTIVE); spreadsheat.printf(T_time,row,item->processTime()->getTimeString()); processes_have_been_modified = 1; }