- rval = sizeof (mtget);
- (void)sprintf(resp, "A%lld\n", (long long)rval);
- (void)write(1, resp, strlen(resp));
- (void)write(1, (char *)&mtget, sizeof (mtget));
+ }
+
+ if (rmt_version) {
+ rval = sizeof(mtget);
+ /* assume byte order:
+ Linux on Intel (little), Solaris on SPARC (big), Mac OS X on PPC (big)
+ thus need byte swapping from little to big
+ */
+ mtget.mt_type = swaplong(mtget.mt_type);
+ mtget.mt_resid = swaplong(mtget.mt_resid);
+ mtget.mt_dsreg = swaplong(mtget.mt_dsreg);
+ mtget.mt_gstat = swaplong(mtget.mt_gstat);
+ mtget.mt_erreg = swaplong(mtget.mt_erreg);
+ mtget.mt_fileno = swaplong(mtget.mt_fileno);
+ mtget.mt_blkno = swaplong(mtget.mt_blkno);
+ (void)sprintf(resp, "A%lld\n", (long long)rval);
+ (void)write(1, resp, strlen(resp));
+ (void)write(1, (char *)&mtget, sizeof (mtget));
+ } else {
+ rval = sizeof (mtget);
+ (void)sprintf(resp, "A%lld\n", (long long)rval);
+ (void)write(1, resp, strlen(resp));
+ (void)write(1, (char *)&mtget, sizeof (mtget));
+ }