LIBS = ${FSLIBS}
-all: fs up fstrace cmdebug kdump kdump64
+all: fs up fstrace cmdebug livesys kdump kdump64
#
# Build targets
${DEST}/bin/fs ${DEST}/root.server/usr/afs/bin/fs: fs
${INSTALL} -s $? $@
+${DEST}/bin/livesys: livesys
+ ${INSTALL} -s $? $@
+
${DEST}/bin/up: up
${INSTALL} -s $? $@
fs: fs.o $(LIBS)
${CC} ${CFLAGS} -g -o fs fs.o ${TOP_LIBDIR}/libprot.a $(LIBS) ${XLIBS}
+livesys.o: livesys.c ${INCLS} AFS_component_version_number.c
+
+livesys: livesys.c $(LIBS)
+ ${CC} -g -o livesys $(CFLAGS) livesys.c $(LIBS) ${XLIBS}
+
twiddle: twiddle.c $(LIBS)
${CC} -g -o twiddle $(CFLAGS) twiddle.c $(LIBS) ${XLIBS}
#
install: \
${DESTDIR}${bindir}/fs \
+ ${DESTDIR}${bindir}/livesys \
${DESTDIR}${afssrvbindir}/fs \
${DESTDIR}${bindir}/up \
${DESTDIR}${sbindir}/fstrace \
${DESTDIR}${bindir}/fs: fs
${INSTALL} -s $? $@
+${DESTDIR}${bindir}/livesys: livesys
+ ${INSTALL} -s $? $@
+
${DESTDIR}${afssrvbindir}/fs: fs
${INSTALL} -s $? $@
dest: \
${DEST}/bin/fs \
+ ${DEST}/bin/livesys \
${DEST}/root.server/usr/afs/bin/fs \
${DEST}/bin/up \
${DEST}/etc/fstrace \
--- /dev/null
+/*
+ * Copyright 2000, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ *
+ * This software has been released under the terms of the IBM Public
+ * License. For details, see the LICENSE file in the top-level source
+ * directory or online at http://www.openafs.org/dl/license10.html
+ */
+
+#include <afsconfig.h>
+#include <afs/param.h>
+
+RCSID("$Header$");
+
+#include <afs/afs_args.h>
+#include <rx/xdr.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <errno.h>
+#include <stdio.h>
+#include <netinet/in.h>
+#include <sys/stat.h>
+#include <afs/stds.h>
+#include <afs/vice.h>
+#include <afs/venus.h>
+#ifdef AFS_AIX32_ENV
+#include <signal.h>
+#endif
+#include <strings.h>
+
+#define MAXSIZE 2048
+static char space[MAXSIZE];
+
+int main(argc, argv)
+ int argc;
+ char **argv;
+{
+ afs_int32 code;
+ struct ViceIoctl blob;
+ char *input = space;
+ afs_int32 setp = 0;
+
+#ifdef AFS_AIX32_ENV
+ /*
+ * The following signal action for AIX is necessary so that in case of a
+ * crash (i.e. core is generated) we can include the user's data section
+ * in the core dump. Unfortunately, by default, only a partial core is
+ * generated which, in many cases, isn't too useful.
+ */
+ struct sigaction nsa;
+
+ sigemptyset(&nsa.sa_mask);
+ nsa.sa_handler = SIG_DFL;
+ nsa.sa_flags = SA_FULLDUMP;
+ sigaction(SIGSEGV, &nsa, NULL);
+#endif
+
+ blob.in = space;
+ blob.out = space;
+ blob.out_size = MAXSIZE;
+ blob.in_size = sizeof(afs_int32);
+ memcpy(space, &setp, sizeof(afs_int32));
+ code = pioctl(0, VIOC_AFS_SYSNAME, &blob, 1);
+ if (code) {
+ fprintf(stderr, "livesys: %s\n", error_message(code));
+ return 1;
+ }
+ input = space;
+ memcpy(&setp, input, sizeof(afs_int32));
+ input += sizeof(afs_int32);
+ if (!setp) {
+ fprintf(stderr, "No sysname name value was found\n");
+ return 1;
+ }
+ printf("%s\n", input);
+ return 0;
+}