Better recovery flag implementation

This commit is contained in:
alexhudson
2007-09-03 21:01:46 +00:00
parent 5d84654fe4
commit a4cbaeec32
6 changed files with 54 additions and 22 deletions
+45 -7
View File
@@ -643,18 +643,56 @@ MsgInit(void)
}
}
EXPORT BOOL
MsgSetRecoveryFlag(void)
void
MsgRecoveryFlagFile(char *agent, char *buffer, size_t buffer_len)
{
// FIXME: TODO :)
return FALSE;
snprintf(buffer, buffer_len - 1, "%s/%s.pid", XPL_DEFAULT_WORK_DIR, agent);
}
EXPORT BOOL
MsgGetRecoveryFlag(void)
MsgSetRecoveryFlag(unsigned char *agent_name)
{
// FIXME: TODO :)
return FALSE;
FILE *flag;
unsigned char flagfile[XPL_MAX_PATH];
unsigned char pidstr[20];
pid_t pid;
MsgRecoveryFlagFile(agent_name, flagfile, XPL_MAX_PATH);
flag = fopen(flagfile, "w");
if (flag == -1) {
return FALSE;
}
snprintf(pidstr, 18, "%lu\n", getpid());
fwrite(pidstr, strlen(pidstr), sizeof(unsigned char), flag);
fclose(flag);
return TRUE;
}
EXPORT BOOL
MsgGetRecoveryFlag(unsigned char *agent_name)
{
unsigned char flagfile[XPL_MAX_PATH];
struct stat filestat;
MsgRecoveryFlagFile(agent_name, flagfile, XPL_MAX_PATH);
if (stat(flagfile, &filestat) == 0) {
return TRUE;
} else {
return FALSE;
}
}
EXPORT BOOL
MsgClearRecoveryFlag(unsigned char *agent_name)
{
unsigned char flagfile[XPL_MAX_PATH];
MsgRecoveryFlagFile(agent_name, flagfile, XPL_MAX_PATH);
unlink(flagfile);
}
EXPORT BOOL