int getElock(void) { static char fname[] = "getElock"; int force = 0; int retry; char *myhostnm, *mastername; struct stat statbuf; time_t lastmodtime; char first = TRUE; char buf[MAXHOSTNAMELEN+8]; int lock_fd = -1; if (lsb_CheckMode) return 0; if ((myhostnm = ls_getmyhostname()) == NULL) { ls_syslog(LOG_ERR, I18N_FUNC_FAIL_MM, fname, "ls_getmyhostname"); return MASTER_FATAL; } sprintf(lockfile, "%s/logdir/%s", daemonParams[LSB_SHAREDIR].paramValue, EVENT_LOCK_FILE); access: chuser(managerId); if (force) lock_fd = open(lockfile, O_RDWR | O_CREAT | O_TRUNC, 0644); else lock_fd = open(lockfile, O_RDWR | O_CREAT | O_EXCL, 0644); if (lock_fd >= 0) { sprintf(buf, "%s:%d", myhostnm, (int)getpid()); write(lock_fd, buf, strlen(buf)); close(lock_fd); chuser(batchId); ls_syslog(LOG_INFO, "%s: Got lock file", fname); gotLock = TRUE; return 0; } else if (errno == EEXIST) { int fd,cc,i,pid; fd = open(lockfile, O_RDONLY, 0444); chuser(batchId); if (fd < 0) { ls_syslog(LOG_ERR, "\ %s: Can't open existing lock file <%s>: %m", fname, lockfile); return MASTER_FATAL; }
FILE * smail(char *to, char *tohost) { char fname[] = "smail"; FILE *fmail; int pid; int maild[2]; char toaddr[256]; char smcmd[500]; char *sendmailp; uid_t userid; if (lsb_CheckMode) return stderr; if ((to == NULL) || (tohost == NULL)) { ls_syslog(LOG_ERR, _i18n_msg_get(ls_catd , NL_SETN, 8604, "%s: Internal error: user name or host name is null"), fname); /* catgets 8604 */ return stderr; } if (debug > 2) return(stderr); if(pipe(maild) < 0) { ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL_M, fname, "pipe", to); return stderr; } addr_process(toaddr, to, tohost, daemonParams[LSB_MAILTO].paramValue); if (logclass & (LC_TRACE | LC_EXEC)) ls_syslog(LOG_DEBUG1, "%s: user=%s host=%s toaddr=%s spec=%s", fname, to, tohost, toaddr, daemonParams[LSB_MAILTO].paramValue); switch (pid = fork()) { case 0: if (maild[0] != 0) { close(0); dup2(maild[0], 0); close(maild[0]); } close(maild[1]); sendmailp = daemonParams[LSB_MAILPROG].paramValue; userid = geteuid(); chuser(getuid()); setuid(userid); sprintf(smcmd, "%s -oi -F%s -f%s %s", sendmailp, "'OpenLava'", lsbManager, toaddr); execle("/bin/sh", "sh", "-c", smcmd, (char *)0, environ); ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL_M, fname, "execle", daemonParams[LSB_MAILPROG].paramValue); exit(-1); case -1: close(maild[1]); close(maild[0]); ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL_M, fname, "fork", to); return stderr; default: close(maild[0]); } fmail = fdopen(maild[1], "w"); if(fmail == NULL) { ls_syslog(LOG_ERR, I18N_FUNC_S_FAIL_M, fname, "fdopen", to); close(maild[1]); return stderr; } fprintf(fmail, "To: %s\n", toaddr); fprintf(fmail, "From: OpenLava <%s>\n", lsbManager); fflush(fmail); if (ferror(fmail)) { fclose(fmail); ls_syslog(LOG_ERR, I18N_FUNC_S_S_FAIL_M, fname, "fprintf", "header", to); return stderr; } return fmail; }