Example #1
0
void convert_str_to_myListGA(char* parsed_cfg_str, listGroupAddr *myListGA, int index_gaddr)
{
    const char s[3] = CMD_STRING_DELIMITER; // Разделитель параметров в строке
    char *token; // Выделяемая подстрока


    token = strtok(parsed_cfg_str, s); // Первый токен - строка
    strcpy(myListGA[index_gaddr].group_addr, token);
    myListGA[index_gaddr].group_addr_in_hex = readgaddr((myListGA[index_gaddr].group_addr));

    token = strtok(NULL, s);
    myListGA[index_gaddr].value = atoi(token);

    token = strtok(NULL, s);
    strcpy(myListGA[index_gaddr].send_to_ip, token);

    token = strtok(NULL, s);
    myListGA[index_gaddr].send_to_port = atoi(token);
// Начинаем формировать строку команды из распарсиваемой строки из файла
    strcpy(myListGA[index_gaddr].cmd_string, "");// Вначале очищаем строку команды
    token = strtok(NULL, s); // Копируем первый токен команды (как минимум одна команда должна быть)
    while( token != NULL ) {
        if(strncmp(token, "<LF>", 4) == 0) // Если полученный токен это служебный символ CR или LF, то дописываем его в строку команды
            strcat(myListGA[index_gaddr].cmd_string, "\n");
        else if(strncmp(token, "<CR>", 4) == 0)
            strcat(myListGA[index_gaddr].cmd_string, "\r");
        else if(strncmp(token, "<EL>", 4) == 0); // Просто пропускаем чтобы исключить попадание 0x0A в конец строки
        else                              // Иначе дописываем токен в строку команды как есть
            strcat(myListGA[index_gaddr].cmd_string, token);
        token = strtok(NULL, s); // Читаем следующий токен
    }
}
Example #2
0
int
main (int ac, char *ag[])
{
  int len;
  EIBConnection *con;
  eibaddr_t dest;
  uchar buf[255] = { 0, 0x80 };

  if (ac < 4)
    die ("usage: %s url eibaddr val val ...", ag[0]);
  con = EIBSocketURL (ag[1]);
  if (!con)
    die ("Open failed");
  dest = readgaddr (ag[2]);
  len = readBlock (buf + 2, sizeof (buf) - 2, ac - 3, ag + 3);

  if (EIBOpen_GroupSocket (con, 1) == -1)
    die ("Connect failed");

  len = EIBSendGroup (con, dest, 2 + len, buf);
  if (len == -1)
    die ("Request failed");
  printf ("Send request\n");

  EIBClose (con);
  return 0;
}
Example #3
0
// read parameters
void readParseCGI()
{
  char* params;
  char* value;
  char *valuepairs[MAX_GA];
  char *cgistr;
  int i=0,j=0;
  cgistr = parseRequest();
  if(cgistr == NULL)
    cgidie ("No data");
  hex2ascii(cgistr);
  params=strtok(cgistr,"&");
  while( params != NULL && i < MAX_GA)
  {
      valuepairs[i] = (char *)malloc(strlen(params)+1);
      if(valuepairs[i] == NULL)
         return;
      valuepairs[i] = params;
      params=strtok(NULL,"&");
      i++;
  }
  while (i > j)
  {
      value=strtok(valuepairs[j],"=");
      if ( value != NULL )
      {
          if (strcmp (value,"url") == 0)
          {
            value=strtok(NULL,"=");
#ifdef BETA
            if ( value != NULL )
                 *eiburl = (char *) strdup(value);
/* FIXME: Security - define url from ENV - Parameter only for devel */
#endif
          }
          else if (strcmp (value,"a") == 0)
          {
            value=strtok(NULL,"=");
            if (value==NULL)
        	break;
            if (isNumeric(value))
              gadest=atoi(value);
            else
              gadest=readgaddr(value);
          }
          else if (strcmp (value,"d") == 0)
          {
            value=strtok(NULL,"=");
            if (isNumeric(value))
            {
              dpt=atoi(value);
            }
          }
          else if (strcmp (value,"v") == 0)
          {
            value=strtok(NULL,"=");
            if ( value != NULL && strlen(value)<50 )
              strcpy(data,value);
          }
          else
          {
            //printf ("Unknown param %s\n",value); //debug
          }

      }
      j++;
  }
}