Index: Makefile
===================================================================
--- Makefile (nonexistent)
+++ Makefile (revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url = $(DOWNLOAD_SERVER)/sources/packages/n/netkit-rusers
+
+versions = 0.17
+pkgname = netkit-rusers
+suffix = tar.gz
+
+tarballs = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s = $(addsuffix .sha1sum, $(tarballs))
+
+patches = $(CURDIR)/patches/netkit-rusers-0.17.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+ @echo -e "\n======= Downloading source tarballs =======" ; \
+ for tarball in $(tarballs) ; do \
+ echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+ done ; wait
+
+$(sha1s): $(tarballs)
+ @for sha in $@ ; do \
+ echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+ echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+ touch $$sha ; \
+ echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+ sha1sum --check $$sha ; ret="$$?" ; \
+ if [ "$$ret" == "1" ]; then \
+ echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+ exit 1 ; \
+ fi ; \
+ done
+
+$(patches): $(sha1s)
+ @echo -e "\n======= Create Patches =======\n" ; \
+ ( cd create-0.17-patch ; ./create.patch.sh ) ; \
+ echo -e "\n"
+
+download_clean:
+ @rm -f $(tarballs) $(sha1s) $(patches)
Index: create-0.17-patch/create.patch.sh
===================================================================
--- create-0.17-patch/create.patch.sh (nonexistent)
+++ create-0.17-patch/create.patch.sh (revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=0.17
+
+tar --files-from=file.list -xzvf ../netkit-rusers-$VERSION.tar.gz
+mv netkit-rusers-$VERSION netkit-rusers-$VERSION-orig
+
+cp -rf ./netkit-rusers-$VERSION-new ./netkit-rusers-$VERSION
+
+diff --unified -Nr netkit-rusers-$VERSION-orig netkit-rusers-$VERSION > netkit-rusers-$VERSION.patch
+
+mv netkit-rusers-$VERSION.patch ../patches
+
+rm -rf ./netkit-rusers-$VERSION
+rm -rf ./netkit-rusers-$VERSION-orig
Property changes on: create-0.17-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-0.17-patch/file.list
===================================================================
--- create-0.17-patch/file.list (nonexistent)
+++ create-0.17-patch/file.list (revision 5)
@@ -0,0 +1,9 @@
+netkit-rusers-0.17/configure
+netkit-rusers-0.17/rpc.rusersd/Makefile
+netkit-rusers-0.17/rpc.rusersd/rusers_proc.c
+netkit-rusers-0.17/rpc.rusersd/rusersd.c
+netkit-rusers-0.17/rup/Makefile
+netkit-rusers-0.17/rup/err.c
+netkit-rusers-0.17/rup/rup.c
+netkit-rusers-0.17/rusers/Makefile
+netkit-rusers-0.17/rusers/rusers.c
Index: create-0.17-patch/netkit-rusers-0.17-new/configure
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/configure (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/configure (revision 5)
@@ -0,0 +1,326 @@
+#!/bin/sh
+#
+# This file was generated by confgen version 2.
+# Do not edit.
+#
+
+PREFIX='/usr'
+#EXECPREFIX='$PREFIX'
+INSTALLROOT=''
+BINMODE='755'
+#DAEMONMODE='$BINMODE'
+MANMODE='644'
+
+while [ x$1 != x ]; do case $1 in
+
+ --help)
+ cat <<EOF
+Usage: configure [options]
+ --help Show this message
+ --with-debug Enable debugging
+ --prefix=path Prefix for location of files [/usr]
+ --exec-prefix=path Location for arch-depedent files [prefix]
+ --installroot=root Top of filesystem tree to install in [/]
+ --binmode=mode Mode for binaries [755]
+ --daemonmode=mode Mode for daemon binaries [same as binmode]
+ --manmode=mode Mode for manual pages [644]
+ --with-c-compiler=cc Program for compiling C source [guessed]
+EOF
+ exit 0;;
+ --verbose) ;;
+ --quiet) ;;
+
+ --subdir) . ../configure.defs;;
+
+ --with-debug|--debug) DEBUG=1;;
+ --prefix=*) PREFIX=`echo $1 | sed 's/^[^=]*=//'` ;;
+ --exec-prefix=*) EXECPREFIX=`echo $1 | sed 's/^[^=]*=//'` ;;
+ --installroot=*) INSTALLROOT=`echo $1 | sed 's/^[^=]*=//'` ;;
+ --binmode=*) BINMODE=`echo $1 | sed 's/^[^=]*=//'` ;;
+ --daemonmode=*) DAEMONMODE=`echo $1 | sed 's/^[^=]*=//'` ;;
+ --manmode=*) MANMODE=`echo $1 | sed 's/^[^=]*=//'` ;;
+ --with-c-compiler=*) CC=`echo $1 | sed 's/^[^=]*=//'` ;;
+ *) echo "Unrecognized option: $1"; exit 1;;
+esac
+shift
+done
+
+if [ x$EXECPREFIX = x ]; then
+ EXECPREFIX="$PREFIX"
+fi
+
+if [ x$DAEMONMODE = x ]; then
+ DAEMONMODE="$BINMODE"
+fi
+
+BINDIR="$EXECPREFIX/bin"
+SBINDIR="$EXECPREFIX/sbin"
+MANDIR="$PREFIX/share/man"
+
+echo "Directories: $BINDIR $SBINDIR $MANDIR "
+
+if [ x$INSTALLROOT != x ]; then
+ echo "Installing in chroot tree rooted at $INSTALLROOT"
+fi
+
+##################################################
+
+WARNINGS='-Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline '
+
+cat << EOF > __conftest.c
+ int main() { int class=0; return class; }
+EOF
+
+if [ x"$CC" = x ]; then
+ echo -n 'Looking for a C compiler... '
+ for TRY in egcs gcc g++ CC c++ cc; do
+ (
+ $TRY __conftest.c -o __conftest || exit 1;
+# ./__conftest || exit 1;
+ ) >/dev/null 2>&1 || continue;
+ CC=$TRY
+ break;
+ done
+ if [ x"$CC" = x ]; then
+ echo 'failed.'
+ echo 'Cannot find a C compiler. Run configure with --with-c-compiler.'
+ rm -f __conftest*
+ exit
+ fi
+ echo "$CC"
+else
+ echo -n 'Checking if C compiler works... '
+ if (
+ $CC __conftest.c -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+ else
+ echo 'no'
+ echo 'Compiler '"$CC"' does not exist or cannot compile C; try another.'
+ rm -f __conftest*
+ exit
+ fi
+fi
+
+echo -n "Checking if $CC accepts gcc warnings... "
+if (
+ $CC $WARNINGS __conftest.c -o __conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+ CC_WARNINGS=1
+else
+ echo 'no'
+fi
+
+if [ x$DEBUG = x ]; then
+ echo -n "Checking if $CC accepts -O2... "
+ if (
+ $CC -O2 __conftest.c -o __conftest
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+ CFLAGS="$CFLAGS -O2"
+ else
+ echo 'no'
+ echo -n "Checking if $CC accepts -O... "
+ if (
+ $CC -O __conftest.c -o __conftest
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+ CFLAGS="$CFLAGS -O"
+ else
+ echo 'no'
+ fi
+ fi
+
+else
+ echo -n "Checking if $CC accepts -g... "
+ if (
+ $CC -g __conftest.c -o __conftest
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+ CFLAGS="$CFLAGS -g"
+ else
+ echo 'no'
+ fi
+
+fi
+
+LDFLAGS=$LDFLAGS
+LIBS=$LIBS
+
+rm -f __conftest*
+
+##################################################
+
+echo -n 'Checking for BSD signal semantics... '
+cat <<EOF >__conftest.c
+#include <unistd.h>
+#include <signal.h>
+int count=0;
+void handle(int foo) { count++; }
+int main() {
+ int pid=getpid();
+ signal(SIGINT, handle);
+ kill(pid,SIGINT);
+ kill(pid,SIGINT);
+ kill(pid,SIGINT);
+ if (count!=3) return 1;
+ return 0;
+}
+
+EOF
+if (
+ $CC $CFLAGS __conftest.c -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+else
+ if (
+ $CC $CFLAGS -D__USE_BSD_SIGNAL __conftest.c -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo '-D__USE_BSD_SIGNAL'
+ CFLAGS="$CFLAGS -D__USE_BSD_SIGNAL"
+ else
+ echo 'no'
+ echo 'This package needs BSD signal semantics to run.'
+ rm -f __conftest*
+ exit
+ fi
+fi
+rm -f __conftest*
+
+##################################################
+
+echo -n 'Checking for GNU libc... '
+cat <<EOF >__conftest.c
+#include <stdio.h>
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+int tester;
+#endif
+int main() { tester=6; return 0; }
+
+EOF
+if (
+ $CC $CFLAGS __conftest.c -o __conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo 'yes'
+ USE_GLIBC=1
+else
+ echo 'no'
+fi
+rm -f __conftest*
+
+##################################################
+
+echo -n 'Checking for snprintf declaration... '
+cat <<EOF >__conftest.c
+#include <stdio.h>
+int main() {
+ void *x = (void *)snprintf;
+ printf("%lx", (long)x);
+ return 0;
+}
+
+EOF
+if (
+ $CC $CFLAGS __conftest.c -o __conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo 'ok'
+else
+ if (
+ $CC $CFLAGS -D_GNU_SOURCE __conftest.c -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo '-D_GNU_SOURCE'
+ CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ else
+ echo 'manual'
+ CFLAGS="$CFLAGS -DDECLARE_SNPRINTF"
+ fi
+fi
+rm -f __conftest*
+
+echo -n 'Checking for snprintf implementation... '
+cat <<EOF >__conftest.c
+#include <stdio.h>
+#include <string.h>
+#ifdef DECLARE_SNPRINTF
+#ifdef __cplusplus
+extern "C"
+#endif /*__cplusplus*/
+int snprintf(char *, int, const char *, ...);
+#endif /*DECLARE_SNPRINTF*/
+int main() {
+ char buf[32];
+ snprintf(buf, 8, "%s", "1234567890");
+ if (strlen(buf)!=7) return 1;
+ return 0;
+}
+
+EOF
+if (
+ $CC $CFLAGS __conftest.c $LIBBSD -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo 'ok'
+else
+ if (
+ $CC $CFLAGS __conftest.c -lsnprintf $LIBBSD -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo '-lsnprintf'
+ LIBS="$LIBS -lsnprintf"
+ else
+ if (
+ $CC $CFLAGS __conftest.c -ldb $LIBBSD -o __conftest || exit 1
+# ./__conftest || exit 1
+ ) >/dev/null 2>&1; then
+ echo '-ldb'
+ LIBS="$LIBS -ldb"
+ else
+ echo 'missing'
+ echo 'This package requires snprintf.'
+ rm -f __conftest*
+ exit
+ fi
+ fi
+fi
+rm -f __conftest*
+
+##################################################
+
+## libbsd should go last in case it's broken
+if [ "x$LIBBSD" != x ]; then
+ LIBS="$LIBS $LIBBSD"
+fi
+
+echo 'Generating MCONFIG...'
+(
+ echo -n '# Generated by configure (confgen version 2) on '
+ date
+ echo '#'
+ echo
+
+ echo "BINDIR=$BINDIR"
+ echo "SBINDIR=$SBINDIR"
+ echo "MANDIR=$MANDIR"
+ echo "BINMODE=$BINMODE"
+ echo "DAEMONMODE=$DAEMONMODE"
+ echo "MANMODE=$MANMODE"
+ echo "PREFIX=$PREFIX"
+ echo "EXECPREFIX=$EXECPREFIX"
+ echo "INSTALLROOT=$INSTALLROOT"
+ echo "CC=$CC"
+ if [ x$CC_WARNINGS != x ]; then
+ CFLAGS="$CFLAGS $WARNINGS"
+ fi
+
+ echo "CFLAGS=$CFLAGS" | sed 's/= */=/'
+ echo "LDFLAGS=$LDFLAGS" | sed 's/= */=/'
+ echo "LIBS=$LIBS" | sed 's/= */=/'
+
+ echo "USE_GLIBC=$USE_GLIBC"
+) > MCONFIG
+
Property changes on: create-0.17-patch/netkit-rusers-0.17-new/configure
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/Makefile
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/Makefile (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/Makefile (revision 5)
@@ -0,0 +1,48 @@
+all: rusersd
+include ../MCONFIG
+include ../MRULES
+
+ifeq ($(USE_GLIBC),1)
+CFLAGS += -DGNU_LIBC -D_GNU_SOURCE -D_NO_UT_TIME
+endif
+
+
+# .if exists(/usr/include/X11/extensions/xidle.h)
+#CFLAGS+= -DXIDLE
+#LDADD+= -L/usr/X386/lib -lXext -lX11
+# .endif
+
+#
+# use BUILD machine rpcgen
+#
+RPCGEN=/usr/bin/rpcgen
+
+# Warning, do not put this in the current directory without updating
+# the clean target.
+# RUSERSX=/usr/include/rpcsvc/rusers.x
+RUSERSX=$(TARGET_DEST_DIR)/usr/include/rpcsvc/rusers.x
+
+rusersd: rusersd.o rusers_proc.o rusers_xdr.o daemon.o
+ $(CC) $(LDFLAGS) $^ $(LIBS) -o $@
+
+install: rusersd
+ install -s -m$(DAEMONMODE) rusersd $(INSTALLROOT)$(SBINDIR)/rpc.rusersd
+ install -m$(MANMODE) rpc.rusersd.8 $(INSTALLROOT)$(MANDIR)/man8
+ ln -sf rpc.rusersd.8 $(INSTALLROOT)$(MANDIR)/man8/rusersd.8
+
+clean:
+ rm -f *.o rusersd rusers.h rusers_xdr.c rusers.x
+
+rusersd.o: ../version.h
+rusersd.o rusers_proc.o: rusers.h
+rusers_xdr.o: rusers_xdr.c rusers.h
+
+# see rusers makefile for an explanation of why this is necessary
+rusers.x:
+ ln -s $(RUSERSX) rusers.x
+
+rusers.h: $(RUSERSX) rusers.x
+ $(RPCGEN) -h -o rusers.h rusers.x
+
+rusers_xdr.c: $(RUSERSX)
+ $(RPCGEN) -c -C -o rusers_xdr.c rusers.x
Index: create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/rusers_proc.c
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/rusers_proc.c (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/rusers_proc.c (revision 5)
@@ -0,0 +1,470 @@
+#/*-
+ * Copyright (c) 1993 John Brezak
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+char rp_rcsid[] =
+ "$Id: rusers_proc.c,v 1.16 2000/07/23 03:11:56 dholland Exp $";
+
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+#include <utmp.h>
+#include <stdio.h>
+#include <syslog.h>
+#include <string.h>
+#include <rpc/rpc.h>
+#include <sys/socket.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#ifdef XIDLE
+#include <setjmp.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/xidle.h>
+#endif
+
+/*
+ * Sigh.
+ */
+#ifdef __GLIBC__
+ #define UT_TIME ut_xtime
+ #define RUT_TIME rut_time
+#else
+ #define UT_TIME ut_time
+ #define RUT_TIME ut_time
+#endif
+
+/* Glibc strikes again */
+#ifdef __GLIBC__
+ #include <rpcsvc/rusers.h>
+#else
+ #include "rusers.h"
+#endif
+
+void rusers_service(struct svc_req *rqstp, SVCXPRT *transp);
+
+#define IGNOREUSER "sleeper"
+
+#ifndef _PATH_DEV
+#define _PATH_DEV "/dev"
+#endif
+
+#ifndef UT_LINESIZE
+#define UT_LINESIZE sizeof(((struct utmp *)0)->ut_line)
+#endif
+#ifndef UT_NAMESIZE
+#define UT_NAMESIZE sizeof(((struct utmp *)0)->ut_name)
+#endif
+#ifndef UT_HOSTSIZE
+#define UT_HOSTSIZE sizeof(((struct utmp *)0)->ut_host)
+#endif
+
+typedef char ut_line_t[UT_LINESIZE+1];
+typedef char ut_name_t[UT_NAMESIZE+1];
+typedef char ut_host_t[UT_HOSTSIZE+1];
+
+struct rusers_utmp utmps[MAXUSERS];
+struct utmpidle *utmp_idlep[MAXUSERS];
+struct utmpidle utmp_idle[MAXUSERS];
+ut_line_t line[MAXUSERS];
+ut_name_t name[MAXUSERS];
+ut_host_t host[MAXUSERS];
+
+extern int from_inetd;
+
+#ifdef XIDLE
+Display *dpy;
+
+static sigjmp_buf openAbort;
+
+static void
+abortOpen ()
+{
+ siglongjmp (openAbort, 1);
+}
+
+static long
+XqueryIdle(char *display)
+{
+ int first_event, first_error;
+ Time IdleTime;
+ int result = -1;
+
+ (void) signal (SIGALRM, abortOpen);
+ (void) alarm ((unsigned) 10);
+ if (!sigsetjmp(openAbort, 1)) {
+ if (!(dpy= XOpenDisplay(display))) {
+ syslog(LOG_ERR, "Cannot open display %s", display);
+ goto out;
+ }
+ if (XidleQueryExtension(dpy, &first_event, &first_error)) {
+ if (!XGetIdleTime(dpy, &IdleTime)) {
+ syslog(LOG_ERR, "%s: Unable to get idle time.", display);
+ goto out;
+ }
+ }
+ else {
+ syslog(LOG_ERR, "%s: Xidle extension not loaded.", display);
+ goto out;
+ }
+ XCloseDisplay(dpy);
+ }
+ else {
+ syslog(LOG_ERR, "%s: Server grabbed for over 10 seconds.", display);
+ goto out;
+ }
+
+ IdleTime /= 1000;
+ result = (IdleTime + 30) / 60;
+
+out:
+ (void) signal (SIGALRM, SIG_DFL);
+ (void) alarm ((unsigned) 0);
+ return result;
+}
+#endif
+
+static u_int
+getidle(char *tty, char *display)
+{
+ struct stat st;
+ char devname[PATH_MAX];
+ time_t now;
+ long idletime;
+
+ (void)display;
+
+ /* Don't trust utmp data */
+ if (strstr(tty, "../"))
+ return 0;
+
+ /*
+ * If this is an X terminal or console, then try the
+ * XIdle extension
+ */
+#ifdef XIDLE
+ if (display && *display && (idletime = XqueryIdle(display)) >= 0)
+ return(idletime);
+#endif
+ idletime = 0;
+#if 0
+ if (*tty == 'X') {
+ u_long kbd_idle, mouse_idle;
+#if !defined(i386)
+ kbd_idle = getidle("kbd", NULL);
+#else
+#if (__GNUC__ >= 2)
+#warning i386 console hack here
+#endif
+ kbd_idle = getidle("vga", NULL);
+#endif
+ mouse_idle = getidle("mouse", NULL);
+ idletime = (kbd_idle < mouse_idle)?kbd_idle:mouse_idle;
+ }
+ else {
+#endif
+ {
+ snprintf(devname, sizeof(devname), "%s/%s", _PATH_DEV, tty);
+ if (stat(devname, &st) < 0) {
+#ifdef DEBUG
+ printf("%s: %s\n", devname, strerror(errno));
+#endif
+ return(-1);
+ }
+ time(&now);
+#ifdef DEBUG
+ printf("%s: now=%d atime=%d\n", devname, now,
+ st.st_atime);
+#endif
+ if (now < st.st_atime) idletime = 0;
+ else idletime = now - st.st_atime;
+ idletime = (idletime + 30) / 60; /* secs->mins */
+ }
+ /* idletime is unsigned */
+ /* if (idletime < 0) idletime = 0; */
+
+ return idletime;
+}
+
+static
+char *
+rusers_num(void *ign1, struct svc_req *ign2)
+{
+ static int num_users = 0;
+ struct utmp *uptr;
+ (void)ign1;
+ (void)ign2;
+
+ /* only use entries with both name and line fields */
+
+ setutent();
+ while ((uptr = getutent())!=NULL) {
+ if (*uptr->ut_name && *uptr->ut_line &&
+ strncmp(uptr->ut_name, IGNOREUSER,
+ sizeof(uptr->ut_name))
+#ifdef USER_PROCESS
+ && uptr->ut_type == USER_PROCESS
+#endif
+ ) {
+ num_users++;
+ }
+ }
+ endutent();
+ return (char *) &num_users;
+}
+
+static utmp_array *
+do_names_3(int all)
+{
+ static utmp_array ut;
+ struct utmp *uptr;
+ int nusers = 0;
+
+ (void)all;
+
+ memset(&ut, 0, sizeof(ut));
+ ut.utmp_array_val = &utmps[0];
+
+ /* only use entries with both name and line fields */
+
+ setutent();
+ while ((uptr = getutent())!=NULL && nusers < MAXUSERS) {
+ if (*uptr->ut_name && *uptr->ut_line &&
+ strncmp(uptr->ut_name, IGNOREUSER,
+ sizeof(uptr->ut_name))
+#ifdef USER_PROCESS
+ && uptr->ut_type == USER_PROCESS
+#endif
+ ) {
+ utmps[nusers].ut_type = RUSERS_USER_PROCESS;
+ utmps[nusers].ut_time =
+ uptr->UT_TIME;
+ utmps[nusers].ut_idle =
+ getidle(uptr->ut_line, uptr->ut_host);
+ utmps[nusers].ut_line = line[nusers];
+ strncpy(line[nusers], uptr->ut_line,
+ sizeof(line[nusers]));
+ line[nusers][sizeof(line[nusers])-1] = 0;
+ utmps[nusers].ut_user = name[nusers];
+ strncpy(name[nusers], uptr->ut_name,
+ sizeof(name[nusers]));
+ name[nusers][sizeof(name[nusers])-1] = 0;
+ utmps[nusers].ut_host = host[nusers];
+ strncpy(host[nusers], uptr->ut_host,
+ sizeof(host[nusers]));
+ host[nusers][sizeof(host[nusers])-1] = 0;
+
+ line[nusers][UT_LINESIZE] = '\0';
+ name[nusers][UT_NAMESIZE] = '\0';
+ host[nusers][UT_HOSTSIZE] = '\0';
+
+ nusers++;
+ }
+ }
+ ut.utmp_array_len = nusers;
+
+ endutent();
+ return &ut;
+}
+
+utmp_array *
+rusersproc_names_3(void *tmp1, CLIENT *tmp2)
+{
+ (void)tmp1;
+ (void)tmp2;
+ return do_names_3(0);
+}
+
+utmp_array *
+rusersproc_allnames_3(void *tmp1, CLIENT *tmp2)
+{
+ (void)tmp1;
+ (void)tmp2;
+ return do_names_3(1);
+}
+
+static void do_strncpy(char *tgt, const char *src, size_t len) {
+ strncpy(tgt, src, len);
+ tgt[len-1] = 0;
+}
+
+static
+struct utmpidlearr *
+do_names_2(int all)
+{
+ static struct utmpidlearr ut;
+ struct utmp *uptr;
+ int nusers = 0;
+
+ (void)all;
+
+ memset(&ut, 0, sizeof(ut));
+ ut.uia_arr = utmp_idlep;
+ ut.uia_cnt = 0;
+
+ /* only use entries with both name and line fields */
+
+ setutent();
+ while ((uptr = getutent())!=NULL && nusers < MAXUSERS) {
+ if (*uptr->ut_name && *uptr->ut_line &&
+ strncmp(uptr->ut_name, IGNOREUSER,
+ sizeof(uptr->ut_name))
+#ifdef USER_PROCESS
+ && uptr->ut_type == USER_PROCESS
+#endif
+ ) {
+ utmp_idlep[nusers] = &utmp_idle[nusers];
+ utmp_idle[nusers].ui_utmp.ut_time =
+ uptr->UT_TIME;
+ utmp_idle[nusers].ui_idle =
+ getidle(uptr->ut_line, uptr->ut_host);
+ do_strncpy(utmp_idle[nusers].ui_utmp.ut_line,
+ uptr->ut_line,
+ sizeof(utmp_idle[nusers].ui_utmp.ut_line));
+ /* note NOT do_strncpy */
+ strncpy(utmp_idle[nusers].ui_utmp.ut_name,
+ uptr->ut_name,
+ sizeof(utmp_idle[nusers].ui_utmp.ut_name));
+ do_strncpy(utmp_idle[nusers].ui_utmp.ut_host,
+ uptr->ut_host,
+ sizeof(utmp_idle[nusers].ui_utmp.ut_host));
+ nusers++;
+ }
+ }
+
+ ut.uia_cnt = nusers;
+ endutent();
+ return(&ut);
+}
+
+static
+char *
+rusersproc_names_2(void)
+{
+ return (char *) do_names_2(0);
+}
+
+static
+char *
+rusersproc_allnames_2(void)
+{
+ return (char *) do_names_2(1);
+}
+
+void
+rusers_service(struct svc_req *rqstp, SVCXPRT *transp)
+{
+ union {
+ int fill;
+ } argument;
+ char *result;
+ bool_t (*xdr_argument)(void);
+ xdrproc_t xdr_result;
+ typedef char *(*localproc_t)(void *, struct svc_req *);
+ localproc_t local;
+
+ switch (rqstp->rq_proc) {
+ case NULLPROC:
+ (void)svc_sendreply(transp, (xdrproc_t) xdr_void, NULL);
+ goto leave;
+
+ case RUSERSPROC_NUM:
+ xdr_argument = xdr_void;
+ xdr_result = (xdrproc_t) xdr_int;
+ switch (rqstp->rq_vers) {
+ case RUSERSVERS_3:
+ case RUSERSVERS_IDLE:
+ local = rusers_num;
+ break;
+ default:
+ svcerr_progvers(transp, RUSERSVERS_IDLE, RUSERSVERS_3);
+ goto leave;
+ }
+ break;
+
+ case RUSERSPROC_NAMES:
+ xdr_argument = xdr_void;
+ xdr_result = (xdrproc_t) xdr_utmp_array;
+ switch (rqstp->rq_vers) {
+ case RUSERSVERS_3:
+ local = (localproc_t) rusersproc_names_3;
+ break;
+
+ case RUSERSVERS_IDLE:
+ xdr_result = (xdrproc_t) xdr_utmpidlearr;
+ local = (localproc_t) rusersproc_names_2;
+ break;
+
+ default:
+ svcerr_progvers(transp, RUSERSVERS_IDLE, RUSERSVERS_3);
+ goto leave;
+ /*NOTREACHED*/
+ }
+ break;
+
+ case RUSERSPROC_ALLNAMES:
+ xdr_argument = xdr_void;
+ xdr_result = (xdrproc_t) xdr_utmp_array;
+ switch (rqstp->rq_vers) {
+ case RUSERSVERS_3:
+ local = (localproc_t) rusersproc_allnames_3;
+ break;
+
+ case RUSERSVERS_IDLE:
+ xdr_result = (xdrproc_t) xdr_utmpidlearr;
+ local = (localproc_t) rusersproc_allnames_2;
+ break;
+
+ default:
+ svcerr_progvers(transp, RUSERSVERS_IDLE, RUSERSVERS_3);
+ goto leave;
+ /*NOTREACHED*/
+ }
+ break;
+
+ default:
+ svcerr_noproc(transp);
+ goto leave;
+ }
+ memset(&argument, 0, sizeof(argument));
+ if (!svc_getargs(transp, (xdrproc_t)xdr_argument, (char *)&argument)) {
+ svcerr_decode(transp);
+ goto leave;
+ }
+ result = (*local)(&argument, rqstp);
+ if (result != NULL &&
+ !svc_sendreply(transp, xdr_result, result)) {
+ svcerr_systemerr(transp);
+ }
+ if (!svc_freeargs(transp, (xdrproc_t)xdr_argument, (char *)&argument)) {
+ (void)fprintf(stderr, "unable to free arguments\n");
+ exit(1);
+ }
+leave:
+ if (from_inetd)
+ exit(0);
+}
Index: create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/rusersd.c
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/rusersd.c (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd/rusersd.c (revision 5)
@@ -0,0 +1,135 @@
+/*-
+ * Copyright (c) 1993 John Brezak
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+char rusersd_rcsid[] =
+ "$Id: rusersd.c,v 1.10 2000/07/23 04:09:28 dholland Exp $";
+
+#include <stdio.h>
+#include <signal.h>
+#include <sys/socket.h>
+#include <syslog.h>
+#include <pwd.h>
+#include <rpc/rpc.h>
+#include <rpc/pmap_clnt.h>
+#include <unistd.h>
+#include <grp.h>
+#ifdef __GLIBC__
+ #include <rpcsvc/rusers.h>
+#else
+ #include "rusers.h"
+#endif
+
+#include "../version.h"
+
+void rusers_service(struct svc_req *rqstp, SVCXPRT *transp);
+int daemon(int, int);
+
+int from_inetd = 1;
+
+static
+void
+cleanup(int ignore)
+{
+ (void)ignore;
+
+ pmap_unset(RUSERSPROG, RUSERSVERS_3);
+ pmap_unset(RUSERSPROG, RUSERSVERS_IDLE);
+ exit(0);
+}
+
+int
+main(void)
+{
+ SVCXPRT *transp;
+ int sock = 0;
+ int proto = 0;
+ struct sockaddr_in from;
+ socklen_t fromlen = (socklen_t)sizeof(from);
+
+
+ /* Open syslog */
+ openlog("rpc.rusersd", LOG_PID, LOG_DAEMON);
+
+ /* Drop privilege */
+ if (getuid() == 0) {
+ struct passwd *pw;
+
+ if ((pw = getpwnam("nobody")) == NULL) {
+ syslog(LOG_WARNING, "Unable to find user nobody: %m");
+ exit(1);
+ }
+ if (setgroups(1, &pw->pw_gid) < 0
+ || setgid(pw->pw_gid) < 0
+ || setuid(pw->pw_uid) < 0) {
+ syslog(LOG_WARNING, "Failed to drop privilege: %m");
+ exit(1);
+ }
+ }
+
+
+ /*
+ * See if inetd started us
+ */
+ if (getsockname(0, (struct sockaddr *)&from, &fromlen) < 0) {
+ from_inetd = 0;
+ sock = RPC_ANYSOCK;
+ proto = IPPROTO_UDP;
+ }
+
+ if (!from_inetd) {
+ daemon(0, 0);
+
+ pmap_unset(RUSERSPROG, RUSERSVERS_3);
+ pmap_unset(RUSERSPROG, RUSERSVERS_IDLE);
+
+ signal(SIGINT, cleanup);
+ signal(SIGTERM, cleanup);
+ signal(SIGHUP, cleanup);
+ }
+
+ openlog("rpc.rusersd", LOG_PID, LOG_DAEMON);
+
+ transp = svcudp_create(sock);
+ if (transp == NULL) {
+ syslog(LOG_ERR, "cannot create udp service.");
+ exit(1);
+ }
+ if (!svc_register(transp, RUSERSPROG, RUSERSVERS_3, rusers_service, proto)) {
+ syslog(LOG_ERR, "unable to register (RUSERSPROG, RUSERSVERS_3, %s).", proto?"udp":"(inetd)");
+ exit(1);
+ }
+
+ if (!svc_register(transp, RUSERSPROG, RUSERSVERS_IDLE, rusers_service, proto)) {
+ syslog(LOG_ERR, "unable to register (RUSERSPROG, RUSERSVERS_IDLE, %s).", proto?"udp":"(inetd)");
+ exit(1);
+ }
+
+ svc_run();
+ syslog(LOG_ERR, "svc_run returned");
+ exit(1);
+}
Index: create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd (revision 5)
Property changes on: create-0.17-patch/netkit-rusers-0.17-new/rpc.rusersd
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-0.17-patch/netkit-rusers-0.17-new/rup/Makefile
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rup/Makefile (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rup/Makefile (revision 5)
@@ -0,0 +1,48 @@
+all: rup
+
+include ../MCONFIG
+include ../MRULES
+
+ifeq ($(USE_GLIBC),1)
+CFLAGS += -DGNU_LIBC -D_GNU_SOURCE
+endif
+
+CFLAGS += -I.
+
+#RPCGEN=../../netkit-base/rpcgen/rpcgen
+#
+# use BUILD machine rpcgen
+#
+RPCGEN=/usr/bin/rpcgen
+
+# Warning, do NOT put this in the current directory without updating
+# the clean target.
+# RSTATX=/usr/include/rpcsvc/rstat.x
+RSTATX=$(TARGET_DEST_DIR)/usr/include/rpcsvc/rstat.x
+
+rup: rup.o rstat_xdr.o err.o
+ $(CC) $(LDFLAGS) $^ $(LIBS) -o $@
+
+rup.o: ../version.h
+
+install: rup
+ install -s -m$(BINMODE) rup $(INSTALLROOT)$(BINDIR)
+ install -m$(MANMODE) rup.1 $(INSTALLROOT)$(MANDIR)/man1
+
+clean:
+ rm -f *.o rup rstat.h rstat_xdr.c rstat.x
+
+rstat_xdr.o: rstat_xdr.c rstat.h
+
+# rpcgen includes the pathname you specify for the .x file as the
+# pathname of the .h file when it builds the .c file. Therefore,
+# do it in the current directory.
+
+rstat.x:
+ ln -s $(RSTATX) $@
+
+rstat.h: $(RSTATX) rstat.x
+ $(RPCGEN) -h -o rstat.h rstat.x
+
+rstat_xdr.c: $(RSTATX) rstat.x
+ $(RPCGEN) -c -C -o rstat_xdr.c rstat.x
Index: create-0.17-patch/netkit-rusers-0.17-new/rup/err.c
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rup/err.c (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rup/err.c (revision 5)
@@ -0,0 +1,30 @@
+/*
+ * Reimplementation of err/warnx.
+ */
+
+char err_rcsid[] =
+ "$Id: err.c,v 1.1 1997/04/05 22:13:31 dholland Exp $";
+
+#include <stdlib.h> /* exit() */
+#include <stdio.h>
+#include <stdarg.h>
+#include <err.h>
+
+void err(int eval, const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "rup: ");
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "%m\n");
+ va_end(ap);
+ exit(eval);
+}
+
+void warnx(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "rup: ");
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
Index: create-0.17-patch/netkit-rusers-0.17-new/rup/rup.c
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rup/rup.c (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rup/rup.c (revision 5)
@@ -0,0 +1,346 @@
+/*-
+ * Copyright (c) 1993, John Brezak
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+char rcsid[] = "$Id: rup.c,v 1.8 2000/07/22 19:51:40 dholland Exp $";
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <rpc/rpc.h>
+#include <arpa/inet.h>
+#include <rpc/pmap_clnt.h>
+#include <getopt.h>
+#include <err.h>
+
+#undef FSHIFT /* Use protocol's shift and scale values */
+#undef FSCALE
+#include <rpcsvc/rstat.h>
+
+#include "../version.h"
+
+#define HOST_WIDTH 24
+
+static int print_rup_data(const char *host, statstime *host_stat);
+
+static int printtime; /* print the remote host(s)'s time */
+static int printseconds; /* print in seconds, not formatted */
+
+struct host_list {
+ struct host_list *next;
+ struct in_addr addr;
+} *hosts;
+
+static
+int
+search_host(struct in_addr addr)
+{
+ struct host_list *hp;
+
+ if (!hosts)
+ return(0);
+
+ for (hp = hosts; hp != NULL; hp = hp->next) {
+ if (hp->addr.s_addr == addr.s_addr)
+ return(1);
+ }
+ return(0);
+}
+
+static
+void
+remember_host(struct in_addr addr)
+{
+ struct host_list *hp;
+
+ if (!(hp = (struct host_list *)malloc(sizeof(struct host_list)))) {
+ err(1, "malloc");
+ /* NOTREACHED */
+ }
+ hp->addr.s_addr = addr.s_addr;
+ hp->next = hosts;
+ hosts = hp;
+}
+
+
+struct rup_data {
+ char *host;
+ struct statstime statstime;
+};
+struct rup_data *rup_data;
+int rup_data_idx = 0;
+int rup_data_max = 0;
+
+enum sort_type {
+ SORT_NONE,
+ SORT_HOST,
+ SORT_LDAV,
+ SORT_UPTIME
+};
+enum sort_type sort_type;
+
+static int
+compare(const void *a1, const void *a2)
+{
+ const struct rup_data *d1 = (const struct rup_data *) a1;
+ const struct rup_data *d2 = (const struct rup_data *) a2;
+
+ switch(sort_type) {
+ case SORT_HOST:
+ return strcmp(d1->host, d2->host);
+ case SORT_LDAV:
+ return d1->statstime.avenrun[0]
+ - d2->statstime.avenrun[0];
+ case SORT_UPTIME:
+ return d1->statstime.boottime.tv_sec
+ - d2->statstime.boottime.tv_sec;
+ default:
+ /* something's really wrong here */
+ abort();
+ }
+}
+
+static
+void
+remember_rup_data(const char *host, const struct statstime *st)
+{
+ if (rup_data_idx >= rup_data_max) {
+ rup_data_max += 16;
+ rup_data = realloc (rup_data,
+ rup_data_max * sizeof(struct rup_data));
+ if (rup_data == NULL) {
+ err (1, "realloc");
+ /* NOTREACHED */
+ }
+ }
+
+ rup_data[rup_data_idx].host = strdup(host);
+ rup_data[rup_data_idx].statstime = *st;
+ rup_data_idx++;
+}
+
+
+static
+int
+rstat_reply(char *replyp, struct sockaddr_in *raddrp)
+{
+ struct hostent *hp;
+ const char *host;
+ statstime *host_stat = (statstime *)replyp;
+
+ if (!search_host(raddrp->sin_addr)) {
+ hp = gethostbyaddr((char *)&raddrp->sin_addr.s_addr,
+ sizeof(struct in_addr), AF_INET);
+
+ if (hp)
+ host = hp->h_name;
+ else
+ host = inet_ntoa(raddrp->sin_addr);
+
+ remember_host(raddrp->sin_addr);
+
+ if (sort_type != SORT_NONE) {
+ remember_rup_data(host, host_stat);
+ } else {
+ print_rup_data(host, host_stat);
+ }
+ }
+
+ return 0;
+}
+
+static
+int
+print_rup_data(const char *host, statstime *host_stat)
+{
+ time_t hosttime;
+ long uptime;
+
+ printf("%-*.*s", HOST_WIDTH, HOST_WIDTH, host);
+
+ hosttime = host_stat->curtime.tv_sec;
+ host_stat->curtime.tv_sec -= host_stat->boottime.tv_sec;
+ uptime = host_stat->curtime.tv_sec; /* uptime in seconds */
+
+ if (printtime) {
+ if (printseconds) {
+ printf(" %-12lld", (unsigned long long) hosttime);
+ }
+ else {
+ struct tm *time = localtime(&hosttime);
+ printf(" %2d:%02d%cm", time->tm_hour % 12,
+ time->tm_min,
+ (time->tm_hour >= 12) ? 'p' : 'a');
+ }
+ }
+
+ if (printseconds) {
+ printf(" up %12ld", uptime);
+ }
+ else {
+ uptime /= 60; /* convert to minutes */
+ printf(" up ");
+ if (uptime > 24*60) { /* more than 1 day? */
+ int days = uptime/(24*60);
+ printf("%3d %s ", days, days > 1 ? "days," : "day, ");
+ uptime %= (24*60);
+ }
+ else {
+ printf(" ");
+ }
+
+ if (uptime > 60) {
+ int hours = uptime/60;
+ int mins = uptime%60;
+ printf("%2d:%02d, ", hours, mins);
+ }
+ else {
+ printf("%2ld mins, ", uptime);
+ }
+ }
+ printf(" load average: %.2f %.2f %.2f\n",
+ (double)host_stat->avenrun[0]/FSCALE,
+ (double)host_stat->avenrun[1]/FSCALE,
+ (double)host_stat->avenrun[2]/FSCALE);
+
+ return(0);
+}
+
+static
+void
+onehost(const char *host)
+{
+ CLIENT *rstat_clnt;
+ statstime host_stat;
+ struct timeval foo;
+
+ rstat_clnt = clnt_create(host, RSTATPROG, RSTATVERS_TIME, "udp");
+ if (rstat_clnt == NULL) {
+ warnx("%s", clnt_spcreateerror(host));
+ return;
+ }
+
+ memset(&host_stat, 0, sizeof(host_stat));
+ if (clnt_call(rstat_clnt, RSTATPROC_STATS,
+ (xdrproc_t) xdr_void, NULL,
+ (xdrproc_t) xdr_statstime, (char *)&host_stat,
+ foo) != RPC_SUCCESS)
+ {
+ warnx("%s", clnt_sperror(rstat_clnt, host));
+ return;
+ }
+
+ print_rup_data(host, &host_stat);
+ clnt_destroy(rstat_clnt);
+}
+
+static
+void
+allhosts(void)
+{
+ statstime host_stat;
+ enum clnt_stat clnt_stat;
+ int i;
+
+ if (sort_type != SORT_NONE) {
+ printf("collecting responses...");
+ fflush(stdout);
+ }
+
+ clnt_stat = clnt_broadcast(RSTATPROG, RSTATVERS_TIME, RSTATPROC_STATS,
+ (xdrproc_t) xdr_void, NULL,
+ (xdrproc_t) xdr_statstime,
+ (char *) &host_stat,
+ (resultproc_t) rstat_reply);
+ if (clnt_stat != RPC_SUCCESS && clnt_stat != RPC_TIMEDOUT) {
+ warnx("%s", clnt_sperrno(clnt_stat));
+ exit(1);
+ }
+
+ if (sort_type != SORT_NONE) {
+ putchar('\n');
+ qsort(rup_data, rup_data_idx, sizeof(struct rup_data), compare);
+
+ for (i = 0; i < rup_data_idx; i++) {
+ print_rup_data(rup_data[i].host, &rup_data[i].statstime);
+ }
+ }
+}
+
+static void usage(void)
+{
+ fprintf(stderr, "Usage: rup [-dhlt] [hosts ...]\n");
+ exit(1);
+}
+
+int main(int argc, char *argv[])
+{
+ int ch;
+
+ sort_type = SORT_NONE;
+ while ((ch = getopt(argc, argv, "dshlt")) != -1)
+ switch (ch) {
+ case 'd':
+ printtime = 1;
+ break;
+ case 's':
+ printseconds = 1;
+ break;
+ case 'h':
+ sort_type = SORT_HOST;
+ break;
+ case 'l':
+ sort_type = SORT_LDAV;
+ break;
+ case 't':
+ sort_type = SORT_UPTIME;
+ break;
+ default:
+ usage();
+ /*NOTREACHED*/
+ }
+
+ setlinebuf(stdout);
+
+ if (argc == optind)
+ allhosts();
+ else {
+ for (; optind < argc; optind++)
+ onehost(argv[optind]);
+ }
+
+ exit(0);
+}
Index: create-0.17-patch/netkit-rusers-0.17-new/rup
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rup (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rup (revision 5)
Property changes on: create-0.17-patch/netkit-rusers-0.17-new/rup
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-0.17-patch/netkit-rusers-0.17-new/rusers/Makefile
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rusers/Makefile (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rusers/Makefile (revision 5)
@@ -0,0 +1,48 @@
+all: rusers
+
+include ../MCONFIG
+include ../MRULES
+
+ifeq ($(USE_GLIBC),1)
+CFLAGS += -DGNU_LIBC -D_GNU_SOURCE -D_NO_UT_TIME
+endif
+
+#
+# use BUILD machine rpcgen
+#
+RPCGEN=/usr/bin/rpcgen
+
+# Warning, do NOT put this in the current directory without updating
+# the clean target.
+# RUSERSX = /usr/include/rpcsvc/rusers.x
+RUSERSX = $(TARGET_DEST_DIR)/usr/include/rpcsvc/rusers.x
+
+# The rusers.h file in /usr/include/rpcsvc (at least on my system) appears
+# to have been built with an ancient rpcgen. Therefore, make it anew.
+
+rusers: rusers.o rusers_xdr.o
+ $(CC) $(LDFLAGS) $^ $(LIBS) -o $@
+
+install: rusers
+ install -s -m$(BINMODE) rusers $(INSTALLROOT)$(BINDIR)
+ install -m$(MANMODE) rusers.1 $(INSTALLROOT)$(MANDIR)/man1
+
+clean:
+ rm -f *.o rusers rusers.h rusers_xdr.c rusers.x
+
+rusers.o: rusers.h ../version.h
+rusers_xdr.o: rusers_xdr.c rusers.h
+
+# rpcgen includes the pathname you specify for the .x file as the
+# pathname of the .h file when it builds the .c file. Therefore,
+# do it in the current directory.
+
+rusers.x:
+ ln -s $(RUSERSX) rusers.x
+
+rusers.h: $(RUSERSX) rusers.x
+ $(RPCGEN) -h -o rusers.h rusers.x
+
+rusers_xdr.c: $(RUSERSX) rusers.x
+ $(RPCGEN) -c -C -o rusers_xdr.c rusers.x
+
Index: create-0.17-patch/netkit-rusers-0.17-new/rusers/rusers.c
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rusers/rusers.c (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rusers/rusers.c (revision 5)
@@ -0,0 +1,310 @@
+/*-
+ * Copyright (c) 1993 John Brezak
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef lint
+char rusers_rcsid[] =
+ "$Id: rusers.c,v 1.17 1999/12/12 19:32:05 dholland Exp $";
+#endif /* not lint */
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <string.h>
+#include <rpc/rpc.h>
+#include <rpc/pmap_clnt.h>
+#include <arpa/inet.h>
+#include <utmp.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+
+#include "../version.h"
+
+/*
+ * For now we only try version 2 of the protocol. The current
+ * version is 3 (rusers.h), but only Solaris and NetBSD seem
+ * to support it currently.
+ */
+/*#include <rpcsvc/rnusers.h>*/ /* Old version */
+
+#include "rusers.h" /* get the one we just built with rpcgen */
+
+/*
+ * Sigh.
+ */
+#ifdef GNU_LIBC
+ #define RUT_TIME ut_time
+#else
+ #define RUT_TIME ut_time
+#endif
+
+#define MAX_INT 0x7fffffff
+#define HOST_WIDTH 20
+#define LINE_WIDTH 8
+char *argv0;
+
+struct timeval timeout = { 25, 0 };
+int longopt;
+int allopt;
+
+struct host_list {
+ struct host_list *next;
+ struct in_addr addr;
+} *hosts;
+
+static
+int
+search_host(struct in_addr addr)
+{
+ struct host_list *hp;
+
+ if (!hosts)
+ return(0);
+
+ for (hp = hosts; hp != NULL; hp = hp->next) {
+ if (hp->addr.s_addr == addr.s_addr)
+ return(1);
+ }
+ return(0);
+}
+
+static
+void
+remember_host(struct in_addr addr)
+{
+ struct host_list *hp;
+
+ if (!(hp = (struct host_list *)malloc(sizeof(struct host_list)))) {
+ fprintf(stderr, "%s: no memory.\n", argv0);
+ exit(1);
+ }
+ hp->addr.s_addr = addr.s_addr;
+ hp->next = hosts;
+ hosts = hp;
+}
+
+static
+int
+rusers_reply(char *replyp, struct sockaddr_in *raddrp)
+{
+ int x, idlee;
+ char date[32], idle_time[64], remote[64], local[64];
+ struct hostent *hp;
+ struct utmpidlearr *up = (struct utmpidlearr *)replyp;
+ const char *host;
+ int days, hours, minutes, seconds;
+
+ if (search_host(raddrp->sin_addr))
+ return(0);
+
+ if (!allopt && !up->uia_cnt)
+ return(0);
+
+ hp = gethostbyaddr((char *)&raddrp->sin_addr.s_addr,
+ sizeof(struct in_addr), AF_INET);
+ if (hp)
+ host = hp->h_name;
+ else
+ host = inet_ntoa(raddrp->sin_addr);
+
+ if (!longopt)
+ printf("%-*.*s ", HOST_WIDTH, HOST_WIDTH, host);
+
+ for (x = 0; x < up->uia_cnt; x++) {
+ time_t tmptime = up->uia_arr[x]->ui_utmp.RUT_TIME;
+ strncpy(date, ctime(&tmptime) + 4, sizeof(date)-1);
+ date[sizeof(date)-1] = 0;
+
+ idlee = up->uia_arr[x]->ui_idle;
+ snprintf(idle_time, sizeof(idle_time), " :%02d", idlee);
+ if (idlee == MAX_INT)
+ strcpy(idle_time, "??");
+ else if (idlee == 0)
+ strcpy(idle_time, "");
+ else {
+ seconds = idlee;
+ days = seconds/(60*60*24);
+ seconds %= (60*60*24);
+ hours = seconds/(60*60);
+ seconds %= (60*60);
+ minutes = seconds/60;
+ seconds %= 60;
+ if (idlee > 60)
+ snprintf(idle_time, sizeof(idle_time),
+ "%2d:%02d", minutes, seconds);
+ if (idlee >= (60*60))
+ snprintf(idle_time, sizeof(idle_time),
+ "%2d:%02d:%02d",
+ hours, minutes, seconds);
+ if (idlee >= (24*60*60))
+ snprintf(idle_time, sizeof(idle_time),
+ "%d days, %d:%02d:%02d",
+ days, hours, minutes, seconds);
+ }
+
+ strncpy(remote, up->uia_arr[x]->ui_utmp.ut_host,
+ sizeof(remote)-1);
+ remote[sizeof(remote)-1] = 0;
+
+ if (strlen(remote) != 0)
+ snprintf(remote, sizeof(remote), "(%.16s)",
+ up->uia_arr[x]->ui_utmp.ut_host);
+
+ if (longopt) {
+ /* Fit into HOST_WIDTH+LINE_WIDTH+1 chars */
+ int len1 = strlen(host);
+ int len2 = strlen(up->uia_arr[x]->ui_utmp.ut_line);
+ if (len1 + len2 > HOST_WIDTH+LINE_WIDTH+1) {
+ int excess = len1 + len2 - HOST_WIDTH-LINE_WIDTH-1;
+ if (excess < len1) len1 -= excess;
+ else if (excess < len2) len2 -= excess;
+ else {
+ /* Hmm. Probably an attack... */
+ len1 = HOST_WIDTH;
+ len2 = LINE_WIDTH;
+ }
+ }
+ snprintf(local, sizeof(local),
+ "%-.*s:%-.*s", len1, host, len2,
+ up->uia_arr[x]->ui_utmp.ut_line);
+
+ printf("%-8.8s %-*.*s %-12.12s %8s %.18s\n",
+ up->uia_arr[x]->ui_utmp.ut_name,
+ HOST_WIDTH+LINE_WIDTH+1, HOST_WIDTH+LINE_WIDTH+1, local,
+ date,
+ idle_time,
+ remote);
+ } else
+ printf("%.8s ",
+ up->uia_arr[x]->ui_utmp.ut_name);
+ }
+ if (!longopt)
+ putchar('\n');
+
+ remember_host(raddrp->sin_addr);
+ return(0);
+}
+
+static
+void
+onehost(char *host)
+{
+ struct utmpidlearr up;
+ CLIENT *rusers_clnt;
+ struct sockaddr_in addr;
+ struct hostent *hp;
+
+ hp = gethostbyname(host);
+ if (hp == NULL) {
+ fprintf(stderr, "%s: unknown host \"%s\"\n",
+ argv0, host);
+ exit(1);
+ }
+
+ rusers_clnt = clnt_create(host, RUSERSPROG, RUSERSVERS_IDLE, "udp");
+ if (rusers_clnt == NULL) {
+ clnt_pcreateerror(argv0);
+ exit(1);
+ }
+
+ memset(&up, 0, sizeof(up));
+ memset(&addr, 0, sizeof(addr));
+ if (clnt_call(rusers_clnt, RUSERSPROC_NAMES, (xdrproc_t)xdr_void, NULL,
+ (xdrproc_t) xdr_utmpidlearr, (char *)&up, timeout) != RPC_SUCCESS) {
+ clnt_perror(rusers_clnt, argv0);
+ exit(1);
+ }
+ if (hp->h_length > (int)sizeof(addr.sin_addr)) {
+ hp->h_length = sizeof(addr.sin_addr);
+ }
+ memcpy(&addr.sin_addr, hp->h_addr, hp->h_length);
+ rusers_reply((char *)&up, &addr);
+}
+
+static
+void
+allhosts(void)
+{
+ struct utmpidlearr up;
+ enum clnt_stat clnt_stat;
+
+ bzero((char *)&up, sizeof(up));
+ clnt_stat = clnt_broadcast(RUSERSPROG, RUSERSVERS_IDLE,
+ RUSERSPROC_NAMES,
+ (xdrproc_t) xdr_void, NULL,
+ (xdrproc_t) xdr_utmpidlearr,
+ (char *) &up,
+ (resultproc_t) rusers_reply);
+ if (clnt_stat != RPC_SUCCESS && clnt_stat != RPC_TIMEDOUT) {
+ fprintf(stderr, "%s: %s\n", argv0, clnt_sperrno(clnt_stat));
+ exit(1);
+ }
+}
+
+static
+void usage(void)
+{
+ fprintf(stderr, "Usage: %s [-la] [hosts ...]\n", argv0);
+ exit(1);
+}
+
+int main(int argc, char *argv[])
+{
+ int ch;
+
+ if (!(argv0 = rindex(argv[0], '/')))
+ argv0 = argv[0];
+ else
+ argv0++;
+
+
+ while ((ch = getopt(argc, argv, "al")) != -1)
+ switch (ch) {
+ case 'a':
+ allopt++;
+ break;
+ case 'l':
+ longopt++;
+ break;
+ default:
+ usage();
+ /*NOTREACHED*/
+ }
+
+ setlinebuf(stdout);
+ if (argc == optind)
+ allhosts();
+ else {
+ for (; optind < argc; optind++)
+ (void) onehost(argv[optind]);
+ }
+ exit(0);
+}
Index: create-0.17-patch/netkit-rusers-0.17-new/rusers
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new/rusers (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new/rusers (revision 5)
Property changes on: create-0.17-patch/netkit-rusers-0.17-new/rusers
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-0.17-patch/netkit-rusers-0.17-new
===================================================================
--- create-0.17-patch/netkit-rusers-0.17-new (nonexistent)
+++ create-0.17-patch/netkit-rusers-0.17-new (revision 5)
Property changes on: create-0.17-patch/netkit-rusers-0.17-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-0.17-patch
===================================================================
--- create-0.17-patch (nonexistent)
+++ create-0.17-patch (revision 5)
Property changes on: create-0.17-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: patches/README
===================================================================
--- patches/README (nonexistent)
+++ patches/README (revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+ TODO: Leave some comment here.
+
+ * end */
Index: patches
===================================================================
--- patches (nonexistent)
+++ patches (revision 5)
Property changes on: patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: .
===================================================================
--- . (nonexistent)
+++ . (revision 5)
Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~