diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 20:57:42 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 20:57:42 +0100 |
commit | 1798c4aeca70ac8d0a243684d6a798fbc65735f8 (patch) | |
tree | e48e19cb6fa03de18e1c63e1a93371b7ebc4eb56 /dev-util/lockrun | |
parent | d87262dd706fec50cd150aab3e93883b6337466d (diff) |
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-util/lockrun')
-rw-r--r-- | dev-util/lockrun/Manifest | 3 | ||||
-rw-r--r-- | dev-util/lockrun/files/lockrun.c-20120508 | 294 | ||||
-rw-r--r-- | dev-util/lockrun/lockrun-20120508-r1.ebuild | 30 | ||||
-rw-r--r-- | dev-util/lockrun/metadata.xml | 5 |
4 files changed, 0 insertions, 332 deletions
diff --git a/dev-util/lockrun/Manifest b/dev-util/lockrun/Manifest deleted file mode 100644 index 17bdaccb5d13..000000000000 --- a/dev-util/lockrun/Manifest +++ /dev/null @@ -1,3 +0,0 @@ -AUX lockrun.c-20120508 7025 BLAKE2B fe577a1e360c0595a2448ed03f7af1a049327e21b6f4caba6d69659e557a527c16f07e80b2591d4dfa1633e1a77a78bb1cd9f231ca4fec3ef261cbadf284c4ca SHA512 f800e96d41d11c9b6f7e28c5bd1f2b59b824ccba5f093574d8f4df8e737f2df47c3f8e89a08eee81b9c3fb46377e62be9c5ddf83df253fd0ab3a25a85a8bee0b -EBUILD lockrun-20120508-r1.ebuild 599 BLAKE2B 8c25e4eeb05110a23a76132c681a48e2003a4623343050d8f2b681e42f3b2b656ad332115ea2d25c0c72fb5909007a0993cc9b3260e6cb2496d3d19f5890242b SHA512 45706c14e51631261c1c9ea22eb626c847eea47686f66ddc9b5d463607f5bfe073eca56e2ab5d6668367cc7c91c2e5730d2308515a62f109bdc6ec5db5118d0c -MISC metadata.xml 166 BLAKE2B c254f1fb642881aba57637be14fb0a89b10384f91a128feaec3a8c870d76efc2cbacb92caccc0dee2dd19a5ac5eaf8643080dafa05c4e2ac96a68568927e5afd SHA512 a56648c974a1d14dd4c18237532773c72057a13ab90c58b5da04f185e3c12a8bd8d5c21fb06053507f31766291a82dc7d87b34cd65fd94cfe2af7295c813ef84 diff --git a/dev-util/lockrun/files/lockrun.c-20120508 b/dev-util/lockrun/files/lockrun.c-20120508 deleted file mode 100644 index 51da6c71fa4a..000000000000 --- a/dev-util/lockrun/files/lockrun.c-20120508 +++ /dev/null @@ -1,294 +0,0 @@ -/* - * $Id: //websites/unixwiz/unixwiz.net/webroot/tools/lockrun.c#5 $ - * - * written by : Stephen J. Friedl - * Software Consultant - * steve@unixwiz.net - * http://www.unixwiz.net/tools/ - * - * =================================================================== - * ======== This software is in the public domain, and can be ======== - * ======== used by anybody for any purpose ======== - * =================================================================== - * - * Lockrun: This program is used to launch a program out with a lockout - * so that only one can run at a time. It's mainly intended for use out - * of cron so that our five-minute running jobs which run long don't get - * walked on. We find this a *lot* with Cacti jobs which just get hung - * up: it's better to miss a polling period than to stack them up and - * slow each other down. - * - * So we use a file which is used for locking: this program attempts to - * lock the file, and if the lock exists, we have to either exit with - * an error, or wait for it to release. - * - * lockrun --lockfile=FILE -- my command here - * - * COMMAND LINE - * ------------ - * - * --lockfile=F - * - * Specify the name of a file which is used for locking. The file is - * created if necessary (with mode 0666), and no I/O of any kind is - * done. The file is never removed. - * - * --maxtime=N - * - * The script being controlled should run for no more than <N> seconds, - * and if it's beyond that time, we should report it to the standard - * error (which probably gets routed to the user via cron's email). - * - * --wait - * - * When a lock is hit, we normally exit with error, but --wait causes - * it to loop until the lock is released. - * - * --verbose - * - * Show a bit more runtime debugging. - * - * --quiet - * - * Don't show "run is locked" error if things are busy; keeps cron from - * overwhelming you with messages if lockrun overlap is not uncommon. - * - * -- - * - * Mark the end of the options: the command to run follows. - * - */ - -#include <stdio.h> -#include <stdarg.h> -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <unistd.h> -#include <time.h> -#include <sys/types.h> -#include <sys/wait.h> -#include <sys/file.h> - -#ifndef __GNUC__ -# define __attribute__(x) /* nothing */ -#endif - - -#define STRMATCH(a,b) (strcmp((a),(b)) == 0) - -#define UNUSED_PARAMETER(v) ((void)(v)) - -#define TRUE 1 -#define FALSE 0 - -static const char *lockfile = 0; -static int wait_for_lock = FALSE; -static mode_t openmode = 0666; -static int sleeptime = 10; /* seconds */ -static int Verbose = FALSE; -static int Maxtime = 0; -static int Quiet = FALSE; - -static char *getarg(char *opt, char ***pargv); - -static void die(const char *format, ...) - __attribute__((noreturn)) - __attribute__((format(printf, 1, 2))); - -#ifdef __sun -# define WAIT_AND_LOCK(fd) lockf(fd, F_TLOCK,0) -#else -# define WAIT_AND_LOCK(fd) flock(fd, LOCK_EX | LOCK_NB) -#endif - -int main(int argc, char **argv) -{ - char *Argv0 = *argv; - int rc; - int lfd; - pid_t childpid; - time_t starttime; - - UNUSED_PARAMETER(argc); - - time(&starttime); - - for ( argv++ ; *argv ; argv++ ) - { - char *arg = *argv; - char *opt = strchr(arg, '='); - - /* the -- token marks the end of the list */ - - if ( strcmp(*argv, "--") == 0 ) - { - argv++; - break; - } - - if (opt) *opt++ = '\0'; /* pick off the =VALUE part */ - - if ( STRMATCH(arg, "-L") || STRMATCH(arg, "--lockfile")) - { - lockfile = getarg(opt, &argv); - } - - else if ( STRMATCH(arg, "-W") || STRMATCH(arg, "--wait")) - { - wait_for_lock = TRUE; - } - - else if ( STRMATCH(arg, "-S") || STRMATCH(arg, "--sleep")) - { - sleeptime = atoi(getarg(opt, &argv)); - } - - else if ( STRMATCH(arg, "-T") || STRMATCH(arg, "--maxtime")) - { - Maxtime = atoi(getarg(opt, &argv)); - } - - else if ( STRMATCH(arg, "-V") || STRMATCH(arg, "--verbose")) - { - Verbose++; - } - - else if ( STRMATCH(arg, "-q") || STRMATCH(arg, "--quiet")) - { - Quiet = TRUE; - } - - else - { - die("ERROR: \"%s\" is an invalid cmdline param", arg); - } - } - - /*---------------------------------------------------------------- - * SANITY CHECKING - * - * Make sure that we have all the parameters we require - */ - if (*argv == 0) - die("ERROR: missing command to %s (must follow \"--\" marker) ", Argv0); - - if (lockfile == 0) - die("ERROR: missing --lockfile=F parameter"); - - /*---------------------------------------------------------------- - * Open or create the lockfile, then try to acquire the lock. If - * the lock is acquired immediately (==0), then we're done, but - * if the lock is not available, we have to wait for it. - * - * We can either loop trying for the lock (for --wait), or exit - * with error. - */ - - if ( (lfd = open(lockfile, O_RDWR|O_CREAT, openmode)) < 0) - die("ERROR: cannot open(%s) [err=%s]", lockfile, strerror(errno)); - - while ( WAIT_AND_LOCK(lfd) != 0 ) - { - if ( ! wait_for_lock ) - { - if ( Quiet) - exit(EXIT_SUCCESS); - else - die("ERROR: cannot launch %s - run is locked", argv[0]); - } - - /* waiting */ - if ( Verbose ) printf("(locked: sleeping %d secs)\n", sleeptime); - - sleep(sleeptime); - } - - fflush(stdout); - - /* run the child */ - - - if ( (childpid = fork()) == 0 ) - { - close(lfd); // don't need the lock file - - execvp(argv[0], argv); - } - else if ( childpid > 0 ) - { - time_t endtime; - pid_t pid; - - if ( Verbose ) - printf("Waiting for process %ld\n", (long) childpid); - - pid = waitpid(childpid, &rc, 0); - - time(&endtime); - - endtime -= starttime; - - if ( Verbose || (Maxtime > 0 && endtime > Maxtime) ) - printf("pid %d exited with status %d (time=%ld sec)\n", pid, rc, endtime); - } - else - { - die("ERROR: cannot fork [%s]", strerror(errno)); - } - - exit(rc); -} - - -/*! \fn static char *getarg(char *opt, char ***pargv) - * \brief A function to parse calling parameters - * - * This is a helper for the main arg-processing loop: we work with - * options which are either of the form "-X=FOO" or "-X FOO"; we - * want an easy way to handle either one. - * - * The idea is that if the parameter has an = sign, we use the rest - * of that same argv[X] string, otherwise we have to get the *next* - * argv[X] string. But it's an error if an option-requiring param - * is at the end of the list with no argument to follow. - * - * The option name could be of the form "-C" or "--conf", but we - * grab it from the existing argv[] so we can report it well. - * - * \return character pointer to the argument - * - */ -static char *getarg(char *opt, char ***pargv) -{ - const char *const optname = **pargv; - - /* option already set? */ - if (opt) return opt; - - /* advance to next argv[] and try that one */ - if ((opt = *++(*pargv)) == 0) - die("ERROR: option %s requires a parameter", optname); - - return opt; -} - -/* - * die() - * - * Given a printf-style argument list, format it to the standard error, - * append a newline, then exit with error status. - */ - -static void die(const char *format, ...) -{ -va_list args; - - va_start(args, format); - vfprintf(stderr, format, args); - putc('\n', stderr); - va_end(args); - - exit(EXIT_FAILURE); -} diff --git a/dev-util/lockrun/lockrun-20120508-r1.ebuild b/dev-util/lockrun/lockrun-20120508-r1.ebuild deleted file mode 100644 index f062acca8481..000000000000 --- a/dev-util/lockrun/lockrun-20120508-r1.ebuild +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -inherit toolchain-funcs - -DESCRIPTION="Lockrun - runs cronjobs with overrun protection" -HOMEPAGE="http://www.unixwiz.net/tools/lockrun.html" - -LICENSE="public-domain" -SLOT="0" -KEYWORDS="amd64 ~hppa x86" - -S="${WORKDIR}" - -src_unpack() { - cp -v "${FILESDIR}"/${PN}.c-${PV} "${S}"/${PN}.c || die - cp -v "${FILESDIR}"/${PN}.c-${PV} "${S}"/README || die -} - -src_compile() { - emake CC=$(tc-getCC) ${PN} - sed -i README -e '60q;s|^ \*||g' || die -} - -src_install () { - dobin ${PN} - einstalldocs -} diff --git a/dev-util/lockrun/metadata.xml b/dev-util/lockrun/metadata.xml deleted file mode 100644 index 6f49eba8f496..000000000000 --- a/dev-util/lockrun/metadata.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> -<!-- maintainer-needed --> -</pkgmetadata> |