diff options
Diffstat (limited to 'src/pmlock')
-rw-r--r-- | src/pmlock/GNUmakefile | 36 | ||||
-rw-r--r-- | src/pmlock/pmlock.c | 50 |
2 files changed, 86 insertions, 0 deletions
diff --git a/src/pmlock/GNUmakefile b/src/pmlock/GNUmakefile new file mode 100644 index 0000000..c397a1f --- /dev/null +++ b/src/pmlock/GNUmakefile @@ -0,0 +1,36 @@ +#!gmake +# +# Copyright (c) 2000,2004 Silicon Graphics, Inc. All Rights Reserved. +# +# This program 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 of the License, or (at your +# option) any later version. +# +# This program 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 this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# + +TOPDIR = ../.. +include $(TOPDIR)/src/include/builddefs + +LLDLIBS = $(LIB_FOR_BASENAME) +CFILES = pmlock.c +CMDTARGET = pmlock$(EXECSUFFIX) + +default: $(CMDTARGET) + +include $(BUILDRULES) + +install: $(CMDTARGET) + $(INSTALL) -m 755 $(CMDTARGET) $(PCP_BINADM_DIR)/$(CMDTARGET) + +default_pcp: default + +install_pcp: install diff --git a/src/pmlock/pmlock.c b/src/pmlock/pmlock.c new file mode 100644 index 0000000..c47af06 --- /dev/null +++ b/src/pmlock/pmlock.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved. + * + * This program 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 of the License, or (at your + * option) any later version. + * + * This program 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. + */ + +#include "pmapi.h" +#include <fcntl.h> +#include <sys/stat.h> + +int +main(int argc, char **argv) +{ + int verbose = 0; + + if (argc > 1 && + (strcmp(argv[1], "-v") == 0 || strcmp(argv[1], "--verbose") == 0)) { + verbose = 1; + argc--; + argv++; + } + if (argc != 2 || (argc == 2 && strcmp(argv[1], "-?") == 0)) { + fprintf(stderr, "Usage: pmlock [-v,--verbose] file\n"); + exit(1); + } + if (open(argv[1], O_CREAT|O_EXCL|O_RDONLY, 0) < 0) { + if (verbose) { + if (oserror() == EACCES) { + char *p = dirname(argv[1]); + if (access(p, W_OK) == -1) + printf("%s: Directory not writable\n", p); + else + printf("%s: %s\n", argv[1], strerror(EACCES)); + } + else + printf("%s: %s\n", argv[1], osstrerror()); + } + exit(1); + } + + exit(0); +} |