/* * FindPidfList.c */ #ident "$URL: svn://elmer/devel/SVN/SDDAS/trunk/libPIDF/FindPidf.c $ %D% SwRI" #include /* for assert */ #include /* for printf */ #include /* for strcpy */ #include /* for access */ #include /* MAXPATHLEN */ #include "ant.h" /* for GetHomeDirectory */ #include "libdb.h" /* for dbKeyToStrings */ #include "pidf_ret.h" #include "pidf_local.h" int FindPidf (SDDAS_ULONG data_key, SDDAS_CHAR *V, char *buf, int len) { /***** Local vars *****/ char *path; char *home_dir = GetHomeDirectory (); assert (home_dir != NULL); snprintf (buf, len, "%s/SCF/%s.pidf.v2", home_dir, V); /* First, look for PIDF in SCF directory */ if (access (buf, F_OK) == 0) { return 1; } else { /* Second, look for PIDF in hierarchy in SCF directory */ char P [MAX_IDFS_NAME], S [MAX_IDFS_NAME], E [MAX_IDFS_NAME], I [MAX_IDFS_NAME]; char VI [MAX_IDFS_VIRT_NAME]; if (dbKeyToStrings_r (data_key, P, S, E, I, VI) == sFalse) { printf ("ERROR - can not use this data key!\n"); return -1; } else { sprintf (buf, "%s/SCF/%s/%s/%s/%s/%s.pidf.v2", home_dir, P, S, E, I, VI); if (access (buf, F_OK) == 0) { return 1; } else { /* Third, we try in the global area */ if (!(path = FindPidfPath (data_key))) { return -1; } else { sprintf (buf, "%s/%s.pidf.v2", path, V); if (!MkOnLine (data_key, buf)) { printf ("%s : Is off-line, and can't be promoted.\n", buf); return -1; } } } } } return 1; }