Example #1
0
/** \brief Load an individual freesat data file
 *
 *  \param tableid   - Table id that should be loaded
 *  \param filename  - Filename to load
 */
static void load_file(int tableid, char *filename)
{
    char     buf[1024];
    char    *from, *to, *binary;
    FILE    *fp;

    tableid--;

    if ( ( fp = fopen(filename,"r") ) != NULL ) {
        isyslog("Loading table %d Filename <%s>",tableid + 1, filename);

        while ( fgets(buf,sizeof(buf),fp) != NULL ) {
            from = binary = to = NULL;
            int elems = sscanf(buf,"%a[^:]:%a[^:]:%a[^:]:", &from, &binary, &to);
            if ( elems == 3 ) {
                int bin_len = strlen(binary);
                int from_char = resolve_char(from);
                char to_char = resolve_char(to);
                unsigned long bin = decode_binary(binary);
                int i = table_size[tableid][from_char]++;

                tables[tableid][from_char] = (struct hufftab *)realloc(tables[tableid][from_char], (i+1) * sizeof(tables[tableid][from_char][0]));
                tables[tableid][from_char][i].value = bin;
                tables[tableid][from_char][i].next = to_char;
                tables[tableid][from_char][i].bits = bin_len;
                free(from);
                free(to);
                free(binary);
            }
        }
    } else {
        isyslog("Cannot load <%s> for table %d",filename,tableid + 1);
    }
}
Example #2
0
void
erl_lua_pushlstring(lua_drv_t *driver_data, char *buf, int index)
{
  char *str;
  int len;

  str = decode_binary(buf, &index, &len);

  lua_pushlstring(driver_data->L, str, len);

  reply_ok(driver_data);
  free(str);
}
Example #3
0
void
erl_lual_dostring(lua_drv_t *driver_data, char *buf, int index)
{
  char *code;
  int len;

  code = decode_binary(buf, &index, &len);
  code[len] = '\0';

  if (!luaL_dostring(driver_data->L, code))
    reply_ok(driver_data);
  else
    reply_throw(driver_data, lua_tostring(driver_data->L, -1));
  free(code);
}