diff options
Diffstat (limited to 'src/pmiestatus')
-rw-r--r-- | src/pmiestatus/GNUmakefile | 34 | ||||
-rw-r--r-- | src/pmiestatus/pmiestatus.c | 64 |
2 files changed, 98 insertions, 0 deletions
diff --git a/src/pmiestatus/GNUmakefile b/src/pmiestatus/GNUmakefile new file mode 100644 index 0000000..9d67f93 --- /dev/null +++ b/src/pmiestatus/GNUmakefile @@ -0,0 +1,34 @@ +# +# Copyright (c) 2000,2004 Silicon Graphics, Inc. All Rights Reserved. +# Copyright (c) 2010 Max Matveev. 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. +# + +TOPDIR = ../.. +include $(TOPDIR)/src/include/builddefs + +CFILES = pmiestatus.c +CMDTARGET = pmiestatus$(EXECSUFFIX) + +LLDLIBS = $(PCPLIB) +LCFLAGS = -I$(TOPDIR)/src/pmie/src + +default : $(CMDTARGET) + +include $(BUILDRULES) + +install : default + $(INSTALL) -m 755 $(CMDTARGET) $(PCP_BINADM_DIR)/$(CMDTARGET) + +default_pcp : default + +install_pcp : install diff --git a/src/pmiestatus/pmiestatus.c b/src/pmiestatus/pmiestatus.c new file mode 100644 index 0000000..d955a61 --- /dev/null +++ b/src/pmiestatus/pmiestatus.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2010 Max Matveev. 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 <sys/stat.h> +#include "pmapi.h" +#include "impl.h" +#include "stats.h" + +int +main(int argc, char **argv) +{ + int i; + __pmSetProgname(argv[0]); + + for (i=1; i < argc; i++) { + pmiestats_t ps; + struct stat st; + int f = open(argv[i], O_RDONLY, 0); + + if (f < 0) { + fprintf(stderr, "%s: cannot open %s - %s\n", + pmProgname, argv[i], osstrerror()); + continue; + } + + if (fstat(f, &st) < 0) { + fprintf(stderr, "%s: cannot get size of %s - %s\n", + pmProgname, argv[i], osstrerror()); + goto closefile; + } + + if (st.st_size != sizeof(ps)) { + fprintf(stderr, "%s: %s is not a valid pmie stats file\n", + pmProgname, argv[i]); + goto closefile; + } + if (read(f, &ps, sizeof(ps)) != sizeof(ps)) { + fprintf(stderr, "%s: cannot read %ld bytes from %s\n", + pmProgname, (long)sizeof(ps), argv[i]); + goto closefile; + } + + if (ps.version != 1) { + fprintf(stderr, "%s: unsupported version %d in %s\n", + pmProgname, ps.version, argv[i]); + goto closefile; + } + + printf ("%s\n%s\n%s\n", ps.config, ps.logfile, ps.defaultfqdn); +closefile: + close(f); + } + return 0; +} |