Index: create.patch.sh
===================================================================
--- create.patch.sh (nonexistent)
+++ create.patch.sh (revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=3.1.9
+
+tar --files-from=file.list -xJvf ../xfsdump-$VERSION.tar.xz
+mv xfsdump-$VERSION xfsdump-$VERSION-orig
+
+cp -rf ./xfsdump-$VERSION-new ./xfsdump-$VERSION
+
+diff --unified -Nr xfsdump-$VERSION-orig xfsdump-$VERSION > xfsdump-$VERSION-librmt.patch
+
+mv xfsdump-$VERSION-librmt.patch ../patches
+
+rm -rf ./xfsdump-$VERSION
+rm -rf ./xfsdump-$VERSION-orig
Property changes on: create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: file.list
===================================================================
--- file.list (nonexistent)
+++ file.list (revision 5)
@@ -0,0 +1,9 @@
+xfsdump-3.1.9/librmt/rmtabort.c
+xfsdump-3.1.9/librmt/rmtcommand.c
+xfsdump-3.1.9/librmt/rmtfstat.c
+xfsdump-3.1.9/librmt/rmtioctl.c
+xfsdump-3.1.9/librmt/rmtlib.h
+xfsdump-3.1.9/librmt/rmtopen.c
+xfsdump-3.1.9/librmt/rmtread.c
+xfsdump-3.1.9/librmt/rmtstatus.c
+xfsdump-3.1.9/librmt/rmtwrite.c
Index: xfsdump-3.1.9-new/librmt/rmtabort.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtabort.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtabort.c (revision 5)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <unistd.h>
+#include "rmtlib.h"
+
+/*
+ * abort --- close off a remote tape connection
+ */
+
+void _rmt_abort(int fildes)
+{
+ close(RMTREAD(fildes));
+ close(RMTWRITE(fildes));
+ RMTREAD(fildes) = -1;
+ RMTWRITE(fildes) = -1;
+ RMTHOST(fildes) = -1;
+ _rmt_msg(RMTDBG, "rmtabort(%d)\n", fildes);
+}
Index: xfsdump-3.1.9-new/librmt/rmtcommand.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtcommand.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtcommand.c (revision 5)
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+
+#include "rmtlib.h"
+
+
+/*
+ * _rmt_command --- attempt to perform a remote tape command
+ */
+
+int _rmt_command(fildes, buf)
+int fildes;
+char *buf;
+{
+ register int blen;
+
+ _rmt_msg(RMTDBG, "rmtcommand: fd = %d, buf = %s\n", fildes, buf);
+
+/*
+ * try to make the request
+ */
+
+ blen = strlen(buf);
+ if (write(RMTWRITE(fildes), buf, blen) == blen)
+ {
+ return(0);
+ }
+
+/*
+ * something went wrong. close down and go home
+ */
+
+ _rmt_abort(fildes);
+
+ setoserror(EIO);
+ return(-1);
+}
+
+
+
Index: xfsdump-3.1.9-new/librmt/rmtfstat.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtfstat.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtfstat.c (revision 5)
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "rmtlib.h"
+
+#include <errno.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+static int _rmt_fstat(int, char *);
+
+/*
+ * Get file status. Looks just like fstat(2) to caller.
+ */
+
+int rmtfstat (fildes, buf)
+int fildes;
+struct stat *buf;
+{
+ if (isrmt (fildes))
+ {
+ return (_rmt_fstat (fildes - REM_BIAS, (char *)buf));
+ }
+ else
+ {
+ int i;
+ i = fstat(fildes, buf);
+ return i;
+ }
+}
+
+static int
+_rmt_fstat(int fildes, char *arg)
+{
+ char buffer[BUFMAGIC];
+ int rc, cnt, adj_rc;
+
+ sprintf(buffer, "Z%d\n", fildes);
+
+ /*
+ * grab the status and read it directly into the structure
+ * this assumes that the status buffer is (hopefully) not
+ * padded and that 2 shorts fit in a long without any word
+ * alignment problems, ie - the whole struct is contiguous
+ * NOTE - this is probably NOT a good assumption.
+ */
+
+ if (_rmt_command(fildes, buffer) == -1 ||
+ (rc = _rmt_status(fildes)) == -1)
+ return(-1);
+
+ /* adjust read count to prevent overflow */
+
+ adj_rc = (rc > sizeof(struct stat)) ? sizeof(struct stat) : rc;
+ rc -= adj_rc;
+
+ for (; adj_rc > 0; adj_rc -= cnt, arg += cnt)
+ {
+ cnt = read(RMTREAD(fildes), arg, adj_rc);
+ if (cnt <= 0)
+ {
+abortit:
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+ }
+ }
+
+ /* handle any bytes we didn't know what to do with */
+ while (rc-- > 0)
+ if (read(RMTREAD(fildes), buffer, 1) <= 0)
+ goto abortit;
+
+ return(0);
+}
Index: xfsdump-3.1.9-new/librmt/rmtioctl.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtioctl.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtioctl.c (revision 5)
@@ -0,0 +1,427 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/mtio.h>
+#include <sys/param.h>
+#include <assert.h>
+
+#include "config.h"
+#include "rmtlib.h"
+#include "swap.h"
+
+
+/*
+ * uses old_mtget IRIX structure since we don't bother
+ * sending the "V" version command.
+ */
+struct irix_mtget {
+ short mt_type; /* type of magtape device */
+ unsigned short mt_dsreg; /* ``drive status'' register */
+ short mt_erreg; /* ``error'' register */
+ short mt_resid; /* residual count */
+ int mt_fileno; /* file number of current position */
+ int mt_blkno; /* block number of current position */
+};
+
+struct linux32_mtget
+{
+ int32_t mt_type; /* Type of magtape device. */
+ int32_t mt_resid; /* Residual count: */
+ /* The following registers are device dependent. */
+ int32_t mt_dsreg; /* Status register. */
+ int32_t mt_gstat; /* Generic (device independent) status. */
+ int32_t mt_erreg; /* Error register. */
+ /* The next two fields are not always used. */
+ int32_t mt_fileno; /* Number of current file on tape. */
+ int32_t mt_blkno; /* Current block number. */
+};
+
+struct linux64_mtget
+{
+ int64_t mt_type; /* Type of magtape device. */
+ int64_t mt_resid; /* Residual count. */
+ /* The following registers are device dependent. */
+ int64_t mt_dsreg; /* Status register. */
+ int64_t mt_gstat; /* Generic (device independent) status. */
+ int64_t mt_erreg; /* Error register. */
+ /* The next two fields are not always used. */
+ int32_t mt_fileno; /* Number of current file on tape. */
+ int32_t mt_blkno; /* Current block number. */
+};
+
+
+/* IRIX tape device status values */
+#define IRIX_MT_EOT 0x01 /* tape is at end of media */
+#define IRIX_MT_BOT 0x02 /* tape is at beginning of media */
+#define IRIX_MT_WPROT 0x04 /* tape is write-protected */
+#define IRIX_MT_EW 0x08 /* hit early warning marker */
+#define IRIX_MT_ONL 0x40 /* drive is online */
+#define IRIX_MT_EOD 0x4000 /* tape is at end of data */
+#define IRIX_MT_FMK 0x8000 /* tape is at file mark */
+
+/* IRIX mt operations (mt_op values for MTIOCTOP) */
+#define IRIX_MTWEOF 0 /* write an end-of-file record */
+#define IRIX_MTFSF 1 /* forward space file */
+#define IRIX_MTBSF 2 /* backward space file */
+#define IRIX_MTFSR 3 /* forward space record */
+#define IRIX_MTBSR 4 /* backward space record */
+#define IRIX_MTREW 5 /* rewind */
+#define IRIX_MTOFFL 6 /* rewind and put the drive offline */
+#define IRIX_MTERASE 12 /* erase tape from current position to EOT */
+#define IRIX_MTUNLOAD 13 /* unload tape from drive */
+
+/* std (common) mt op codes */
+#define STD_MTWEOF 0 /* write an end-of-file record */
+#define STD_MTFSF 1 /* forward space file */
+#define STD_MTBSF 2 /* backward space file */
+#define STD_MTFSR 3 /* forward space record */
+#define STD_MTBSR 4 /* backward space record */
+#define STD_MTREW 5 /* rewind */
+#define STD_MTOFFL 6 /* rewind and put the drive offline */
+
+#define MT_MAX 40 /* encompass potential range of mt_op values */
+static int mtop_irixmap[MT_MAX] = {-1};
+static int mtop_stdmap[MT_MAX] = {-1};
+
+static void
+init_mtop_map(void)
+{
+ /* set all other values to sentinel (-1) */
+
+ /* only map the ones which xfsdump/restore are interested in */
+ mtop_irixmap[MTWEOF] = IRIX_MTWEOF;
+ mtop_irixmap[MTFSF] = IRIX_MTFSF;
+ mtop_irixmap[MTBSF] = IRIX_MTBSF;
+ mtop_irixmap[MTFSR] = IRIX_MTFSR;
+ mtop_irixmap[MTBSR] = IRIX_MTBSR;
+ mtop_irixmap[MTREW] = IRIX_MTREW;
+ mtop_irixmap[MTOFFL] = IRIX_MTOFFL;
+ mtop_irixmap[MTERASE] = IRIX_MTERASE;
+ mtop_irixmap[MTUNLOAD] = IRIX_MTUNLOAD;
+
+ mtop_stdmap[MTWEOF] = STD_MTWEOF;
+ mtop_stdmap[MTFSF] = STD_MTFSF;
+ mtop_stdmap[MTBSF] = STD_MTBSF;
+ mtop_stdmap[MTFSR] = STD_MTFSR;
+ mtop_stdmap[MTBSR] = STD_MTBSR;
+ mtop_stdmap[MTREW] = STD_MTREW;
+ mtop_stdmap[MTOFFL] = STD_MTOFFL;
+ mtop_stdmap[MTUNLOAD] = STD_MTOFFL;
+}
+
+
+static int _rmt_ioctl(int, unsigned int, void *);
+
+/*
+ * Do ioctl on file. Looks just like ioctl(2) to caller.
+ */
+
+int
+rmtioctl(int fildes, unsigned int request, void *arg)
+{
+ if (isrmt (fildes)) {
+ return (_rmt_ioctl (fildes - REM_BIAS, request, arg));
+ }
+ else {
+ return (ioctl (fildes, request, arg));
+ }
+}
+
+
+/*
+ * _rmt_ioctl --- perform raw tape operations remotely
+ */
+
+/*
+ * WARNING: MTIOCGET code is highly dependent on the format
+ * of mtget on different platforms
+ * We only support Linux 32/ia64 and IRIX 32/64 for this case.
+ * We use the result of uname(1) (in rmtopen()) and
+ * the size of the mtget structure to determine which
+ * architecture it is.
+ */
+
+static int
+_rmt_ioctl(int fildes, unsigned int op, void *arg)
+{
+ char buffer[BUFMAGIC];
+ int rc, cnt, ssize;
+ char *p = NULL, *irixget = NULL, *linux32get = NULL, *linux64get = NULL;
+ struct irix_mtget irix_mtget;
+ struct linux32_mtget linux32_mtget;
+ struct linux64_mtget linux64_mtget;
+ int islinux32 = 1; /* is remote machine Linux 32 bit */
+ static int onetrip = 0;
+
+ if (!onetrip) {
+ onetrip = 1;
+ init_mtop_map();
+ }
+
+/*
+ * MTIOCTOP is the easy one. nothing is transfered in binary
+ */
+
+ if (op == MTIOCTOP) {
+ int mt_op = ((struct mtop *) arg)->mt_op;
+ int mt_count = ((struct mtop *) arg)->mt_count;
+
+ if (RMTHOST(fildes) == UNAME_UNDEFINED) {
+ _rmt_msg(RMTWARN,
+ _("rmtioctl: remote host type not supported for MTIOCTOP\n"));
+ setoserror(EPROTONOSUPPORT);
+ return(-1);
+ }
+
+ /* map the linux op code to the irix op code */
+ if (RMTHOST(fildes) == UNAME_IRIX) {
+ mt_op = mtop_irixmap[mt_op];
+ if (mt_op == -1) {
+ setoserror(EINVAL);
+ return(-1);
+ }
+ }
+ else if (RMTHOST(fildes) != UNAME_LINUX) {
+ /* map the linux op code to the standard/fallback op code */
+ mt_op = mtop_stdmap[mt_op];
+ if (mt_op == -1) {
+ setoserror(EINVAL);
+ return(-1);
+ }
+ }
+
+ sprintf(buffer, "I%d\n%d\n", mt_op, mt_count);
+ if (_rmt_command(fildes, buffer) == -1) {
+ return(-1);
+ }
+ return(_rmt_status(fildes));
+ }
+ else if (op == MTIOCGET) {
+
+ /*
+ * Grab the status and read it directly into the structure.
+ * Since the data is binary data, and the other machine might
+ * be IRIX or Linux of a different byte-order,
+ * we have to be careful in converting the data.
+ *
+ * NOTE: the original /etc/rmt did NOT support a newline after
+ * the S command, and Sun still does not. Neither does the
+ * current bsd source, all the way through the tahoe release.
+ * So do NOT add the \n to this! The sgi rmt command will
+ * work either way. Olson, 4/91
+ */
+ if (_rmt_command(fildes, "S") == -1 ||
+ (rc = _rmt_status(fildes)) == -1)
+ return(-1);
+
+
+ /* If undefined then try and define it by looking
+ * and the size of the get structure.
+ * If we know our rmt host, then verify that the
+ * structure is the correct size for the supported ones
+ */
+ switch (RMTHOST(fildes)) {
+ case UNAME_UNDEFINED:
+ _rmt_msg(RMTWARN,
+ _("rmtioctl: remote host type not supported for MTIOCGET\n"));
+ setoserror(EPROTONOSUPPORT);
+ return(-1);
+ case UNAME_IRIX:
+ if (sizeof(struct irix_mtget) != rc) {
+ _rmt_msg(RMTWARN,
+ _("rmtioctl: IRIX mtget structure of wrong size"
+ " - got %d, wanted %d\n"),
+ rc, sizeof(struct irix_mtget));
+ setoserror(EPROTONOSUPPORT);
+ return(-1);
+ }
+ break;
+ case UNAME_LINUX:
+ if (sizeof(struct linux32_mtget) == rc) {
+ islinux32 = 1;
+ }
+ else if (sizeof(struct linux64_mtget) == rc) {
+ islinux32 = 0;
+ }
+ else {
+ _rmt_msg(RMTWARN,
+ _("rmtioctl: Linux mtget structure of wrong size "
+ "- got %d, wanted %d or %d\n"),
+ rc, sizeof(struct linux32_mtget),
+ sizeof(struct linux64_mtget));
+ setoserror(EPROTONOSUPPORT);
+ return(-1);
+ }
+ break;
+ default:
+ setoserror(EPROTONOSUPPORT);
+ return(-1);
+ }
+
+
+ assert(RMTHOST(fildes)==UNAME_LINUX || RMTHOST(fildes)==UNAME_IRIX);
+
+
+ if (RMTHOST(fildes) == UNAME_IRIX) {
+ p = irixget = (char *)&irix_mtget;
+ }
+ else if (islinux32) {
+ p = linux32get = (char *)&linux32_mtget;
+ }
+ else {
+ p = linux64get = (char *)&linux64_mtget;
+ }
+
+
+ /* read in all the data */
+ ssize = rc;
+ for (; ssize > 0; ssize -= cnt, p += cnt) {
+ cnt = read(RMTREAD(fildes), p, ssize);
+ if (cnt <= 0) {
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+ }
+ }
+
+
+ /*
+ * May need to byteswap
+ */
+ if (RMTHOST(fildes) == UNAME_IRIX) {
+ struct irix_mtget *irixp = (struct irix_mtget *)irixget;
+
+ if (irixp->mt_type > 0xff) {
+ /* assume that mt_type should fit in 1 byte */
+
+ irixp->mt_type = INT_SWAP(irixp->mt_type, irixp->mt_type);
+ irixp->mt_dsreg = INT_SWAP(irixp->mt_dsreg, irixp->mt_dsreg);
+ irixp->mt_erreg = INT_SWAP(irixp->mt_erreg, irixp->mt_erreg);
+ irixp->mt_resid = INT_SWAP(irixp->mt_resid, irixp->mt_resid);
+ irixp->mt_fileno = INT_SWAP(irixp->mt_fileno, irixp->mt_fileno);
+ irixp->mt_blkno = INT_SWAP(irixp->mt_blkno, irixp->mt_blkno);
+ }
+ }
+ else if (islinux32) {
+ struct linux32_mtget *linuxp = (struct linux32_mtget *)linux32get;
+
+ if (linuxp->mt_type > 0xffff) {
+ /* assume that mt_type should fit in 2 bytes */
+
+ linuxp->mt_type = INT_SWAP(linuxp->mt_type, linuxp->mt_type);
+ linuxp->mt_dsreg = INT_SWAP(linuxp->mt_dsreg, linuxp->mt_dsreg);
+ linuxp->mt_erreg = INT_SWAP(linuxp->mt_erreg, linuxp->mt_erreg);
+ linuxp->mt_resid = INT_SWAP(linuxp->mt_resid, linuxp->mt_resid);
+ linuxp->mt_fileno = INT_SWAP(linuxp->mt_fileno, linuxp->mt_fileno);
+ linuxp->mt_blkno = INT_SWAP(linuxp->mt_blkno, linuxp->mt_blkno);
+ linuxp->mt_gstat = INT_SWAP(linuxp->mt_gstat, linuxp->mt_gstat);
+
+ }
+ }
+ else {
+ struct linux64_mtget *linuxp = (struct linux64_mtget *)linux64get;
+
+ if (linuxp->mt_type > 0xffff) {
+ /* assume that mt_type should fit in 2 bytes */
+
+ linuxp->mt_type = INT_SWAP(linuxp->mt_type, linuxp->mt_type);
+ linuxp->mt_dsreg = INT_SWAP(linuxp->mt_dsreg, linuxp->mt_dsreg);
+ linuxp->mt_erreg = INT_SWAP(linuxp->mt_erreg, linuxp->mt_erreg);
+ linuxp->mt_resid = INT_SWAP(linuxp->mt_resid, linuxp->mt_resid);
+ linuxp->mt_fileno = INT_SWAP(linuxp->mt_fileno, linuxp->mt_fileno);
+ linuxp->mt_blkno = INT_SWAP(linuxp->mt_blkno, linuxp->mt_blkno);
+ linuxp->mt_gstat = INT_SWAP(linuxp->mt_gstat, linuxp->mt_gstat);
+
+ }
+ }
+
+ /*
+ * now mtget has the correct (byte-swapped if needed) data,
+ * so we just need to copy over the fields which are possibly
+ * of different length and different semantics.
+ */
+ if (RMTHOST(fildes) == UNAME_IRIX) {
+ struct mtget *dstp = (struct mtget *)arg;
+ struct irix_mtget *srcp = (struct irix_mtget *)irixget;
+ short status = srcp->mt_dsreg;
+
+ dstp->mt_type = srcp->mt_type;
+ dstp->mt_erreg = srcp->mt_erreg;
+ dstp->mt_resid = srcp->mt_resid;
+ dstp->mt_fileno = srcp->mt_fileno;
+ dstp->mt_blkno = srcp->mt_blkno;
+ dstp->mt_dsreg = srcp->mt_dsreg; /* different semantics */
+
+ /* need to do tape status conversions */
+ dstp->mt_gstat = 0;
+ if (status & IRIX_MT_EOT)
+ dstp->mt_gstat |= GMT_EOT(0xffffffff);
+ if (status & IRIX_MT_BOT)
+ dstp->mt_gstat |= GMT_BOT(0xffffffff);
+ if (status & IRIX_MT_WPROT)
+ dstp->mt_gstat |= GMT_WR_PROT(0xffffffff);
+ if (status & IRIX_MT_ONL)
+ dstp->mt_gstat |= GMT_ONLINE(0xffffffff);
+ if (status & IRIX_MT_EOD)
+ dstp->mt_gstat |= GMT_EOD(0xffffffff);
+ if (status & IRIX_MT_FMK)
+ dstp->mt_gstat |= GMT_EOF(0xffffffff);
+ if (status & IRIX_MT_EW)
+ ;/* No GMT_ to map it to */
+ }
+ else if (islinux32) {
+ struct mtget *dstp = (struct mtget *)arg;
+ struct linux32_mtget *srcp = (struct linux32_mtget *)linux32get;
+
+ dstp->mt_type = srcp->mt_type;
+ dstp->mt_erreg = srcp->mt_erreg;
+ dstp->mt_resid = srcp->mt_resid;
+ dstp->mt_fileno = srcp->mt_fileno;
+ dstp->mt_blkno = srcp->mt_blkno;
+ dstp->mt_dsreg = srcp->mt_dsreg;
+ dstp->mt_gstat = srcp->mt_gstat;
+ }
+ else {
+ struct mtget *dstp = (struct mtget *)arg;
+ struct linux64_mtget *srcp = (struct linux64_mtget *)linux64get;
+
+ dstp->mt_type = srcp->mt_type;
+ dstp->mt_erreg = srcp->mt_erreg;
+ dstp->mt_resid = srcp->mt_resid;
+ dstp->mt_fileno = srcp->mt_fileno;
+ dstp->mt_blkno = srcp->mt_blkno;
+ dstp->mt_dsreg = srcp->mt_dsreg;
+ dstp->mt_gstat = srcp->mt_gstat;
+ }
+ return(0);
+
+ }
+ else {
+ setoserror(EINVAL);
+ return(-1);
+ }
+}
Index: xfsdump-3.1.9-new/librmt/rmtlib.h
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtlib.h (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtlib.h (revision 5)
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/*
+ * This file is only included by the library routines. It is not
+ * required for user code.
+ *
+ */
+
+/*
+ * Note that local vs remote file descriptors are distinquished
+ * by adding a bias to the remote descriptors. This is a quick
+ * and dirty trick that may not be portable to some systems.
+ * It should be greater than the largest open filedescriptor
+ * than can be returned by the OS, and should be a power of 2.
+ */
+
+#define REM_BIAS 8192
+
+
+/*
+ * BUFMAGIC --- Magic buffer size
+ * MAXUNIT --- Maximum number of remote tape file units
+ */
+
+#define BUFMAGIC 64
+#define MAXUNIT 4
+
+/*
+ * Useful macros.
+ *
+ * READ --- Return the number of the read side file descriptor
+ * WRITE --- Return the number of the write side file descriptor
+ * RMTHOST --- Return an id which says host type from uname
+ */
+
+/* rmt msg types */
+#define RMTWARN 1
+#define RMTDBG 2 /* includes warning */
+
+#define RMTREAD(fd) (_rmt_Ctp[fd][0])
+#define RMTWRITE(fd) (_rmt_Ptc[fd][1])
+#define RMTHOST(fd) (_rmt_host[fd])
+
+#define RSH_PATH "/usr/bin/rsh"
+#define RMT_PATH "/etc/rmt"
+
+#define UNAME_UNDEFINED -1
+#define UNAME_LINUX 0
+#define UNAME_IRIX 1
+#define UNAME_UNKNOWN 2
+
+extern int _rmt_Ctp[MAXUNIT][2];
+extern int _rmt_Ptc[MAXUNIT][2];
+extern int _rmt_host[MAXUNIT];
+
+#define setoserror(err) (errno = err) /* TODO: multithread check */
+
+/* prototypes */
+int isrmt (int);
+void _rmt_abort(int);
+int _rmt_command(int, char *);
+int _rmt_dev (char *);
+int _rmt_status(int);
+int _rmt_msgson(void);
+void _rmt_msg(int level, const char *msg, ...);
+void _rmt_turnonmsgsbyenv(void);
+void rmt_turnonmsgs(int code);
Index: xfsdump-3.1.9-new/librmt/rmtopen.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtopen.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtopen.c (revision 5)
@@ -0,0 +1,275 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <unistd.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "config.h"
+#include "rmtlib.h"
+
+#define RMT_DEBUG_FILE "/tmp/librmt_debug" /* file for debug output on server */
+
+static int _rmt_open(char *, int, int);
+
+int _rmt_Ctp[MAXUNIT][2] = { {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1} };
+int _rmt_Ptc[MAXUNIT][2] = { {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1} };
+int _rmt_host[MAXUNIT] = { -1, -1, -1, -1};
+
+struct uname_table
+{
+ int id;
+ char *name;
+};
+
+struct uname_table uname_table[] =
+{ {UNAME_LINUX, "Linux"}, {UNAME_IRIX, "IRIX"}, {0, 0} };
+
+
+/*
+ * Open a local or remote file. Looks just like open(2) to
+ * caller.
+ */
+
+int rmtopen (path, oflag, mode)
+char *path;
+int oflag;
+int mode;
+{
+ if (strchr (path, ':') != NULL)
+ {
+ return (_rmt_open (path, oflag, mode) | REM_BIAS);
+ }
+ else
+ {
+ return (open (path, oflag, mode));
+ }
+}
+
+/*
+ * _rmt_open --- open a magtape device (or file) on system specified,
+ * as given user
+ *
+ * file name has the form system[.user]:????
+ */
+
+#define MAXHOSTLEN 257
+#define MAXDBGPATH 100
+
+/* ARGSUSED */
+static int _rmt_open (char *path, int oflag, int mode)
+{
+ int i, rc;
+ char buffer[BUFMAGIC];
+ char system[MAXHOSTLEN];
+ char device[BUFMAGIC];
+ char login[BUFMAGIC];
+ char *sys, *dev, *user;
+ char *rsh_path;
+ char *rmt_path;
+ char rmt_cmd[MAXDBGPATH];
+
+
+ sys = system;
+ dev = device;
+ user = login;
+
+ if ((rsh_path = getenv("RSH")) == NULL) {
+ rsh_path = RSH_PATH;
+ }
+
+ if ((rmt_path = getenv("RMT")) == NULL) {
+ rmt_path = RMT_PATH;
+ }
+
+
+/*
+ * first, find an open pair of file descriptors
+ */
+
+ for (i = 0; i < MAXUNIT; i++)
+ if (RMTREAD(i) == -1 && RMTWRITE(i) == -1)
+ break;
+
+ if (i == MAXUNIT)
+ {
+ setoserror(EMFILE);
+ return(-1);
+ }
+
+/*
+ * pull apart system and device, and optional user
+ * don't munge original string
+ */
+ while (*path != '@' && *path != ':') {
+ *user++ = *path++;
+ }
+ *user = '\0';
+ path++;
+
+ if (*(path - 1) == '@')
+ {
+ while (*path != ':') {
+ *sys++ = *path++;
+ }
+ *sys = '\0';
+ path++;
+ }
+ else
+ {
+ for (user = login; (*sys = *user); user++, sys++)
+ ;
+ user = login;
+ }
+
+ while (*path) {
+ *dev++ = *path++;
+ }
+ *dev = '\0';
+
+ _rmt_turnonmsgsbyenv();
+
+ /* try to find out the uname of the remote host */
+ {
+#define MAX_UNAMECMD MAXHOSTLEN+40
+#define MAX_UNAME 20
+ FILE *rmt_f;
+ char cmd[MAX_UNAMECMD];
+ char uname[MAX_UNAME];
+ struct uname_table *p;
+
+ if (user != login) {
+ snprintf(cmd, sizeof(cmd), "%s -l %s %s uname", rsh_path, login, system);
+ }
+ else {
+ snprintf(cmd, sizeof(cmd), "%s %s uname", rsh_path, system);
+ }
+
+ rmt_f = popen(cmd, "r");
+ if (rmt_f == NULL) {
+ _rmt_msg(RMTWARN, _(
+ "rmtopen: failed to detect remote host type using \"%s\"\n"),
+ cmd);
+ RMTHOST(i) = UNAME_UNDEFINED;
+ goto do_rmt;
+ }
+ else {
+ int len;
+ char *c = fgets(uname, sizeof(uname), rmt_f);
+ pclose(rmt_f);
+
+ if (c == NULL) {
+ _rmt_msg(RMTWARN, _(
+ "rmtopen: failed to detect remote host type reading \"%s\"\n"),
+ cmd);
+ RMTHOST(i) = UNAME_UNDEFINED;
+ goto do_rmt;
+ }
+ len = strlen(uname);
+ if (len > 0 && uname[len-1] == '\n')
+ uname[len-1] = '\0'; /* chomp the '\n' */
+ }
+
+ for(p = &uname_table[0]; p->name != 0; p++) {
+ if (strncmp(p->name, uname, strlen(p->name)) == 0)
+ break;
+ }
+ if (p->name == 0) {
+ RMTHOST(i) = UNAME_UNKNOWN;
+ _rmt_msg(RMTWARN, _(
+ "rmtopen: remote host type, \"%s\", is unknown to librmt\n"),
+ uname);
+ }
+ else {
+ RMTHOST(i) = p->id;
+ _rmt_msg(RMTDBG, "rmtopen: RMTHOST(%d) = %s\n", i, p->name);
+ }
+ }
+
+
+/*
+ * setup the pipes for the 'rsh' command and fork
+ */
+do_rmt:
+ if (pipe(_rmt_Ptc[i]) == -1 || pipe(_rmt_Ctp[i]) == -1)
+ return(-1);
+
+ if ((rc = fork()) == -1)
+ return(-1);
+
+ if (rc == 0)
+ {
+ close(0);
+ dup(_rmt_Ptc[i][0]);
+ close(_rmt_Ptc[i][0]); close(_rmt_Ptc[i][1]);
+ close(1);
+ dup(_rmt_Ctp[i][1]);
+ close(_rmt_Ctp[i][0]); close(_rmt_Ctp[i][1]);
+ (void) setuid (getuid ());
+ (void) setgid (getgid ());
+ if (_rmt_msgson() == RMTDBG) {
+ snprintf(rmt_cmd, sizeof(rmt_cmd), "%s %s.%d",
+ rmt_path, RMT_DEBUG_FILE, getpid());
+ }
+ else {
+ strncpy(rmt_cmd, rmt_path, sizeof(rmt_cmd));
+ }
+ if (user != login)
+ {
+ execl(rsh_path, "rsh", system, "-l", login,
+ rmt_cmd, (char *) 0);
+ }
+ else
+ {
+ execl(rsh_path, "rsh", system,
+ rmt_cmd, (char *) 0);
+ }
+
+/*
+ * bad problems if we get here
+ */
+ fprintf(stderr,
+ "librmt: problem finding either RSH(%s) or RMT(%s): %s\n",
+ rsh_path, rmt_path, strerror(errno));
+ exit(1);
+ }
+
+ close(_rmt_Ptc[i][0]); close(_rmt_Ctp[i][1]);
+
+/*
+ * now attempt to open the tape device
+ */
+
+ sprintf(buffer, "O%s\n%d\n", device, oflag);
+ if (_rmt_command(i, buffer) == -1 || _rmt_status(i) == -1)
+ return(-1);
+
+ return(i);
+}
Index: xfsdump-3.1.9-new/librmt/rmtread.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtread.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtread.c (revision 5)
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "rmtlib.h"
+
+static int _rmt_read(int, char *, unsigned int);
+
+/*
+ * Read from stream. Looks just like read(2) to caller.
+ */
+
+int rmtread (fildes, buf, nbyte)
+int fildes;
+char *buf;
+unsigned int nbyte;
+{
+ if (isrmt (fildes))
+ {
+ return (_rmt_read (fildes - REM_BIAS, buf, nbyte));
+ }
+ else
+ {
+ return (read (fildes, buf, nbyte));
+ }
+}
+
+
+/*
+ * _rmt_read --- read a buffer from a remote tape
+ */
+
+static int _rmt_read(int fildes, char *buf, unsigned int nbyte)
+{
+ int rc, i;
+ char buffer[BUFMAGIC];
+
+ sprintf(buffer, "R%d\n", nbyte);
+ if (_rmt_command(fildes, buffer) == -1 || (rc = _rmt_status(fildes)) == -1)
+ return(-1);
+
+ for (i = 0; i < rc; i += nbyte, buf += nbyte)
+ {
+ nbyte = read(RMTREAD(fildes), buf, rc);
+ if (nbyte <= 0)
+ {
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+ }
+ }
+
+ return(rc);
+}
Index: xfsdump-3.1.9-new/librmt/rmtstatus.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtstatus.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtstatus.c (revision 5)
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "rmtlib.h"
+
+/*
+ * _rmt_status --- retrieve the status from the pipe
+ */
+
+int _rmt_status(fildes)
+int fildes;
+{
+ int i;
+ char c, *cp;
+ char buffer[BUFMAGIC];
+
+/*
+ * read the reply command line
+ */
+
+ for (i = 0, cp = buffer; i < BUFMAGIC; i++, cp++)
+ {
+ if (read(RMTREAD(fildes), cp, 1) != 1)
+ {
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+ }
+ if (*cp == '\n')
+ {
+ *cp = 0;
+ break;
+ }
+ }
+
+ if (i == BUFMAGIC)
+ {
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+ }
+
+/*
+ * check the return status
+ */
+
+ for (cp = buffer; *cp; cp++)
+ if (*cp != ' ')
+ break;
+
+ if (*cp == 'E' || *cp == 'F')
+ {
+ setoserror(atoi(cp + 1));
+ while (read(RMTREAD(fildes), &c, 1) == 1)
+ if (c == '\n')
+ break;
+
+ if (*cp == 'F')
+ _rmt_abort(fildes);
+
+ return(-1);
+ }
+
+/*
+ * check for mis-synced pipes
+ */
+
+ if (*cp != 'A')
+ {
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+ }
+
+ return(atoi(cp + 1));
+}
+
+
+
Index: xfsdump-3.1.9-new/librmt/rmtwrite.c
===================================================================
--- xfsdump-3.1.9-new/librmt/rmtwrite.c (nonexistent)
+++ xfsdump-3.1.9-new/librmt/rmtwrite.c (revision 5)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2000-2001 Silicon Graphics, Inc.; provided copyright in
+ * certain portions may be held by third parties as indicated herein.
+ * All Rights Reserved.
+ *
+ * The code in this source file represents an aggregation of work from
+ * Georgia Tech, Fred Fish, Jeff Lee, Arnold Robbins and other Silicon
+ * Graphics engineers over the period 1985-2000.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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 the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
+
+#include "rmtlib.h"
+
+static int _rmt_write(int, char *, unsigned int);
+
+/*
+ * Write to stream. Looks just like write(2) to caller.
+ */
+
+int rmtwrite (fildes, buf, nbyte)
+int fildes;
+char *buf;
+unsigned int nbyte;
+{
+ if (isrmt (fildes))
+ {
+ return (_rmt_write (fildes - REM_BIAS, buf, nbyte));
+ }
+ else
+ {
+ return (write (fildes, buf, nbyte));
+ }
+}
+
+
+/*
+ * _rmt_write --- write a buffer to the remote tape
+ */
+
+static int _rmt_write(int fildes, char *buf, unsigned int nbyte)
+{
+ char buffer[BUFMAGIC];
+
+ sprintf(buffer, "W%d\n", nbyte);
+ if (_rmt_command(fildes, buffer) == -1)
+ return(-1);
+
+ if (write(RMTWRITE(fildes), buf, nbyte) == nbyte)
+ {
+ return(_rmt_status(fildes));
+ }
+
+ _rmt_abort(fildes);
+ setoserror(EIO);
+ return(-1);
+}
Index: xfsdump-3.1.9-new/librmt
===================================================================
--- xfsdump-3.1.9-new/librmt (nonexistent)
+++ xfsdump-3.1.9-new/librmt (revision 5)
Property changes on: xfsdump-3.1.9-new/librmt
___________________________________________________________________
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: xfsdump-3.1.9-new
===================================================================
--- xfsdump-3.1.9-new (nonexistent)
+++ xfsdump-3.1.9-new (revision 5)
Property changes on: xfsdump-3.1.9-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: .
===================================================================
--- . (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
+*~