diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -858,7 +858,6 @@ int update_xml_joblist(struct general_in struct distrenjob *job; xmlTextWriterPtr writer; char *tmp; - char *tmp2; int counter; /** @@ -868,7 +867,11 @@ int update_xml_joblist(struct general_in if(geninfo->timestamp > 65530) geninfo->timestamp = 0; - writer = xmlNewTextWriterFilename("job_list.xml", 0); + _distren_asprintf(&tmp, "%s/job_list.xml", + geninfo->config->datadir); + writer = xmlNewTextWriterFilename(tmp, 0); + free(tmp); + xmlTextWriterStartDocument(writer, NULL, "utf-8", NULL); /** @@ -884,10 +887,8 @@ int update_xml_joblist(struct general_in counter = 0; for(job = geninfo->head.next; job; job = job->next) { - _distren_asprintf(&tmp, "jobnum%d", counter); - _distren_asprintf(&tmp2, "%d", job->jobnum); - xmlTextWriterWriteElement(writer, (xmlChar*)tmp, (xmlChar*)tmp2); - free(tmp2); + _distren_asprintf(&tmp, "%d", job->jobnum); + xmlTextWriterWriteElement(writer, (xmlChar*)"jobnum", (xmlChar*)tmp); free(tmp); /** @@ -900,6 +901,8 @@ int update_xml_joblist(struct general_in counter++; } + xmlTextWriterEndElement(writer); + /** close elements and end document */ @@ -924,15 +927,23 @@ int createQueueFromXML(struct general_in xmlDocPtr doc; xmlNodePtr cur; + char *xmllist_path; + /** load xml document */ - doc = xmlParseFile("job_list.xml"); + + _distren_asprintf(&xmllist_path, "%s/job_list.xml", geninfo->config->datadir); + doc = xmlParseFile(xmllist_path); if(doc == NULL) { - fprintf(stderr, "createQueueFromXML: document not found\n"); + fprintf(stderr, "createQueueFromXML: ``%s'' could not be not loaded\n", + xmllist_path); + + free(xmllist_path); return 1; } + free(xmllist_path); /** have cur point to the root element of the xml document pointed to by doc @@ -948,6 +959,8 @@ int createQueueFromXML(struct general_in { fprintf(stderr, "createQueueFromXML: incorrect root element (%s)", (char*)cur->name); } + else + fprintf(stderr, "USING %s\n", cur->name); /** moves into the children elements of job_list diff --git a/src/server/distrenjob.c b/src/server/distrenjob.c --- a/src/server/distrenjob.c +++ b/src/server/distrenjob.c @@ -192,6 +192,14 @@ int distrenjob_unserialize(struct distre return 6; } + tmp = _distrenjob_xml_readuint(xmlnode, (xmlChar *)"jobnum", &dj->jobnum); + if(tmp) + { + distrenjob_free(distrenjob); + + return 7; + } + xmlnode = xml_quickxpath(xmlxpathcontext, (xmlChar *)"/job/resolution"); tmp = _distrenjob_xml_readuint(xmlnode, (xmlChar *)"width" , &dj->width ); tmp += _distrenjob_xml_readuint(xmlnode, (xmlChar *)"height" , &dj->height ); @@ -205,7 +213,7 @@ int distrenjob_unserialize(struct distre fprintf(stderr, "distrenjob_unserialize(): error reading integer values from ``%s''\n", pathtoxml); distrenjob_free(distrenjob); - return 7; + return 8; } /** @@ -243,7 +251,7 @@ int distrenjob_unserialize(struct distre { fprintf(stderr, "OOM!\n"); distrenjob_free(distrenjob); - return 8; + return 9; } fs = dj->frameset; for(counter = start_frame; counter <= end_frame; counter ++) @@ -286,6 +294,9 @@ int distrenjob_serialize(struct distrenj _distren_asprintf(&tmp, "%d", job->priority); xmlTextWriterWriteAttribute(writer, (xmlChar*)"priority", (xmlChar*)tmp); free(tmp); + _distren_asprintf(&tmp, "%d", job->jobnum); + xmlTextWriterWriteAttribute(writer, (xmlChar *)"jobnum", (xmlChar *)tmp); + free(tmp); xmlTextWriterWriteAttribute(writer, (xmlChar *)"output_format", (xmlChar *)job->output_format);