- Timestamp:
- Feb 3, 2015, 6:38:21 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PublicaMundi_David-devel/zoo-project/zoo-kernel/zoo_service_loader.c
r549 r553 212 212 } 213 213 214 /**215 int216 recursReaddirF (maps * m, xmlNodePtr n, char *conf_dir, char *prefix,217 int saved_stdout, int level, void (func) (maps *,218 xmlNodePtr,219 service *))220 {221 struct dirent *dp;222 int scount = 0;223 224 if (conf_dir == NULL)225 return 1;226 DIR *dirp = opendir (conf_dir);227 if (dirp == NULL)228 {229 if (level > 0)230 return 1;231 else232 return -1;233 }234 char tmp1[25];235 sprintf (tmp1, "sprefix_%d", level);236 char levels[17];237 sprintf (levels, "%d", level);238 setMapInMaps (m, "lenv", "level", levels);239 while ((dp = readdir (dirp)) != NULL)240 if ((dp->d_type == DT_DIR || dp->d_type == DT_LNK)241 && dp->d_name[0] != '.' && strstr (dp->d_name, ".") == NULL)242 {243 244 char *tmp =245 (char *)246 malloc ((strlen (conf_dir) + strlen (dp->d_name) +247 2) * sizeof (char));248 sprintf (tmp, "%s/%s", conf_dir, dp->d_name);249 250 if (prefix != NULL)251 {252 prefix = NULL;253 }254 prefix = (char *) malloc ((strlen (dp->d_name) + 2) * sizeof (char));255 sprintf (prefix, "%s.", dp->d_name);256 257 // map* tmpMap=getMapFromMaps(m,"lenv",tmp1);258 259 int res;260 if (prefix != NULL)261 {262 setMapInMaps (m, "lenv", tmp1, prefix);263 char levels1[17];264 sprintf (levels1, "%d", level + 1);265 setMapInMaps (m, "lenv", "level", levels1);266 res =267 recursReaddirF (m, n, tmp, prefix, saved_stdout,268 level + 1, func);269 sprintf (levels1, "%d", level);270 setMapInMaps (m, "lenv", "level", levels1);271 free (prefix);272 prefix = NULL;273 }274 else275 res = -1;276 free (tmp);277 if (res < 0)278 {279 return res;280 }281 }282 else283 {284 if (dp->d_name[0] != '.' && strstr (dp->d_name, ".zcfg") != 0)285 {286 int t;287 char tmps1[1024];288 memset (tmps1, 0, 1024);289 snprintf (tmps1, 1024, "%s/%s", conf_dir, dp->d_name);290 service *s1 = (service *) malloc (SERVICE_SIZE);291 if (s1 == NULL)292 {293 dup2 (saved_stdout, fileno (stdout));294 errorException (m, _("Unable to allocate memory."),295 "InternalError", NULL);296 return -1;297 }298 #ifdef DEBUG299 fprintf (stderr,300 "#################\n%s\n#################\n", tmps1);301 #endif302 t = readServiceFile (m, tmps1, &s1, dp->d_name);303 304 if (t < 0)305 {306 map *tmp00 = getMapFromMaps (m, "lenv", "message");307 char tmp01[1024];308 if (tmp00 != NULL)309 sprintf (tmp01,310 _311 ("Unable to parse the ZCFG file: %s (%s)"),312 dp->d_name, tmp00->value);313 else314 sprintf (tmp01,315 _316 ("Unable to parse the ZCFG file: %s."),317 dp->d_name);318 dup2 (saved_stdout, fileno (stdout));319 errorException (m, tmp01, "InternalError", NULL);320 freeMaps (&m);321 free (m);322 return -1;323 }324 #ifdef DEBUG325 dumpService (s1);326 fflush (stdout);327 fflush (stderr);328 #endif329 func (m, n, s1);330 freeService (&s1);331 free (s1);332 scount++;333 }334 }335 (void) closedir (dirp);336 return 1;337 }338 **/339 214 xmlXPathObjectPtr 340 215 extractFromDoc (xmlDocPtr doc, const char *search)
Note: See TracChangeset
for help on using the changeset viewer.