Пример #1
0
s32 build_deps (dictionary *dict, s32 A, s32 B, char *refstr, ocrMappable_t ***all_instances, ocrParamList_t ***inst_params) {
    s32 i, j, k;
    s32 low, high;
    s32 l, h;

    for (i = 0; i < iniparser_getnsec(dict); i++) {
        // Go thru the secnames looking for instances of A
        if (strncasecmp(inst_str[A], iniparser_getsecname(dict, i), strlen(inst_str[A]))==0) {
            // For each secname, look up corresponding instance of A through id
            read_range(dict, iniparser_getsecname(dict, i), "id", &low, &high);
            for (j = low; j <= high; j++) {
                // Parse corresponding dependences from secname
                read_range(dict, iniparser_getsecname(dict, i), refstr, &l, &h);
                // Connect A with B
                // Using a rough heuristic for now: if |from| == |to| then 1:1, else all:all TODO: What else makes sense here?
                if (h-l == high-low) {
                    k = l+j-low;
                    add_dependence(A, B, all_instances[A][j], inst_params[A][j], all_instances[B][k], inst_params[B][k], 0, 1);
                } else {
                    for (k = l; k <= h; k++) {
                        add_dependence(A, B, all_instances[A][j], inst_params[A][j], all_instances[B][k], inst_params[B][k], k-l, h-l+1);
                    }
                }
            }
        }
    }
    return 0;
}
Пример #2
0
void Test_iniparser_getsecname(CuTest *tc)
{
    unsigned i;
    char sec_name[32];
    dictionary *dic;
    /* NULL test */
    CuAssertTrue(tc, iniparser_getsecname(NULL, 0) == NULL);

    /* Empty dictionary */
    dic = dictionary_new(10);
    CuAssertPtrEquals(tc, NULL, iniparser_getsecname(dic, 0));
    dictionary_del(dic);

    /* Sections without entries dictionary */
    dic = generate_dictionary(100, 0);
    for (i = 0; i < 100; ++i) {
        sprintf(sec_name, "sec%d", i);
        CuAssertStrEquals(tc, sec_name, iniparser_getsecname(dic, i));
    }
    dictionary_del(dic);

    /* Generic dictionary */
    dic = generate_dictionary(10, 100);
    for (i = 0; i < 10; ++i) {
        sprintf(sec_name, "sec%d", i);
        CuAssertStrEquals(tc, sec_name, iniparser_getsecname(dic, i));
    }
    dictionary_del(dic);
}
Пример #3
0
DialogRecepti::DialogRecepti(QWidget *parent) :    QDialog(parent),    ui(new Ui::DialogRecepti)
{
    ui->setupUi(this);

    ui->listWidget->setSelectionMode(QAbstractItemView::SingleSelection);

    connect(ui->btnOpenFile,SIGNAL(clicked()),this,SLOT(onOpenFile()));
    connect(ui->btnExit,SIGNAL(clicked()),this,SLOT(onExit()));

    char * fn = new char[40];
    strcpy(fn,"/sdcard/recepti/recepti.bet");
    dict = iniparser_load(fn);
    if(dict == NULL)
    {
        QMessageBox::information(this,"iniparser library",QString("Failed to load dictionary from file:\n%1").arg(fn));
        return;
    }

    int n = iniparser_getnsec(dict);
    //QMessageBox::information(this,QString("iniparser"),QString("%1 sections found from file: %2").arg(n).arg(fn));
    if(n>0)
    {
        for(int i =0 ; i<n ; i++)
        {
            QString str(iniparser_getsecname(dict,i));
            ui->listWidget->addItem(str.toUpper());
        }
        ui->listWidget->item(0)->setSelected(true);
    }
}
void parseFile()
{
	char key[MAX_KEY_SIZE];
	int i;
	taskCount = iniparser_getnsec(file);
	tasks = (iniTask*) malloc(sizeof(iniTask) * taskCount);
	
	for(i = 0; i < taskCount; ++i) {
		sprintf(tasks[i].secname, "%s", iniparser_getsecname(file, i));
		
		sprintf(key, "%s:%s", tasks[i].secname, T_E_MAX);
		tasks[i].tEMax = iniparser_getdouble(file, key, 0);
		
		sprintf(key, "%s:%s", tasks[i].secname, T_D_MAX);
		tasks[i].tDMax = iniparser_getdouble(file, key, 0);
		
		sprintf(key, "%s:%s", tasks[i].secname, T_P_MIN);
		tasks[i].tPMin = iniparser_getdouble(file, key, 0);
		
		sprintf(key, "%s:%s", tasks[i].secname, T_B);
		tasks[i].tB = iniparser_getdouble(file, key, 0);
		
		sprintf(key, "%s:%s", tasks[i].secname, PRIORITY);
		tasks[i].prio = iniparser_getint(file, key, 0);
	}
}
Пример #5
0
/*--------------------------------------------------------------------------*/
void iniparser_dump_ini(const dictionary * d, FILE * f)
{
    int          i ;
    int          nsec ;
    const char * secname ;

    if (d==NULL || f==NULL) return ;

    nsec = iniparser_getnsec(d);
    if (nsec<1) {
        /* No section in file: dump all keys as they are */
        for (i=0 ; i<d->size ; i++) {
            if (d->key[i]==NULL)
                continue ;
            fprintf(f, "%s = %s\n", d->key[i], d->val[i]);
        }
        return ;
    }
    for (i=0 ; i<nsec ; i++) {
        secname = iniparser_getsecname(d, i) ;
        iniparser_dumpsection_ini(d, secname, f);
    }
    fprintf(f, "\n");
    return ;
}
Пример #6
0
char* DeviceFunctionCfg_GetField( int FunctionNumber, char* FieldName, char* DeviceCfgPath )
{
  char* ret = NULL;
  char* Section = NULL;
  char* Newline;
  dictionary* Dict = iniparser_load( DeviceCfgPath );
  Section = iniparser_getsecname( Dict, FunctionNumber );  
  ret = iniparser_getsecstring( Dict, Section, FieldName, NULL ) ;
  if( ret != NULL )
  {
    Newline = strstr(ret, "\\n");
    while( Newline != NULL )
    {
      if( *( Newline-1 ) != '\\' )
      {
	*Newline = ' '; 
	*(Newline+1) = '\n';
      }
      Newline = strstr(ret, "\\n");
    }
    ret = strdup( ret );
  }
 
  iniparser_freedict( Dict );
  return ret; 

}
Пример #7
0
static int mod_init(void)
{
	int ld_count = 0, i = 0;
	char* section_name;
	char* ldap_version;

	LM_INFO("LDAP_H350 module - initializing\n");

	/*
	* read config file
	*/
	if (strlen(ldap_config.s) == 0)
	{
		LM_ERR("config_file is empty - this module param is mandatory\n");
		return -2;
	}
	if ((config_vals = iniparser_new(ldap_config.s)) == NULL)
	{
		LM_ERR("failed to read config_file [%s]\n", ldap_config.s);
		return -2;
	}
	if ((ld_count = iniparser_getnsec(config_vals)) < 1)
	{
		LM_ERR("no section found in config_file [%s]\n", ldap_config.s);
		return -2;
	}
	/* check if mandatory settings are present */
	for (i = 0; i < ld_count; i++)
	{
		section_name = iniparser_getsecname(config_vals, i);
		if (strlen(section_name) > 255)
		{
			LM_ERR(	"config_file section name [%s]"
				" longer than allowed 255 characters",
				section_name);
			return -2;
		}
		if (!iniparser_find_entry(config_vals,
					get_ini_key_name(section_name, CFG_N_LDAP_HOST)))
		{
			LM_ERR(	"mandatory %s not defined in [%s]\n",
				CFG_N_LDAP_HOST,
				section_name);
			return -2;
		}
	}

	/*
	* print ldap version string
	*/
	if (ldap_get_vendor_version(&ldap_version) != 0)
	{
		LM_ERR("ldap_get_vendor_version failed\n");
		return -2;
	}
	LM_INFO("%s\n", ldap_version);

	return 0;
}
Пример #8
0
/* Load layer configurations from disk */
bool buxton_init_layers(void)
{
	bool ret = false;
	dictionary *ini;
	char *path;
	int nlayers = 0;

	path = DEFAULT_CONFIGURATION_FILE;

	ini = iniparser_load(path);
	if (ini == NULL) {
		buxton_log("Failed to load buxton conf file: %s\n", path);
		goto finish;
	}

	nlayers = iniparser_getnsec(ini);
	if (nlayers <= 0) {
		buxton_log("No layers defined in buxton conf file: %s\n", path);
		goto end;
	}

	_layers = hashmap_new(string_hash_func, string_compare_func);
	if (!_layers)
		goto end;

	for (int n = 0; n < nlayers; n++) {
		BuxtonLayer *layer;
		char *section_name;

		layer = malloc0(sizeof(BuxtonLayer));
		if (!layer)
			continue;

		section_name = iniparser_getsecname(ini, n);
		if (!section_name) {
			buxton_log("Failed to find section number: %d\n", n);
			continue;
		}

		if (!parse_layer(ini, section_name, layer)) {
			free(layer);
			buxton_log("Failed to load layer: %s\n", section_name);
			continue;
		}
		hashmap_put(_layers, layer->name, layer);
	}
	ret = true;

end:
	iniparser_freedict(ini);
finish:
	return ret;
}
Пример #9
0
static int VdecVdis_getCfgArray(dictionary *ini, VdecVdis_Config *cfg)
{
    UInt32 totalChnlNum,i;
    char temp[256];
    char *name;

    totalChnlNum = iniparser_getnsec(ini);

    cfg->fileNum = totalChnlNum;
    
    printf(" *** a new param codec is needed for ini, if you not sure about this\n");
    printf(" *** please reference demo_ini/704x576_02_32CH.ini \n");
    printf(" *** H264:  codec = h264\n");
    printf(" *** MPEG4: codec = mpeg4\n");
    printf(" *** MJPEG: codec = mjpeg\n");

    printf(" *** Two new params numbuf & displaydelay has been added for ini, if not defaults are set\n");

    for (i = 0; i < totalChnlNum; i++)
    {
        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_PATH);
        name = iniparser_getstring(ini,temp,NULL);
        strcpy(cfg->fileInfo[i].path,name);

        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_WIDTH);
        cfg->fileInfo[i].width = iniparser_getint(ini,temp,0);

        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_HEIGHT);
        cfg->fileInfo[i].height = iniparser_getint(ini,temp,0);

        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_ENABLE);
        cfg->fileInfo[i].enable = iniparser_getboolean(ini,temp,1);

        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_CODEC);
        name = iniparser_getstring(ini,temp,NULL);
        if(name != NULL )
            strcpy(cfg->fileInfo[i].codec,name);

        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_NUMBUF);
        cfg->fileInfo[i].numbuf = iniparser_getint(ini,temp,0);

        name = iniparser_getsecname(ini,i);
        sprintf(temp,"%s:%s",name,MCFW_IPC_BITS_INI_FILE_DISPLAYDELAY);
        cfg->fileInfo[i].displaydelay = iniparser_getint(ini,temp,0);

    }

    return 0;
}
Пример #10
0
/*--------------------------------------------------------------------------*/
int _get_sections()
{
	int i;
	if ((section_list->count = iniparser_getnsec(ini)) == -1){
		write_to_log(WARNING, "%s - %d - %s", __LINE__, __func__, "Unable to count config sections");
		return -1;
	}
	for(i = 0; i < section_list->count; i++) {
		TSection* node = malloc(sizeof(struct section));
		node->section_name = iniparser_getsecname(ini, i);
		_get_keys(node);
		if (section_list->first == NULL) {
			section_list->first = node;
		} else {
			TSection *tmp = section_list->first;
			section_list->first = node;
			section_list->first->next = tmp;
		}
	}
	return 0; 
}
Пример #11
0
/*--------------------------------------------------------------------------*/
void iniparser_dump_ini(dictionary * d, FILE * f)
{
    int     i, j ;
    char    keym[ASCIILINESZ+1];
    int     nsec ;
    char *  secname ;
    int     seclen ;

    if (d==NULL || f==NULL) return ;

    nsec = iniparser_getnsec(d);
    if (nsec<1) {
        /* No section in file: dump all keys as they are */
        for (i=0 ; i<d->size ; i++) {
            if (d->key[i]==NULL)
                continue ;
            fprintf(f, "%s = %s\n", d->key[i], d->val[i]);
        }
        return ;
    }
    for (i=0 ; i<nsec ; i++) {
        secname = iniparser_getsecname(d, i) ;
        seclen  = (int)strlen(secname);
        fprintf(f, "\n[%s]\n", secname);
        sprintf(keym, "%s:", secname);
        for (j=0 ; j<d->size ; j++) {
            if (d->key[j]==NULL)
                continue ;
            if (!strncmp(d->key[j], keym, seclen+1)) {
                fprintf(f,
                        "%-30s = %s\n",
                        d->key[j]+seclen+1,
                        d->val[j] ? d->val[j] : "");
            }
        }
    }
    fprintf(f, "\n");
    return ;
}
Пример #12
0
static int child_init(int rank)
{
	int i = 0, ld_count = 0;
	char* ld_name;

	/* don't do anything for non-worker process */
	if (rank==PROC_MAIN || rank==PROC_TCP_MAIN) {
		return 0;
	}

	/*
	* build ld_sessions and connect all sessions
	*/
	ld_count = iniparser_getnsec(config_vals);
	for (i = 0; i < ld_count; i++)
	{
		ld_name = iniparser_getsecname(config_vals, i);
		if (add_ld_session(ld_name,
					NULL,
					config_vals)
				!= 0)
		{
			LM_ERR("[%s]: add_ld_session failed\n", ld_name);
			return -1;
		}

		if (ldap_connect(ld_name) != 0)
		{
			LM_ERR("[%s]: failed to connect to LDAP host(s)\n", ld_name);
			ldap_disconnect(ld_name);
			return -1;
		}

	}

	return 0;
}
Пример #13
0
int main(int argc, char **argv)
{
    int fd, i, j, k;

    int c;
    int foreground=0;
    int active_slave=0;
    int log_options;
    char config_file_name[PATH_MAX] = RENDERD_CONFIG;

    while (1) {
        int option_index = 0;
        static struct option long_options[] = {
            {"config", 1, 0, 'c'},
            {"foreground", 1, 0, 'f'},
            {"slave", 1, 0, 's'},
            {"help", 0, 0, 'h'},
            {0, 0, 0, 0}
        };

        c = getopt_long(argc, argv, "hfc:", long_options, &option_index);
        if (c == -1)
            break;

        switch (c) {
            case 'f':
                foreground=1;
                break;
            case 'c':
                strncpy(config_file_name, optarg, PATH_MAX-1);
                config_file_name[PATH_MAX-1] = 0;
                break;
            case 's':
                if (sscanf(optarg, "%i", &active_slave) != 1) {
                    fprintf(stderr, "--slave needs to be nummeric (%s)\n", optarg);
                    active_slave = 0;
                }
                break;
            case 'h':
                fprintf(stderr, "Usage: renderd [OPTION] ...\n");
                fprintf(stderr, "Mapnik rendering daemon\n");
                fprintf(stderr, "  -f, --foreground     run in foreground\n");
                fprintf(stderr, "  -h, --help           display this help and exit\n");
                fprintf(stderr, "  -c, --config=CONFIG  set location of config file (default /etc/renderd.conf)\n");
                fprintf(stderr, "  -s, --slave=CONFIG_NR set which render slave this is (default 0)\n");
                exit(0);
            default:
                fprintf(stderr, "unknown config option '%c'\n", c);
                exit(1);
        }
    }

    log_options = LOG_PID;
#ifdef LOG_PERROR
    if (foreground)
        log_options |= LOG_PERROR;
#endif
    openlog("renderd", log_options, LOG_DAEMON);

    syslog(LOG_INFO, "Rendering daemon started");

    pthread_mutex_init(&qLock, NULL);
    pthread_cond_init(&qCond, NULL);
    reqHead.next = reqHead.prev = &reqHead;
    reqPrioHead.next = reqPrioHead.prev = &reqPrioHead;
    reqBulkHead.next = reqBulkHead.prev = &reqBulkHead;
    dirtyHead.next = dirtyHead.prev = &dirtyHead;
    renderHead.next = renderHead.prev = &renderHead;
    hashidxSize = HASHIDX_SIZE;
    item_hashidx = (struct item_idx *) malloc(sizeof(struct item_idx) * hashidxSize);
    bzero(item_hashidx, sizeof(struct item_idx) * hashidxSize);

    stats.noDirtyRender = 0;
    stats.noReqDroped = 0;
    stats.noReqRender = 0;
    stats.noReqPrioRender = 0;
    stats.noReqBulkRender = 0;

    xmlconfigitem maps[XMLCONFIGS_MAX];
    bzero(maps, sizeof(xmlconfigitem) * XMLCONFIGS_MAX);

    renderd_config config_slaves[MAX_SLAVES];
    bzero(config_slaves, sizeof(renderd_config) * MAX_SLAVES);
    bzero(&config, sizeof(renderd_config));

    dictionary *ini = iniparser_load(config_file_name);
    if (! ini) {
        exit(1);
    }

    noSlaveRenders = 0;

    int iconf = -1;
    char buffer[PATH_MAX];
    for (int section=0; section < iniparser_getnsec(ini); section++) {
        char *name = iniparser_getsecname(ini, section);
        syslog(LOG_INFO, "Parsing section %s\n", name);
        if (strncmp(name, "renderd", 7) && strcmp(name, "mapnik")) {
            if (config.tile_dir == NULL) {
                fprintf(stderr, "No valid (active) renderd config section available\n");
                exit(7);
            }
            /* this is a map section */
            iconf++;
            if (iconf >= XMLCONFIGS_MAX) {
                fprintf(stderr, "Config: more than %d configurations found\n", XMLCONFIGS_MAX);
                exit(7);
            }

            if (strlen(name) >= (XMLCONFIG_MAX - 1)) {
                fprintf(stderr, "XML name too long: %s\n", name);
                exit(7);
            }

            strcpy(maps[iconf].xmlname, name);
            
            sprintf(buffer, "%s:uri", name);
            char *ini_uri = iniparser_getstring(ini, buffer, (char *)"");
            if (strlen(ini_uri) >= (PATH_MAX - 1)) {
                fprintf(stderr, "URI too long: %s\n", ini_uri);
                exit(7);
            }
            strcpy(maps[iconf].xmluri, ini_uri);

            sprintf(buffer, "%s:xml", name);
            char *ini_xmlpath = iniparser_getstring(ini, buffer, (char *)"");
            if (strlen(ini_xmlpath) >= (PATH_MAX - 1)){
                fprintf(stderr, "XML path too long: %s\n", ini_xmlpath);
                exit(7);
            }
            strcpy(maps[iconf].xmlfile, ini_xmlpath);

            sprintf(buffer, "%s:host", name);
            char *ini_hostname = iniparser_getstring(ini, buffer, (char *) "");
            if (strlen(ini_hostname) >= (PATH_MAX - 1)) {
                fprintf(stderr, "Host name too long: %s\n", ini_hostname);
                exit(7);
            }
            strcpy(maps[iconf].host, ini_hostname);

            sprintf(buffer, "%s:htcphost", name);
            char *ini_htcpip = iniparser_getstring(ini, buffer, (char *) "");
            if (strlen(ini_htcpip) >= (PATH_MAX - 1)) {
                fprintf(stderr, "HTCP host name too long: %s\n", ini_htcpip);
                exit(7);
            }
            strcpy(maps[iconf].htcpip, ini_htcpip);

            sprintf(buffer, "%s:tilesize", name);
            char *ini_tilesize = iniparser_getstring(ini, buffer, (char *) "256");
            maps[iconf].tile_px_size = atoi(ini_tilesize);
            if (maps[iconf].tile_px_size < 1) {
                fprintf(stderr, "Tile size is invalid: %s\n", ini_tilesize);
                exit(7);
            }

            sprintf(buffer, "%s:tiledir", name);
            char *ini_tiledir = iniparser_getstring(ini, buffer, (char *) config.tile_dir);
            if (strlen(ini_tiledir) >= (PATH_MAX - 1)) {
                fprintf(stderr, "Tiledir too long: %s\n", ini_tiledir);
                exit(7);
            }
            strcpy(maps[iconf].tile_dir, ini_tiledir);
        } else if (strncmp(name, "renderd", 7) == 0) {
            int render_sec = 0;
            if (sscanf(name, "renderd%i", &render_sec) != 1) {
                render_sec = 0;
            }
            syslog(LOG_INFO, "Parsing render section %i\n", render_sec);
            if (render_sec >= MAX_SLAVES) {
                syslog(LOG_ERR, "Can't handle more than %i render sections\n",
                        MAX_SLAVES);
                exit(7);
            }
            sprintf(buffer, "%s:socketname", name);
            config_slaves[render_sec].socketname = iniparser_getstring(ini,
                    buffer, (char *) RENDER_SOCKET);
            sprintf(buffer, "%s:iphostname", name);
            config_slaves[render_sec].iphostname = iniparser_getstring(ini,
                    buffer, "");
            sprintf(buffer, "%s:ipport", name);
            config_slaves[render_sec].ipport = iniparser_getint(ini, buffer, 0);
            sprintf(buffer, "%s:num_threads", name);
            config_slaves[render_sec].num_threads = iniparser_getint(ini,
                    buffer, NUM_THREADS);
            sprintf(buffer, "%s:tile_dir", name);
            config_slaves[render_sec].tile_dir = iniparser_getstring(ini,
                    buffer, (char *) HASH_PATH);
            sprintf(buffer, "%s:stats_file", name);
            config_slaves[render_sec].stats_filename = iniparser_getstring(ini,
                    buffer, NULL);

            if (render_sec == active_slave) {
                config.socketname = config_slaves[render_sec].socketname;
                config.iphostname = config_slaves[render_sec].iphostname;
                config.ipport = config_slaves[render_sec].ipport;
                config.num_threads = config_slaves[render_sec].num_threads;
                config.tile_dir = config_slaves[render_sec].tile_dir;
                config.stats_filename
                        = config_slaves[render_sec].stats_filename;
                config.mapnik_plugins_dir = iniparser_getstring(ini,
                        "mapnik:plugins_dir", (char *) MAPNIK_PLUGINS);
                config.mapnik_font_dir = iniparser_getstring(ini,
                        "mapnik:font_dir", (char *) FONT_DIR);
                config.mapnik_font_dir_recurse = iniparser_getboolean(ini,
                        "mapnik:font_dir_recurse", FONT_RECURSE);
            } else {
                noSlaveRenders += config_slaves[render_sec].num_threads;
            }
        }
    }

    if (config.ipport > 0) {
        syslog(LOG_INFO, "config renderd: ip socket=%s:%i\n", config.iphostname, config.ipport);
    } else {
        syslog(LOG_INFO, "config renderd: unix socketname=%s\n", config.socketname);
    }
    syslog(LOG_INFO, "config renderd: num_threads=%d\n", config.num_threads);
    if (active_slave == 0) {
        syslog(LOG_INFO, "config renderd: num_slaves=%d\n", noSlaveRenders);
    }
    syslog(LOG_INFO, "config renderd: tile_dir=%s\n", config.tile_dir);
    syslog(LOG_INFO, "config renderd: stats_file=%s\n", config.stats_filename);
    syslog(LOG_INFO, "config mapnik:  plugins_dir=%s\n", config.mapnik_plugins_dir);
    syslog(LOG_INFO, "config mapnik:  font_dir=%s\n", config.mapnik_font_dir);
    syslog(LOG_INFO, "config mapnik:  font_dir_recurse=%d\n", config.mapnik_font_dir_recurse);
    for (i = 0; i < MAX_SLAVES; i++) {
        if (config_slaves[i].num_threads == 0) {
            continue;
        }
        if (i == active_slave) {
            syslog(LOG_INFO, "config renderd(%i): Active\n", i);
        }
        if (config_slaves[i].ipport > 0) {
                syslog(LOG_INFO, "config renderd(%i): ip socket=%s:%i\n", i,
                        config_slaves[i].iphostname, config_slaves[i].ipport);
            } else {
                syslog(LOG_INFO, "config renderd(%i): unix socketname=%s\n", i,
                        config_slaves[i].socketname);
            }
        syslog(LOG_INFO, "config renderd(%i): num_threads=%d\n", i,
                config_slaves[i].num_threads);
        syslog(LOG_INFO, "config renderd(%i): tile_dir=%s\n", i,
                config_slaves[i].tile_dir);
        syslog(LOG_INFO, "config renderd(%i): stats_file=%s\n", i,
                config_slaves[i].stats_filename);
    }

    for(iconf = 0; iconf < XMLCONFIGS_MAX; ++iconf) {
        if (maps[iconf].xmlname[0] != 0) {
         syslog(LOG_INFO, "config map %d:   name(%s) file(%s) uri(%s) htcp(%s) host(%s)",
                 iconf, maps[iconf].xmlname, maps[iconf].xmlfile, maps[iconf].xmluri,
                 maps[iconf].htcpip, maps[iconf].host);
        }
    }

    fd = server_socket_init(&config);
#if 0
    if (fcntl(fd, F_SETFD, O_RDWR | O_NONBLOCK) < 0) {
        fprintf(stderr, "setting socket non-block failed\n");
        close(fd);
        exit(5);
    }
#endif

    //sigPipeAction.sa_handler = pipe_handler;
    sigPipeAction.sa_handler = SIG_IGN;
    if (sigaction(SIGPIPE, &sigPipeAction, NULL) < 0) {
        fprintf(stderr, "failed to register signal handler\n");
        close(fd);
        exit(6);
    }

    render_init(config.mapnik_plugins_dir, config.mapnik_font_dir, config.mapnik_font_dir_recurse);

    /* unless the command line said to run in foreground mode, fork and detach from terminal */
    if (foreground) {
        fprintf(stderr, "Running in foreground mode...\n");
    } else {
        if (daemon(0, 0) != 0) {
            fprintf(stderr, "can't daemonize: %s\n", strerror(errno));
        }
        /* write pid file */
        FILE *pidfile = fopen(PIDFILE, "w");
        if (pidfile) {
            (void) fprintf(pidfile, "%d\n", getpid());
            (void) fclose(pidfile);
        }
    }

    if (config.stats_filename != NULL) {
        if (pthread_create(&stats_thread, NULL, stats_writeout_thread, NULL)) {
            syslog(LOG_WARNING, "Could not create stats writeout thread");
        }
    } else {
        syslog(LOG_INFO, "No stats file specified in config. Stats reporting disabled");
    }

    render_threads = (pthread_t *) malloc(sizeof(pthread_t) * config.num_threads);

    for(i=0; i<config.num_threads; i++) {
        if (pthread_create(&render_threads[i], NULL, render_thread, (void *)maps)) {
            fprintf(stderr, "error spawning render thread\n");
            close(fd);
            exit(7);
        }
    }

    if (active_slave == 0) {
        //Only the master renderd opens connections to its slaves
        k = 0;
        slave_threads
                = (pthread_t *) malloc(sizeof(pthread_t) * noSlaveRenders);
        for (i = 1; i < MAX_SLAVES; i++) {
            for (j = 0; j < config_slaves[i].num_threads; j++) {
                if (pthread_create(&slave_threads[k++], NULL, slave_thread,
                        (void *) &config_slaves[i])) {
                    fprintf(stderr, "error spawning render thread\n");
                    close(fd);
                    exit(7);
                }
            }
        }
    }

    process_loop(fd);

    unlink(config.socketname);
    close(fd);
    return 0;
}
Пример #14
0
bool cWebvideoConfig::ReadConfigFile(const char *inifile) {
    dictionary *conf = iniparser_load(inifile);

    if (!conf)
        return false;

    info("loading config file %s", inifile);

    const char *templatepath = iniparser_getstring(conf, "webvi:templatepath", NULL);
    if (templatepath) {
        debug("templatepath = %s (from %s)", templatepath, inifile);
        SetTemplatePath(templatepath);
    }

    const char *vfat = iniparser_getstring(conf, "webvi:vfat", NULL);
    if (vfat) {
        debug("vfat = %s (from %s)", vfat, inifile);

        if (strcmp(vfat, "1") == 0 ||
                strcmp(vfat, "true") == 0 ||
                strcmp(vfat, "yes") == 0 ||
                strcmp(vfat, "on") == 0)
        {
            vfatNames = true;
        } else if (strcmp(vfat, "0") == 0 ||
                   strcmp(vfat, "false") == 0 ||
                   strcmp(vfat, "no") == 0 ||
                   strcmp(vfat, "off") == 0)
        {
            vfatNames = false;
        } else {
            warning("Invalid value for config option vfat: %s in %s", vfat, inifile);
        }
    }

    for (int i=0; i<iniparser_getnsec(conf); i++) {
        const char *section = iniparser_getsecname(conf, i);

        if (strcmp(section, "webvi") != 0) {
            const int maxsectionlen = 100;
            char key[128];
            char *keyname;
            const char *sitename;

            cString domain = parseDomain(section);
            if (strlen(domain) == 0)
                sitename = section;
            else
                sitename = domain;

            strncpy(key, section, maxsectionlen);
            key[maxsectionlen] = '\0';
            strcat(key, ":");
            keyname = key+strlen(key);

            strcpy(keyname, "download-min-quality");
            const char *download_min = iniparser_getstring(conf, key, NULL);

            strcpy(keyname, "download-max-quality");
            const char *download_max = iniparser_getstring(conf, key, NULL);

            strcpy(keyname, "stream-min-quality");
            const char *stream_min = iniparser_getstring(conf, key, NULL);

            strcpy(keyname, "stream-max-quality");
            const char *stream_max = iniparser_getstring(conf, key, NULL);

            if (download_min || download_max) {
                cDownloadQuality *limits = new cDownloadQuality(sitename);
                limits->SetMin(download_min);
                limits->SetMax(download_max);
                downloadLimits.Add(limits);

                debug("download priorities for %s (from %s): min = %s, max = %s",
                      sitename, inifile, download_min, download_max);
            }

            if (stream_min || stream_max) {
                cDownloadQuality *limits = new cDownloadQuality(sitename);
                limits->SetMin(stream_min);
                limits->SetMax(stream_max);
                streamLimits.Add(limits);

                debug("streaming priorities for %s (from %s): min = %s, max = %s",
                      sitename, inifile, stream_min, stream_max);
            }
        }
    }

    iniparser_freedict(conf);

    return true;
}
Пример #15
0
void populate_inverter_list(dictionary * d, struct bluetooth_inverter invs[],
                            int * inv_count, int inv_max) {

    /* Get max sections */
    int sec_count = iniparser_getnsec(d);

    /* Loop through sections */
    int sec_pos = 0;
    char *sec_name, *inv_mac, *inv_password, *inv_protocol, *inv_type;
    char key[128];
    char *sec_needle = "inverter_";
    for (sec_pos = 0; sec_pos < sec_count; ++sec_pos) {

        /* Check if Inverter Section */
        sec_name = iniparser_getsecname(d, sec_pos);
        if (strstr(sec_name, sec_needle) == sec_name) {

            /* inverter name to struct */
            strncpy(invs[*inv_count].name, sec_name + strlen(sec_needle),
                    sizeof(invs[*inv_count].name) - 1);

            /* type check */
            snprintf(key, sizeof(key) - 1, "%s:%s", sec_name, "type");
            inv_type = iniparser_getstring(d, key, "null");
            snprintf(key, sizeof(key) - 1, "%s:%s", sec_name, "protocol");
            inv_protocol = iniparser_getstring(d, key, "null");
            if (strcasecmp(inv_type, "bluetooth") == 0) {

                /* Check valid protocols */
                if (strcasecmp(inv_protocol, "smadata2plus") == 0) {

                    /* validate password */
                    snprintf(key, sizeof(key) - 1, "%s:%s", sec_name,
                             "password");
                    inv_password = iniparser_getstring(d, key, "0000");
                    if (strlen(inv_password) < 1) {
                        log_error(
                            "[Config][%s] Passwort too short: '%s'", sec_name, inv_password);
                        break;
                    } else if (strlen(inv_password) > 12) {
                        log_error(
                            "[Config][%s] Passwort too long: '%s'", sec_name, inv_password);
                        break;
                    } else {
                        memcpy(invs[*inv_count].password, inv_password, 12);
                    }

                    /* validate macaddress */
                    snprintf(key, sizeof(key) - 1, "%s:%s", sec_name,
                             "bt_address");
                    inv_mac = iniparser_getstring(d, key, "null");
                    if (str_mac_validate(inv_mac) == 0) {
                        log_error(
                            "[Config][%s] Wrong Mac Address: '%s'", sec_name, iniparser_getstring(d,key,"null"));
                        break;
                    }
                    strcpy(invs[*inv_count].macaddr, inv_mac);

                    /* Log inverter found */
                    log_info(
                        "[Config][%s] Found type='%s' protocol='%s' mac='%s' password='******'", sec_name,inv_type,inv_protocol,invs[*inv_count].macaddr,invs[*inv_count].password);

                } else {
                    log_error(
                        "[Config][%s] Invalid protocol '%s' for type '%s'", sec_name, inv_protocol, inv_type);
                    break;
                }

            } else {
                log_error("[Config][%s] Unkown type: '%s'", sec_name, inv_type);
                break;
            }

        }

    }

}
Пример #16
0
char *flib_ini_get_sectionname(flib_ini *ini, int number) {
	if(!log_badargs_if2(ini==NULL, number<0)) {
		return flib_strdupnull(iniparser_getsecname(ini->inidict, number));
	}
	return NULL;
}
Пример #17
0
// Get name for section n.
string InitParser::get_secname(int n) const
{
	if (iniparser_getsecname(dico, n)) return string(iniparser_getsecname(dico, n));
	return string();
}
/*--------------------------------------------------------------------------*/
void
iniparser_dump_ini (dictionary * d, const char * file_name)
{
    int     i, j;
    char    keym[ASCIILINESZ+1];
    int     nsec;
    char *  secname;
    int     seclen;
    FILE *  f;
    FileLock *lock;

    if (!d)
    	return;

    lock = ini_file_lock (file_name, TRUE);
    if (!lock)
	return;

    f = fdopen (lock->fd, "w");
    if (!f)
    {
	ini_file_unlock (lock);
	return;
    }

    nsec = iniparser_getnsec (d);
    if (nsec < 1)
    {
	/* No section in file: dump all keys as they are */
	for (i = 0; i < d->size; i++)
	{
	    if (!d->key[i])
		continue;
	    fprintf (f, "%s = %s\n", d->key[i], d->val[i]);
	}

	fflush (f);
	ini_file_unlock (lock);
	return;
    }

    for (i = 0; i < nsec; i++)
    {
	secname = iniparser_getsecname (d, i);
	seclen  = (int) strlen (secname);
	fprintf (f, "[%s]\n", secname);
	sprintf (keym, "%s:", secname);

	for (j = 0; j < d->size; j++)
	{
	    if (!d->key[j])
		continue;

	    if (!strncmp (d->key[j], keym, seclen + 1))
	    {
    		fprintf (f, "%s = %s\n",
		       	 d->key[j] + seclen + 1,
	    		 d->val[j] ? d->val[j] : "");
    	    }
	}

    	fprintf (f, "\n");
    }

    fflush (f);
    ini_file_unlock (lock );
}
Пример #19
0
/*************************************************************************************************************
**	@brief	:	Load all watch's in ini file 
**	#conf	: 	ini file dictionary 
**	#watch 	:	parser ini configure file data
**	@return	:	how many item in conf file 
*************************************************************************************************************/
int conf_init(dictionary *conf, P_WATCH_INFO watch, const unsigned int size)
{

	char entry[64];
	char *cp = NULL;
	unsigned int i;

	#define GET_INT_ENTRY(v, d)		do { v = iniparser_getint(conf, entry, (d)); } while(0)
	#define GET_BOOL_ENTRY(v, d)	do { v = iniparser_getboolean(conf, entry, (d)); } while(0)
	#define GET_STR_ENTRY(s, d)		do { cp  = iniparser_getstring(conf, entry, (d)); bcopy(cp, s, strlen(cp)); } while (0)
	#define FORMAT_ENTRY(s, k)		do { bzero(entry, sizeof(entry)); snprintf(entry, sizeof(entry), "%s:%s", (s), (k)); } while(0)

	/* Debug print all conf */
	if (debug){

		iniparser_dump(conf, stderr);
	}
		
	/* Get section name's */
	for (i = 0; i < size; i++){

		cp = iniparser_getsecname(conf, i);
		bcopy(cp, watch[i].name, strlen(cp));
	} 

	/* Get each of them data */	
	for (i = 0; i < size; i++){

		/* Ignore ? */
		FORMAT_ENTRY(watch[i].name, IGNORE_KEY);
		GET_BOOL_ENTRY(watch[i].ignore, 0);

		/* If ignore, do not read jump to next */
		if (watch[i].ignore){
			
			continue;	
		}

		/* Path */
		FORMAT_ENTRY(watch[i].name, PATH_KEY);
		GET_STR_ENTRY(watch[i].path, "");

		/* Check if path is dir set is_dir mark */
		watch[i].is_dir = conf_is_path_is_dir(watch[i].path);

		/* Comment */
		FORMAT_ENTRY(watch[i].name, COMMENT_KEY);
		GET_STR_ENTRY(watch[i].comment, "");

		/* Find if setting special file */
		FORMAT_ENTRY(watch[i].name, SPECIAL_KEY);
		
		/* Only dir have this option */
		if (watch[i].is_dir && iniparser_find_entry(conf, entry)){

			/* Read form ini file */
			if ((cp  = iniparser_getstring(conf, entry, ""))){
			
				/* Get special file name */
				watch[i].spc_file_cnt = conf_get_words(cp, watch[i].spc_file, MAX_SPC_FILE);
			}

		} 


		/* events */
		FORMAT_ENTRY(watch[i].name, EVENTS_KEY);
		GET_STR_ENTRY(watch[i].events_str, "");

		/* Parser events */
		watch[i].events	=	conf_parser_events(watch[i].events_str, watch[i].is_dir);

		/* Debug */
		if (debug){

			conf_print_watch(&watch[i]);
		}
	
	} /* end for */

	/* Arrange watching list */
	return conf_arrange_watch(watch, (i == size) ? size : i);
}
Пример #20
0
                       //joblist_t *BuildJoblist(char *fname)
                       joblist_t *BuildJoblist(config_t *config, dictionary *dict, joblist_t *badjob)
                       {
                       //dictionary *dict;
                       char *k, **res, *section, *token, *val;
                       charlist_t *keys;
                       char entry[BUFSIZE+1];
                       char module[BUFSIZE+1];
                       int jobid=1;
                       int nsect;
                       int i=0, n=0, badjobid=-1;
                       joblist_t *joblist=NULL, *joblist_head=NULL;

                       if (badjob)
                       badjobid=badjob->id;

                       // dict = iniparser_load(fname);

                       /* Get all the sections */
                       nsect = iniparser_getnsec(dict);
                       for (n=0; n<nsect; n++) {		// Each Section

                       section = iniparser_getsecname(dict, n);
                       if (strcmp(section, "main")==0) {
                       // Set global parameters
                       continue;
                       }

                       if (! section ) exit(-1);

                       if (!joblist) {
                       if (! (joblist = (joblist_t *) malloc( sizeof(joblist_t))) ) {
                       exception(MODULE_NAME, EXCEPTION_PRIORITY_FATAL, "Failed to allocate memory");
                       return(NULL);
                       }
                       joblist_head = joblist;
                       } else {
                       if (! (joblist->next = (joblist_t *) malloc( sizeof(joblist_t))) ) {
                       exception(MODULE_NAME, EXCEPTION_PRIORITY_FATAL, "Failed to allocate memory");
                       return(NULL);
                       }
                       joblist= joblist->next;
                       }

                       joblist->valid=TRUE;
                       joblist->id=0;
                       joblist->timestamp=0;
                       joblist->activecount=0;
                       joblist->prefix=NULL;
                       joblist->jobname=strdup(section);
                       joblist->modname=NULL;
                       joblist->modpath=NULL;
                       joblist->modhandle=NULL;
                       joblist->runmin=NULL;
                       joblist->runhr=NULL;
                       joblist->targetlist[0]=NULL;
                       joblist->next=NULL;

                       snprintf(entry,BUFSIZE, "%s:
                       %s", section, CONF_PREFIX);
                       val = iniparser_getstring(dict, entry, "null");

                       if (strncmp(val, "null", strlen("null"))==0) {
                       joblist->valid=FALSE;
                       va_exception(MODULE_NAME, EXCEPTION_PRIORITY_WARNING, "Section=%s, key not found %s",section,CONF_PREFIX);
                               } else {
                               va_exception(MODULE_NAME, EXCEPTION_PRIORITY_DEBUG, "Section=%s, Key=%s, Val=%s",section, CONF_PREFIX, val);
                                       joblist->prefix=strdup(val);
                                       }

                                       snprintf(entry,BUFSIZE, "%s:
                                       %s", section, CONF_RUNTIME);
                                       val = iniparser_getstring(dict, entry, "null");

                                       if (strncmp(val, "null", strlen("null"))==0) {
                                       joblist->valid=FALSE;
                                       va_exception(MODULE_NAME, EXCEPTION_PRIORITY_WARNING, "Section=%s, key not found %s",section,CONF_RUNTIME);
                                               } else {
                                               res = rematch(CONF_RUNPAT, val);
                                               if (!res) {
                                               va_exception(MODULE_NAME, EXCEPTION_PRIORITY_WARNING, "Section=%s, Key=%s, incorrect runtime format",section, CONF_RUNTIME);
                                                       joblist->valid=FALSE;
                                                       } else {
                                                       if (badjob && (jobid == badjob->id))
                                                       joblist->valid=FALSE;
                                                       joblist->id=jobid++;
                                                       joblist->runmin=strdup(res[1]);	// group 1
                                                       joblist->runhr=strdup(res[2]);	// group 2
                                                       for (i=0; res[i]!=NULL;i++)
                                                       free(res[i]);
                                                       va_exception(MODULE_NAME, EXCEPTION_PRIORITY_DEBUG, "Section=%s, min=%s hr=%s",section, joblist->runmin, joblist->runhr);
                                                               }
                                                               }

                                                               snprintf(entry,BUFSIZE, "%s:
                                                               %s", section, CONF_TARGETS);
                                                               // printf("Targets=%s\n", entry);
                                                                       val = iniparser_getstring(dict, entry, "null");

                                                                       if (strncmp(val, "null", strlen("null"))==0) {
                                                                       va_exception(MODULE_NAME, EXCEPTION_PRIORITY_WARNING, "Section=%s, key not found %s",section,CONF_TARGETS);
                                                                               joblist->valid=FALSE;
                                                                               continue;
                                                                               }

                                                                               /* Can load targetlist by file also */

                                                                               if ( strncmp(val,TARGET_FROM_FILE,strlen(TARGET_FROM_FILE))==0) {
                                                                               if (joblist->targetlist[0]) free_targetlist(joblist->targetlist);
                                                                               if (!( load_targets_from_file(val+strlen(TARGET_FROM_FILE), joblist->targetlist))) {
                                                                               va_exception(MODULE_NAME, EXCEPTION_PRIORITY_WARNING, "Section=%s, No targets found in file:
                                                                                       %s",section, val+strlen(TARGET_FROM_FILE));
                                                                                       continue;
                                                                                       }
                                                                                       } else {