mash/lock.c

changeset 538
6d139c21e22c
parent 537
4eebab50993e
child 539
300b5c4cd977
--- a/mash/lock.c	Sun Jul 15 14:08:19 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2014
- *   
- * Michiel Broek <mbroek at mbse dot eu>
- *
- * This file is part of the mbsePi-apps
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * mbsePi-apps is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with EC-65K; see the file COPYING.  If not, write to the Free
- * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- *****************************************************************************/
-
-#include "mash.h"
-#include "lock.h"
-
-
-/*
- *  Put a lock on this program.
- */
-int lockprog(char *name)
-{
-    char    *tempfile, *lockfile;
-    FILE    *fp;
-    pid_t   oldpid;
-
-    tempfile = calloc(PATH_MAX, sizeof(char));
-    lockfile = calloc(PATH_MAX, sizeof(char));
-
-    snprintf(tempfile, PATH_MAX, "/var/run/%s.tmp", name);
-    snprintf(lockfile, PATH_MAX, "/var/run/%s.pid", name);
-
-    if ((fp = fopen(tempfile, "w")) == NULL) {
-	perror(name);
-	printf("Can't create lockfile \"%s\"\n", tempfile);
-	free(tempfile);
-	free(lockfile);
-	return 1;
-    }
-    fprintf(fp, "%10u\n", getpid());
-    fclose(fp);
-
-    while (TRUE) {
-	if (link(tempfile, lockfile) == 0) {
-	    unlink(tempfile);
-	    free(tempfile);
-	    free(lockfile);
-	    return 0;
-	}
-	if ((fp = fopen(lockfile, "r")) == NULL) {
-	    perror(name);
-	    printf("Can't open lockfile \"%s\"\n", tempfile);
-	    unlink(tempfile);
-	    free(tempfile);
-	    free(lockfile);
-	    return 1;
-	}
-	if (fscanf(fp, "%u", &oldpid) != 1) {
-	    perror(name);
-	    printf("Can't read old pid from \"%s\"\n", tempfile);
-	    fclose(fp);
-	    unlink(tempfile);
-	    free(tempfile);
-	    free(lockfile);
-	    return 1;
-	}
-	fclose(fp);
-	if (kill(oldpid,0) == -1) {
-	    if (errno == ESRCH) {
-		printf("Stale lock found for pid %u\n", oldpid);
-		unlink(lockfile);
-		/* no return, try lock again */  
-	    } else {
-		perror(name);
-		printf("Kill for %u failed\n",oldpid);
-		unlink(tempfile);
-		free(tempfile);
-		free(lockfile);
-		return 1;
-	    }
-	} else {
-	    printf("Another %s is already running, pid=%u\n", name, oldpid);
-	    unlink(tempfile);
-	    free(tempfile);
-	    free(lockfile);
-	    return 1;
-	}
-    }
-}
-
-
-
-void ulockprog(char *name)
-{
-    char	    *lockfile;
-    pid_t	    oldpid;
-    FILE	    *fp;
-
-    lockfile = calloc(PATH_MAX, sizeof(char));
-    snprintf(lockfile, PATH_MAX, "/var/run/%s.pid", name);
-
-    if ((fp = fopen(lockfile, "r")) == NULL) {
-	syslog(LOG_NOTICE, "Can't open lockfile \"%s\"", lockfile);
-	free(lockfile);
-	return;
-    }
-
-    if (fscanf(fp, "%u", &oldpid) != 1) {
-	syslog(LOG_NOTICE, "Can't read old pid from \"%s\"", lockfile);
-	fclose(fp);
-	unlink(lockfile);
-	free(lockfile);
-	return;
-    }
-
-    fclose(fp);
-
-    if (oldpid == getpid()) {
-	(void)unlink(lockfile);
-    }
-
-    free(lockfile);
-}
-
-

mercurial