Exemple #1
0
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;
}
Exemple #2
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;
}
Exemple #3
0
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);
}
Exemple #4
0
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();
}
Exemple #5
0
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
    }
  }
}
Exemple #6
0
//------------------------------------------------------------------------
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;
}
Exemple #7
0
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);
}
Exemple #9
0
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;
}