summaryrefslogtreecommitdiff
path: root/sysutils/amanda-dev-server/patches/patch-af
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/amanda-dev-server/patches/patch-af')
-rw-r--r--sysutils/amanda-dev-server/patches/patch-af205
1 files changed, 205 insertions, 0 deletions
diff --git a/sysutils/amanda-dev-server/patches/patch-af b/sysutils/amanda-dev-server/patches/patch-af
new file mode 100644
index 00000000000..c37bfd5c37c
--- /dev/null
+++ b/sysutils/amanda-dev-server/patches/patch-af
@@ -0,0 +1,205 @@
+$NetBSD: patch-af,v 1.1.1.1 2002/05/02 13:28:16 bouyer Exp $
+
+--- changer-src/scsi-chio.c.orig Thu Jun 17 20:33:19 1999
++++ changer-src/scsi-chio.c Tue Apr 30 14:33:22 2002
+@@ -59,16 +59,26 @@
+ */
+ int GetCurrentSlot(int fd, int drive)
+ {
+- struct changer_element_status ces;
++#if defined(OCHIOGSTATUS)
++struct ochanger_element_status_request cesr;
++#else
++struct changer_element_status ces;
++#endif
+ int slot;
+ int i, rc;
+
+ get_changer_info(fd);
++#if defined(OCHIOGSTATUS)
++ cesr.cesr_type = CHET_ST;
++ cesr.cesr_data = malloc(changer_info.cp_nslots);
+
++ rc = ioctl(fd, CHIOGSTATUS, &cesr);
++#else
+ ces.ces_type = CHET_ST;
+ ces.ces_data = malloc(changer_info.cp_nslots);
+
+ rc = ioctl(fd, CHIOGSTATUS, &ces);
++#endif
+ if (rc) {
+ dbprintf(("%s: changer status query failed: 0x%x %s\n",
+ get_pname(), rc,strerror(errno)));
+@@ -76,7 +86,11 @@
+ }
+ for (slot = 0; slot < changer_info.cp_nslots; slot++)
+ {
++#if defined(OCHIOGSTATUS)
++ i = cesr.cesr_data[slot] & CESTATUS_FULL;
++#else
+ i = ces.ces_data[slot] & CESTATUS_FULL;
++#endif
+ dbprintf(("\tGetCurrentSlot slot %d = %d\n", slot, i));
+ if (!i)
+ return(slot);
+@@ -121,25 +135,41 @@
+ */
+ int isempty(int fd, int slot)
+ {
++#if defined(OCHIOGSTATUS)
++struct ochanger_element_status_request cesr;
++#else
+ struct changer_element_status ces;
++#endif
++
+ int i,rc;
+ int type=CHET_ST;
+
+ get_changer_info(fd);
+
++#if defined(OCHIOGSTATUS)
++ cesr.cesr_type = type;
++ cesr.cesr_data = malloc(changer_info.cp_nslots);
++ rc = ioctl(fd, OCHIOGSTATUS, &cesr);
++#else
+ ces.ces_type = type;
+ ces.ces_data = malloc(changer_info.cp_nslots);
+-
+ rc = ioctl(fd, CHIOGSTATUS, &ces);
++#endif
++
+ if (rc) {
+ dbprintf(("%s: changer status query failed: 0x%x %s\n",
+ get_pname(), rc,strerror(errno)));
+ return -1;
+ }
+
++#if defined(OCHIOGSTATUS)
++ i = cesr.cesr_data[slot] & CESTATUS_FULL;
++ free(cesr.cesr_data);
++#else
+ i = ces.ces_data[slot] & CESTATUS_FULL;
+-
+ free(ces.ces_data);
++#endif
++
+ return !i;
+ }
+
+@@ -148,16 +178,27 @@
+ */
+ int find_empty(int fd, int start, int count)
+ {
++#if defined(OCHIOGSTATUS)
++struct ochanger_element_status_request cesr;
++#else
+ struct changer_element_status ces;
++#endif
++
+ int i,rc;
+ int type=CHET_ST;
+
+ get_changer_info(fd);
+
++#if defined(OCHIOGSTATUS)
++ cesr.cesr_type = type;
++ cesr.cesr_data = malloc(changer_info.cp_nslots);
++ rc = ioctl(fd, OCHIOGSTATUS, &cesr);
++#else
+ ces.ces_type = type;
+ ces.ces_data = malloc(changer_info.cp_nslots);
++ rc = ioctl(fd, CHIOGSTATUS, &ces);
++#endif
+
+- rc = ioctl(fd,CHIOGSTATUS,&ces);
+ if (rc) {
+ dbprintf(("%s: changer status query failed: 0x%x %s\n",
+ get_pname(), rc, strerror(errno)));
+@@ -165,9 +206,17 @@
+ }
+
+ i = 0;
++
++#if defined(OCHIOGSTATUS)
++ while ((i < changer_info.cp_nslots)&&(cesr.cesr_data[i] & CESTATUS_FULL))
++ i++;
++ free(cesr.cesr_data);
++#else
+ while ((i < changer_info.cp_nslots)&&(ces.ces_data[i] & CESTATUS_FULL))
+ i++;
+ free(ces.ces_data);
++#endif
++
+ return i;
+ }
+
+@@ -176,25 +225,41 @@
+ */
+ int drive_loaded(int fd, int drivenum)
+ {
++#if defined(OCHIOGSTATUS)
++struct ochanger_element_status_request cesr;
++#else
+ struct changer_element_status ces;
++#endif
++
+ int i,rc;
+ int type=CHET_DT;
+
+ get_changer_info(fd);
+
++#if defined(OCHIOGSTATUS)
++ cesr.cesr_type = type;
++ cesr.cesr_data = malloc(changer_info.cp_ndrives);
++ rc = ioctl(fd, OCHIOGSTATUS, &cesr);
++#else
+ ces.ces_type = type;
+ ces.ces_data = malloc(changer_info.cp_ndrives);
+-
+ rc = ioctl(fd, CHIOGSTATUS, &ces);
++#endif
++
+ if (rc) {
+ dbprintf(("%s: drive status query failed: 0x%x %s\n",
+ get_pname(), rc, strerror(errno)));
+ return -1;
+ }
+
++#if defined(OCHIOGSTATUS)
++ i = (cesr.cesr_data[drivenum] & CESTATUS_FULL);
++ free(cesr.cesr_data);
++#else
+ i = (ces.ces_data[drivenum] & CESTATUS_FULL);
+-
+ free(ces.ces_data);
++#endif
++
+ return i;
+ }
+
+@@ -204,7 +269,12 @@
+ */
+ int unload(int fd, int drive, int slot)
+ {
++#if defined(OCHIOGSTATUS)
++struct changer_move_request move;
++#else
+ struct changer_move move;
++#endif
++
+ int rc;
+
+ dbprintf(("unload : fd = %d, drive = %d, slot =%d\n",fd, drive, slot));
+@@ -230,7 +300,12 @@
+ */
+ int load(int fd, int drive, int slot)
+ {
++#if defined(OCHIOGSTATUS)
++struct changer_move_request move;
++#else
+ struct changer_move move;
++#endif
++
+ int rc;
+
+ dbprintf(("load : fd = %d, drive = %d, slot =%d\n",fd, drive, slot));