[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH for-4.5 3/4] tools/misc: Delete more obsolete utilities
* nsplitd has been orphaned from the build since its introduction in c/s dc44ed4764 (in 2004), and never been developed since. While it does appear to compile, it is full of pointer width mismatch, pointer sign mismatch, and uninitialised variable warnings, which makes it unlikely to function correctly when compiled for a 64bit environment. * xen-python-path was declared obsolete in c/s 11e1149fe (in 2009) and can't actually be used correctly by out-of-tree components. 5 years is long enough for out-of-tree callers to catch up. There are no subdirectories any more, so drop the notion from the Makefile. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- tools/misc/Makefile | 7 +- tools/misc/nsplitd/Makefile | 25 -- tools/misc/nsplitd/nsplitd.c | 686 ------------------------------------------ tools/misc/xen-python-path | 24 -- 4 files changed, 1 insertion(+), 741 deletions(-) delete mode 100644 tools/misc/nsplitd/Makefile delete mode 100644 tools/misc/nsplitd/nsplitd.c delete mode 100644 tools/misc/xen-python-path diff --git a/tools/misc/Makefile b/tools/misc/Makefile index 3237461..7a2bfd2 100644 --- a/tools/misc/Makefile +++ b/tools/misc/Makefile @@ -16,13 +16,11 @@ TARGETS-$(CONFIG_X86) += xen-detect xen-hvmctx xen-hvmcrash xen-lowmemd xen-mfnd TARGETS-$(CONFIG_MIGRATE) += xen-hptool TARGETS := $(TARGETS-y) -SUBDIRS := $(SUBDIRS-y) - INSTALL_BIN-y := xencons xencov_split INSTALL_BIN-$(CONFIG_X86) += xen-detect INSTALL_BIN := $(INSTALL_BIN-y) -INSTALL_SBIN-y := xen-bugtool xen-python-path xenperf xenpm xen-tmem-list-parse gtraceview \ +INSTALL_SBIN-y := xen-bugtool xenperf xenpm xen-tmem-list-parse gtraceview \ gtracestat xenlockprof xenwatchdogd xen-ringwatch xencov INSTALL_SBIN-$(CONFIG_X86) += xen-hvmctx xen-hvmcrash xen-lowmemd xen-mfndump INSTALL_SBIN-$(CONFIG_MIGRATE) += xen-hptool @@ -39,7 +37,6 @@ all: build .PHONY: build build: $(TARGETS) - set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d; done .PHONY: install install: build @@ -49,12 +46,10 @@ install: build $(INSTALL_PYTHON_PROG) $(INSTALL_BIN) $(DESTDIR)$(BINDIR) $(INSTALL_PYTHON_PROG) $(INSTALL_SBIN) $(DESTDIR)$(SBINDIR) $(INSTALL_PYTHON_PROG) $(INSTALL_PRIVBIN) $(DESTDIR)$(LIBEXEC_BIN) - set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d install-recurse; done .PHONY: clean clean: $(RM) *.o $(TARGETS) *~ $(DEPS) - set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d clean; done xen-hvmctx: xen-hvmctx.o $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS) diff --git a/tools/misc/nsplitd/Makefile b/tools/misc/nsplitd/Makefile deleted file mode 100644 index 91ccf4d..0000000 --- a/tools/misc/nsplitd/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -XEN_ROOT := $(CURDIR)/../../.. -include $(XEN_ROOT)/tools/Rules.mk - -CFILES = $(wildcard *.c) - -HDRS = $(wildcard *.h) -OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) - -TARGET = nsplitd - -.PHONY: all -all: $(TARGET) - -.PHONY: install -install: all - -.PHONY: clean -clean: - $(RM) *.o $(TARGET) *~ - -$(TARGET): $(OBJS) - $(HOSTCC) $(HOSTCFLAGS) -o $@ $^ - -%.o: %.c $(HDRS) Makefile - $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $< diff --git a/tools/misc/nsplitd/nsplitd.c b/tools/misc/nsplitd/nsplitd.c deleted file mode 100644 index 32f0b56..0000000 --- a/tools/misc/nsplitd/nsplitd.c +++ /dev/null @@ -1,686 +0,0 @@ -/* - * nsplitd.c - * --------- - * - * $Id: nsplitd.c,v 2.6 1998/09/17 14:28:37 sde1000 Exp $ - * - * Copyright (c) 1995, University of Cambridge Computer Laboratory, - * Copyright (c) 1995, Richard Black, All Rights Reserved. - * - * - * A complete re-implementation of DME's nsplitd for use from inetd - * - */ - -/* The basic stream comes in (via inetd) and we then conenct to - * somewhere else providing a loop-through service, except we offer - * two other ports for connection - one of which gets a second channel - * using the top bit to distinguish, and the other is a master control - * port (normally used for gdb) which gets complete exclusive access - * for its duration. - * - * Originally designed for multiplexing a xwcons/telnet with a gdb - * post-mortem debugging session. - * - * Here is a picture: - * - * port0 (from inetd) - * 8-bit connection / - * made by us <----> nsplitd <-----gdbport (default port0+2) - * to host:port/tcp |\ - * | port1 (default port0+1) - * \ - * control (default port0+3) - * - * If port1 is explicitly disabled (through a command-line option) then - * port0 becomes 8-bit clean. - */ - -/* - * N.B.: We do NOT support 8 bit stdin/stdout usage on a - * /dev/... because to do that right involves much messing with ioctl - * and TIOC... etc. If you want to do that sort of thing then the - * right way to do it is to chain this onto wconsd (which does know - * about and understand all the ioctl and TIOC grief). - */ - -#include <sys/types.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> -#include <errno.h> -#include <unistd.h> -#include <ctype.h> -#include <netdb.h> -#include <string.h> - -#include <sys/time.h> -#include <sys/signal.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <netinet/tcp.h> -#include <arpa/inet.h> -#include <sys/ioctl.h> -#include <syslog.h> - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef LOG_DAEMON -#define LOG_DAEMON 0 -#endif - -#define DB(x) /* ((x), fflush(stderr)) */ - -extern char *optarg; - -extern int optind, opterr, optopt; - -static char *prog_name; - -static void usage(void) -{ - fprintf(stderr, "This program (%s) should be run via inetd (tcp)\n\n", - prog_name); - fprintf(stderr, "usage: %s [-h<highport>][-g<gdbport>]" - "[-c<ctlport>][-8] host:service\n", - prog_name); - exit(1); -} - -static void fault(char *format, ...) -{ - va_list ap; - char logbuf[1024]; - - va_start(ap, format); - fprintf(stderr, "%s: ", prog_name); - vfprintf(stderr, format, ap); - fflush(stderr); - va_end(ap); - - /* XXX This is a bit dubious, but there is no vsyslog */ - va_start(ap, format); - vsnprintf(logbuf, sizeof(logbuf), format, ap); - syslog(LOG_ERR, logbuf); - va_end(ap); - exit(1); -} - -static int getservice(char *name, unsigned short *port) -{ - struct servent *se; - - if (!name) return -1; - - if (isdigit(name[0])) - *port = atoi(name); - else - { - if (!(se = getservbyname(name, "tcp"))) - return -1; - *port = ntohs(se->s_port); - } - return 0; -} - -/* - * connect_host: connect to ("name", "port") - */ -static int connect_host (char *name, unsigned int port) -{ - int fd; - struct hostent *hostent; - struct sockaddr_in sin; - int on; - - if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0) - fault("socket"); - - if (!(hostent = gethostbyname(name))) - fault("gethostbyname: %s: %s\n", name, strerror(errno)); - - memset(&sin, 0, sizeof(sin)); - sin.sin_family = AF_INET; - sin.sin_port = htons (port); - memcpy(&sin.sin_addr.s_addr, hostent->h_addr, sizeof(struct in_addr)); - - if (connect(fd, (struct sockaddr *) &sin, sizeof (sin)) < 0) - fault("connect: %s:%u: %s\n", name, port, strerror(errno)); - - on = 1; - if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof (on)) < 0) - syslog(LOG_WARNING, "setsockopt (TCP_NODELAY): %m"); - - on = 1; - if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof (on)) < 0) - syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m"); - - return fd; -} - -/* - * open a tcp socket and start listening for connections on it - */ -static int startlistening(unsigned short port) -{ - int fd, on; - struct sockaddr_in sin; - - if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0) - fault("socket"); - - on = 1; - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) < 0) - syslog(LOG_WARNING, "setsockopt (SO_REUSEADDR): %m"); - - memset(&sin, 0, sizeof(sin)); - sin.sin_family = AF_INET; - sin.sin_port = htons (port); - sin.sin_addr.s_addr = INADDR_ANY; - if (bind(fd, &sin, sizeof(sin)) < 0) - fault("bind: %u: %s\n", port, strerror(errno)); - - if (listen(fd, 1) < 0) - fault("listen: %s\n", strerror(errno)); - - return fd; -} - -static void noblock(int fd) -{ - int on=1; - - if (ioctl(fd, FIONBIO, &on) < 0) - fault("ioctl: FIONBIO: %s\n", strerror(errno)); -} - - -/* You might not believe this, but fd_sets don't have to be a 32-bit - * integer. In particular, in glibc2 it is an array of unsigned - * longs. Hence, this hacked up FD_SET_rjb() that works out if it - * would have been a nop. */ -#define FD_SET_rjb(fd, setp) \ -do { \ - if ((fd) != 32) \ - FD_SET((fd), (setp)); \ -} while(0) - -#define FD_ISSET_rjb(fd, setp) (((fd) != 32)? FD_ISSET((fd), (setp)) : 0) - -#define MAXSIZE 256 - -/* ----------------------------------------------------------------- - * The main bit of the algorithm. Note we use 32 to mean not connected - * because this gives us 1<<32 == 0. We could have done this one - * character at a time, but that would have been very inefficient and - * not the unix way. */ -static int debug; - -static void doit(int actl, int acto, int lish, int lisg, int lisc) -{ - int acth, actg, actc; - int gdbmode = FALSE; - char gibuf[MAXSIZE], oibuf[MAXSIZE]; - char libuf[MAXSIZE], lobuf[MAXSIZE]; - char hibuf[MAXSIZE], hobuf[MAXSIZE]; - char ctlbuf[MAXSIZE]; - fd_set rdfs, wrfs, exfs; - int gicc, oicc, licc, locc, hicc, hocc, ctlcc; - char *giptr, *oiptr, *liptr, *loptr, *hiptr, *hoptr; - int rc, fromlen; - struct sockaddr_in from; - - gicc = oicc = licc = locc = hicc = hocc = ctlcc = 0; - acth = actg = actc = 32; /* XXX yummy */ - - noblock(actl); - noblock(acto); - - for(;;) - { - FD_ZERO(&rdfs); - FD_ZERO(&wrfs); - FD_ZERO(&exfs); - - /* always take input from the control port (if it's connected) */ - FD_SET_rjb(actc, &rdfs); - - if (gdbmode) - { - if (oicc) - FD_SET_rjb(actg, &wrfs); - else - FD_SET_rjb(acto, &rdfs); - - if (gicc) - FD_SET_rjb(acto, &wrfs); - else - FD_SET_rjb(actg, &rdfs); - } - else - { - /* There is no such thing as oibuf because its been split into - * lobuf and hobuf - */ - if (locc || hocc) - { - if (locc) - FD_SET_rjb(actl, &wrfs); - if (hocc) - FD_SET_rjb(acth, &wrfs); - } - else - FD_SET_rjb(acto, &rdfs); - - if (licc) - FD_SET_rjb(acto, &wrfs); - else - FD_SET_rjb(actl, &rdfs); - - if (hicc) - FD_SET_rjb(acto, &wrfs); - else - FD_SET_rjb(acth, &rdfs); - } - - if (acth == 32 && lish>=0) FD_SET_rjb(lish, &rdfs); - if (actg == 32) FD_SET_rjb(lisg, &rdfs); - if (actc == 32) FD_SET_rjb(lisc, &rdfs); - - /* now make exfs the union of the read and write fd sets, plus - * "actl" */ - { - int i; - exfs = rdfs; - for(i=0; i<32; i++) /* XXX we only copy fd numbers up to 31 */ - if (FD_ISSET(i, &wrfs)) - FD_SET_rjb(i, &exfs); - FD_SET_rjb(actl, &exfs); - } - - /* XXX AND: can't print something of type fd_set as %x - it - * might be an array */ - DB(fprintf(stderr, "%s: before select: %08x %08x %08x\n", - prog_name, rdfs, wrfs, exfs)); - - if (select(32, &rdfs, &wrfs, &exfs, NULL) < 0) - fault("select: %s\n", strerror(errno)); - - DB(fprintf(stderr, "%s: after select: %08x %08x %08x\n", - prog_name, rdfs, wrfs, exfs)); - - /* XXX it appears that a non-blocking socket may not show up - * correctly in exfs but instead goes readable with no data in - * it. Thus we check for zero and goto the appropriate close - * method. */ - - /* Deal with exceptions */ - if (FD_ISSET_rjb(actg, &exfs)) - { - exfs_actg: - close(actg); - gdbmode = FALSE; - oicc = 0; - oiptr = oibuf; - actg = 32; - continue; /* because assumptions changed */ - } - if (FD_ISSET_rjb(acth, &exfs)) - { - exfs_acth: - close(acth); - hicc = hocc = 0; - hiptr = hibuf; - hoptr = hibuf; - acth = 32; - continue; /* because assumptions changed */ - } - if (FD_ISSET_rjb(actl, &exfs) || - FD_ISSET_rjb(acto, &exfs)) - { - exfs_actl: - exfs_acto: - /* Thats all folks ... */ - break; - } - if (FD_ISSET_rjb(actc, &exfs)) - { - exfs_ctl: - close(actc); - actc = 32; - ctlcc = 0; - continue; - } - - /* Deal with reading */ - if (FD_ISSET_rjb(acto, &rdfs)) - { - if ((oicc = read(acto, oiptr = oibuf, MAXSIZE)) < 0) - fault("read acto: %d: %s\n", oicc, strerror(errno)); - if (!oicc) goto exfs_acto; - - if (!gdbmode) - { - int t; - - assert((locc == 0) && (hocc == 0)); - loptr = lobuf; - hoptr = hobuf; - - if (lish>=0) { - for(t=0; t<oicc; t++) - if (oibuf[t] & 0x80) - hobuf[hocc++] = oibuf[t] & 0x7f; - else - lobuf[locc++] = oibuf[t]; - } else { - for (t=0; t<oicc; t++) - lobuf[locc++] = oibuf[t]; - } - /* If no high connection scratch that */ - if (acth == 32) - hocc=0; - } - } - if (FD_ISSET_rjb(actl, &rdfs)) - { - if ((licc = read(actl, liptr = libuf, MAXSIZE)) < 0) - fault("read actl: %d: %s\n", licc, strerror(errno)); - if (!licc) goto exfs_actl; - } - if (FD_ISSET_rjb(acth, &rdfs)) - { - int t; - - if ((hicc = read(acth, hiptr = hibuf, MAXSIZE)) < 0) - fault("read acth: %d: %s\n", hicc, strerror(errno)); - if (!hicc) goto exfs_acth; - for(t=0; t<hicc; t++) - hibuf[t] |= 0x80; - } - if (FD_ISSET_rjb(actg, &rdfs)) - { - if ((gicc = read(actg, giptr = gibuf, MAXSIZE)) < 0) - fault("read actg: %d: %s\n", gicc, strerror(errno)); - if (debug) write(1, giptr, gicc); /* XXX */ - if (!gicc) goto exfs_actg; - } - if (FD_ISSET_rjb(actc, &rdfs)) - { - if ((ctlcc = read(actc, ctlbuf, MAXSIZE)) < 0) - fault("read actc: %d: %s\n", ctlcc, strerror(errno)); - if (debug) write(1, ctlbuf, gicc); - if (!ctlcc) goto exfs_ctl; - if (ctlbuf[0] == 'r') /* reset command */ - { - syslog(LOG_INFO, "reset command read, exiting"); - if (debug) write(1, "reseting\n", sizeof("reseting\n")); - break; - } - } - - /* Deal with writing */ - if (FD_ISSET_rjb(actg, &wrfs)) - { - /* We must be in gdb mode so send oi buffer data */ - assert(gdbmode); - if (debug) write(2, oiptr, oicc); /* XXX */ - if ((rc = write(actg, oiptr, oicc)) <= 0) - fault("write actg: %d: %s\n", rc, strerror(errno)); - oiptr += rc; - oicc -= rc; - } - if (FD_ISSET_rjb(actl, &wrfs)) - { - if ((rc = write(actl, loptr, locc)) <= 0) - fault("write actl: %d: %s\n", rc, strerror(errno)); - loptr += rc; - locc -= rc; - } - if (FD_ISSET_rjb(acth, &wrfs)) - { - if ((rc = write(acth, hoptr, hocc)) <= 0) - fault("write acth: %d: %s\n", rc, strerror(errno)); - hoptr += rc; - hocc -= rc; - } - if (FD_ISSET_rjb(acto, &wrfs)) - { - /* If in gdb mode send gdb input, otherwise send low data - preferentially */ - if (gdbmode) - { - assert(gicc); - if ((rc = write(acto, giptr, gicc)) <= 0) - fault("write acto: %d: %s\n", rc, strerror(errno)); - giptr += rc; - gicc -= rc; - } - else - { - if (licc) - { - if ((rc = write(acto, liptr, licc)) <= 0) - fault("write acto: %d: %s\n", rc, strerror(errno)); - liptr += rc; - licc -= rc; - } - else - { - assert(hicc); - if ((rc = write(acto, hiptr, hicc)) <= 0) - fault("write acto: %d: %s\n", rc, strerror(errno)); - hiptr += rc; - hicc -= rc; - } - } - } - - /* Deals with new connections */ - if ((acth == 32) && lish>=0 && (FD_ISSET_rjb(lish, &rdfs))) - { - fromlen = sizeof(from); - if ((acth = accept(lish, &from, &fromlen)) < 0) - { - syslog(LOG_WARNING, "accept: %m"); - acth = 32; - } - else - { - noblock(acth); - hicc = hocc = 0; - syslog(LOG_INFO, "highbit client peer is %s:%u\n", - inet_ntoa(from.sin_addr), ntohs(from.sin_port)); - } - } - - if ((actg == 32) && (FD_ISSET_rjb(lisg, &rdfs))) - { - fromlen = sizeof(from); - if ((actg = accept(lisg, &from, &fromlen)) < 0) - { - syslog(LOG_WARNING, "accept: %m"); - actg = 32; - } - else - { - noblock(actg); - gicc = 0; - gdbmode = TRUE; - syslog(LOG_INFO, "gdb client peer is %s:%u\n", - inet_ntoa(from.sin_addr), ntohs(from.sin_port)); - } - } - - if ((actc == 32) && (FD_ISSET_rjb(lisc, &rdfs))) - { - fromlen = sizeof(from); - if ((actc = accept(lisc, &from, &fromlen)) < 0) - { - syslog(LOG_WARNING, "accept (ctl): %m"); - actc = 32; - } - else - { - noblock(actc); - syslog(LOG_INFO, "ctl client peer is %s:%u\n", - inet_ntoa(from.sin_addr), ntohs(from.sin_port)); - } - } - - /* Back to top of loop */ - } - - /* We are bailing because one of the primary connections has gone - * away. We close these all explicitly here because that way the - * timeout on reusing the port numbers is smnaller. */ - - close(acth); - close(actg); - /* XXX AND: why are we closing all these "character counts" ?? */ - close(gicc); - close(oicc); - close(licc); - close(locc); - close(hicc); - close(hocc); -} - -/* - * ------------------------------------------------------------ - */ -int main(int argc, char **argv) -{ - /* In general, suffix "l" is low channel, "h" is high channel, "g" - * is gdb channel, "c" is control channel and "o" is output channel. - */ - struct sockaddr_in from; - int infd = 0, outfd; - unsigned short portl, porth, portg, portc, porto; - int on = 1, c; - char *outname, *outservice; - int fromlen; - int lish, lisg, lisc; -#if 0 - FILE *newerr; -#endif /* 0 */ - - prog_name = argv[0]; - - if (isatty(infd)) - usage(); - - /* Here, then not just a simple idiot. */ - - signal(SIGPIPE, SIG_IGN); - - openlog(prog_name, LOG_PID, LOG_DAEMON); - - fromlen = sizeof(from); - if (getsockname(infd, &from, &fromlen) < 0) - fault("getsockname: %s", strerror(errno)); - if ((fromlen != sizeof(from)) || (from.sin_family != AF_INET)) - fault("not an inet socket (family=%d)\n", from.sin_family); - - portl = ntohs(from.sin_port); - porth = portl+1; - portg = porth+1; - portc = portg+1; - - fromlen = sizeof(from); - if (getpeername(infd, &from, &fromlen) < 0) - fault("getpeername: %s", strerror(errno)); - if ((fromlen != sizeof(from)) || (from.sin_family != AF_INET)) - fault("not an inet socket (family=%d)\n", from.sin_family); - - syslog(LOG_INFO, "on port %u peer is %s:%u\n", portl, - inet_ntoa(from.sin_addr), ntohs(from.sin_port)); - - if (setsockopt(infd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof (on)) < 0) - syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m"); - - /* from here on, we map stderr to output on the connection so we can - * report errors to the remote user. - */ -#if 0 - if (!(newerr = fdopen(infd, "w"))) - syslog(LOG_WARNING, "fdopen: %m"); - else - *stderr = *newerr; -#endif - - while((c = getopt(argc, argv, "d8h:g:c:")) != EOF) - { - switch(c) - { - case 'd': - debug++; - break; - - case 'h': - /* high bit port */ - if (getservice(optarg, &porth) < 0) - fault("getservice failed (high port '%s')\n", optarg); - break; - - case 'g': - /* gdb port */ - if (getservice(optarg, &portg) < 0) - fault("getservice failed (gdb port '%s')\n", optarg); - break; - - case 'c': - /* control port */ - if (getservice(optarg, &portc) < 0) - fault("getservice failed (control port '%s')\n", optarg); - break; - - case '8': - /* 8-bit clean; no high port */ - porth=0; - break; - - default: - fault("bad argument list!\n"); - } - } - - if (argc != optind + 1) - fault("unparsed arguments (%d!=%d)\n", argc, optind+1); - - outname = argv[optind]; - if (!(outservice = strchr(outname, ':'))) - fault("output arg '%s' doesn't contain ':'\n", outname); - *outservice++ = 0; - if (getservice(outservice, &porto) < 0) - fault("getservice failed (output port '%s')\n", outservice); - - /* Time to start the sockets */ - - if (porth) { - lish = startlistening(porth); - } else { - lish = -1; - } - lisg = startlistening(portg); - lisc = startlistening(portc); - - outfd = connect_host(outname, porto); - - doit(infd, outfd, lish, lisg, lisc); - - syslog(LOG_INFO, "terminating normally\n"); - - fclose(stderr); - - closelog(); - exit(0); -} - -/* End $Id: nsplitd.c,v 2.6 1998/09/17 14:28:37 sde1000 Exp $ */ diff --git a/tools/misc/xen-python-path b/tools/misc/xen-python-path deleted file mode 100644 index 073abae..0000000 --- a/tools/misc/xen-python-path +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env python -# -*- mode: python; -*- -#============================================================================ -# This library is free software; you can redistribute it and/or -# modify it under the terms of version 2.1 of the GNU Lesser General Public -# License as published by the Free Software Foundation. -# -# This library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -#============================================================================ -# Copyright (C) 2007 XenSource Inc. -#============================================================================ - -# Nowadays we install xen in the standard python site-packages -# directories. This script is still provided for the benefit of old -# out-of-xen-tree callers. It is deprecated and will be removed. - -print '/dev/enoent/xen/python-path' -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |