示例#1
0
XML * DSREP_localxml_load (WFTK_ADAPTOR * ad, va_list args) {
    char path[256];
    char *id = (char *) 0;
    FILE *file;
    XML * ret;

    if (args) id = va_arg (args, char *);
    if (!id) {
        xml_set (ad->parms, "error", "No ID given.");
        return (XML *) 0;
    }

    strcpy (path, xml_attrval (ad->parms, "dir"));
    strcat (path, id);
    strcat (path, ".xml");
    file = fopen (path, "r");
    if (!file) {
        xml_set (ad->parms, "error", "Couldn't open file for reading.");
        return (XML *) 0;
    }

    ret = xml_read (file);
    fclose (file);

    return ret;
}
示例#2
0
int
topo_file_load(topo_hdl_t *thp, topo_mod_t *mod, ttree_t *tp)
{
	topo_file_t *tfp;

	if ((tfp = topo_hdl_zalloc(thp, sizeof (topo_file_t))) == NULL)
		return (topo_hdl_seterrno(thp, ETOPO_NOMEM));

	tp->tt_file = tfp;

	tfp->tf_mod = mod;

	if (xml_read(thp, tp) < 0) {
		topo_file_unload(thp, tp);
		return (-1);
	}

	if (topo_xml_enum(tfp->tf_mod, tfp->tf_fileinfo, tp->tt_root) < 0) {
		topo_dprintf(TOPO_DBG_ERR,
		    "Failed to enumerate topology: %s\n",
		    topo_strerror(topo_hdl_errno(thp)));
		topo_file_unload(thp, tp);
		return (-1);
	}
	return (0);
}
示例#3
0
XML * PDREP_localxml_version  (WFTK_ADAPTOR * ad, va_list args)
{
   char path[256];
   char * id = (char *) 0;
   FILE * file;
   XML * index;
   XML * value;

   xml_set (ad->parms, "error", "");
   if (args) id = va_arg (args, char *);
   if (!id) {
      xml_set (ad->parms, "error", "No ID given.");
      return (XML *) 0;
   }

   strcpy (path, xml_attrval (ad->parms, "dir"));
   strcat (path, id);
   strcat (path, "__versions.xml");
   file = fopen (path, "r");
   if (!file) {
      xml_set (ad->parms, "error", "Procdef master file not found.");
      return (XML *) 0;
   }

   index = xml_read (file);
   if (!index) {
      xml_set (ad->parms, "error", "Procdef master file corrupted.");
      return (XML *) 0;
   }

   value = xml_create ("value");
   xml_set (value, "value", xml_attrval (index, "ver"));

   xml_free (index);
   fclose (file);

   return value;
}
示例#4
0
/*
void real_time_deal()
{
	char buff[50];
	FILE*fp;
	char *p;
	
	fp=fopen(DEV_CONF,"r");
	if(fp==NULL)
	{
		printf("open device.config");
		return;
	}
	//printf("1\n");
	while((fgets(buff,50,fp))!=NULL)
	{
		if(strncmp(buff,"real_time_data",14)==0)
		{
			p=strchr(buff,'=');
			p++;
			buff[strlen(buff)-1]='\0';
			real_time_data=atoi(p);
			printf("real_time_data=%d\n",real_time_data);
		}
	}
	fclose(fp);
	return;
}


void second_rate_change()
{	
	char buff[50];
	FILE*fp;
	char *p;
	fp=fopen(DEV_CONF,"r");
	if(fp==NULL)
	{
		printf("open device.config");
		return;
	}
	while((fgets(buff,50,fp))!=NULL)
	{
		if(strncmp(buff,"second_rate",11)==0)
		{
			p=strchr(buff,'=');
			p++;
			buff[strlen(buff)-1]='\0';
			second_rate=atoi(p);
			printf("second_rate=%d\n",second_rate);
		}
	}
	fclose(fp);
	return;
}
*/
void *signal_wait()
{
	int err;
	int rate;
	int signo;
	char value[20];
	sigset_t sigset;
	sigemptyset(&sigset);
	sigaddset(&sigset,SIGUSR1);
	sigaddset(&sigset,SIGUSR2);
	while(1)
	{
		err=sigwait(&sigset,&signo);
		if(err!=0)
			exit(1);
		switch(signo)
		{
			case SIGUSR1:
				read_file("collect_rate","second_rate",value);
				second_rate=atoi(value);
				break;
			case SIGUSR2:
				read_file("real_time","real_time_data",value);
				real_time_data=atoi(value);
				if(real_time_data!=0)
				{
					xml_read(real_time_data);
				}
				real_time_data=1;
				break;
			case SIGINT:
				break;
			default:
				exit(1);
		}
	}
}
示例#5
0
XML * DSREP_localxml_save (WFTK_ADAPTOR * ad, va_list args) {
    char path[256];
    struct stat statbuf;
    XML  * ds = (XML *) 0;
    FILE * file;
    FILE * _index;
    XML  * index;
    int  counter;

    if (args) ds = va_arg (args, XML *);
    if (!ds) {
        xml_set (ad->parms, "error", "No datasheet given.");
        return (XML *) 0;
    }

    if (*xml_attrval (ds, "id")) {
        strcpy (path, xml_attrval (ad->parms, "dir"));
        strcat (path, xml_attrval (ds, "id"));
        strcat (path, ".xml");
        file = fopen (path, "w");
    } else {
        /* Find a unique ID. */
        strcpy (path, xml_attrval (ad->parms, "dir"));
        strcat (path, "index");
        if (stat (path, &statbuf) == -1) {
            _index = fopen (path, "w");
            if (!_index) {
                xml_set (ad->parms, "error", "Unable to create index file.");
                return (XML *) 0;
            }
            index = xml_create ("index");
        } else {
            _index = fopen (path, "r+");
            if (_index) {
                index = xml_read (_index);
                rewind (_index);
            } else {
                xml_set (ad->parms, "error", "Unable to create index file.");
                return (XML *) 0;
            }
        }
        if (!index) {
            xml_set (ad->parms, "error", "Directory index file corrupt.");
            return (XML *) 0;
        }

        if (!xml_attrval (index, "counter")) xml_set (index, "counter", "0");

        counter = xml_attrvalnum (index, "counter");
        do {
            counter ++;
            xml_setnum (ds, "id", counter);
            strcpy (path, xml_attrval (ad->parms, "dir"));
            strcat (path, xml_attrval (ds, "id"));
            strcat (path, ".xml");
        } while (stat (path, &statbuf) != -1);
        file = fopen (path, "w");

        xml_setnum (index, "counter", counter);
        xml_write (_index, index);
        fclose (_index);
    }

    if (file) {
        xml_write (file, ds);
        fclose (file);
    } else {
        xml_set (ad->parms, "error", "Couldn't open file for writing.");
        return (XML *) 0;
    }

    return ds;
}
示例#6
0
static void 
tef_xml_read(void)
{
	xml_read();
}
示例#7
0
unsigned long pi_configlock_event_load (plugin_user_t * user, void *dummy, unsigned long event,
                                        void *arg)
{
    FILE *fp;
    configlock_t *lock;
    config_element_t *elem;
    xml_node_t *base, *node;

    if (!arg)
        goto leave;

    while (locklist) {
        lock = locklist;
        locklist = locklist->next;
        free (lock);
    }

    fp = fopen ("configlock.xml", "r");
    if (!fp)
        goto leave;

    base = xml_read (fp);
    if (!base) {
        fclose (fp);
        goto leave;
    }

    if (strcmp (base->name, HUBSOFT_NAME)) {
        xml_free (base);
        goto leave;
    }

    config_load (base);

    node = xml_node_find (base, "Config");
    for (node = node->children; node; node = xml_next (node)) {
        elem = config_find (node->name);
        if (!elem)
            continue;

        lock = malloc (sizeof (configlock_t));
        memset (lock, 0, sizeof (configlock_t));

        lock->elem = elem;
        strncpy (lock->name, elem->name, CONFIG_NAMELENGTH);

        xml_node_get (node, elem->type, &lock->data.v_ptr);

        lock->next = locklist;
        locklist = lock;
    }

    xml_free (base);

    fclose (fp);

    return PLUGIN_RETVAL_CONTINUE;

leave:
    return pi_configlock_event_load_old (user, dummy, event, NULL);
}
示例#8
0
static void
gtc_read(void)
{
	xml_read();
}
示例#9
0
int main (int argc, char *argv[])
{
   xml=  xml_read(stdin);
   xml_prepend (xml, xml_create("boogida"));
   xml_write (stdout, xml);
}
示例#10
0
static void 
osm_read(void)
{
	xml_read();
}
示例#11
0
static void 
xol_read(void)
{
	xml_read();
}
示例#12
0
static
void
kml_read(void)
{
	xml_read();
}