[PATCH] sbin/dump general cleanup
Sepherosa Ziehau
sepherosa at softhome.net
Tue Apr 12 03:18:08 PDT 2005
General clean up only.
The only warnings left are signed values comparing unsigned values.
They would be fixed after Joerg and Matt has done their libc type dump up
work
(http://leaf.dragonflybsd.org/mailarchive/kernel/2005-04/msg00096.html)
Please review them.
Best Regards,
sepheIndex: unctime.c
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/unctime.c,v
retrieving revision 1.3
diff -u -r1.3 unctime.c
--- unctime.c 28 Sep 2003 14:39:17 -0000 1.3
+++ unctime.c 12 Apr 2005 09:51:42 -0000
@@ -44,6 +44,7 @@
* Return -1 if the string is not in ctime format.
*/
+time_t unctime(char *);
time_t
unctime(char *str)
1) split atomic() to atomic_read() and atomic_write(), because to write(2)/read(2)'s function type are not same
2) add static for locally use function definition
3) add __unused for unused funtion parameter
4) change local variable name to avoid shadowing
5) add `volatile' type modifier for loacl variable where longjmp()/setjmp() may junk it
Index: tape.c
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/tape.c,v
retrieving revision 1.8
diff -u -r1.8 tape.c
--- tape.c 27 Dec 2004 22:36:37 -0000 1.8
+++ tape.c 12 Apr 2005 09:51:08 -0000
@@ -77,7 +77,8 @@
extern char *host;
char *nexttape;
-static int atomic(ssize_t (*)(), int, char *, int);
+static int atomic_read(int, char *, int);
+static int atomic_write(int, const char *, int);
static void doslave(int, int);
static void enslave(void);
static void flushtape(void);
@@ -203,8 +204,8 @@
int nogripe = 0;
-void
-tperror(int signo)
+static void
+tperror(int signo __unused)
{
if (pipeout) {
@@ -224,8 +225,8 @@
Exit(X_REWRITE);
}
-void
-sigpipe(int signo)
+static void
+sigpipe(int signo __unused)
{
quit("Broken pipe\n");
@@ -241,7 +242,7 @@
slp->req[trecno].count = 0; /* Sentinel */
- if (atomic(write, slp->fd, (char *)slp->req, siz) != siz)
+ if (atomic_write(slp->fd, (char *)slp->req, siz) != siz)
quit("error writing command pipe: %s\n", strerror(errno));
slp->sent = 1; /* we sent a request, read the response later */
@@ -252,7 +253,7 @@
/* Read results back from next slave */
if (slp->sent) {
- if (atomic(read, slp->fd, (char *)&got, sizeof got)
+ if (atomic_read(slp->fd, (char *)&got, sizeof got)
!= sizeof got) {
perror(" DUMP: error reading command pipe in master");
dumpabort(0);
@@ -269,7 +270,7 @@
*/
for (i = 0; i < SLAVES; i++) {
if (slaves[i].sent) {
- if (atomic(read, slaves[i].fd,
+ if (atomic_read(slaves[i].fd,
(char *)&got, sizeof got)
!= sizeof got) {
perror(" DUMP: error reading command pipe in master");
@@ -325,7 +326,7 @@
* fixme: punt for now.
*/
if (slaves[f].sent) {
- if (atomic(read, slaves[f].fd, (char *)&got, sizeof got)
+ if (atomic_read(slaves[f].fd, (char *)&got, sizeof got)
!= sizeof got) {
perror(" DUMP: error reading command pipe in master");
dumpabort(0);
@@ -442,7 +443,7 @@
lastspclrec = savedtapea - 1;
}
size = (char *)ntb - (char *)q;
- if (atomic(write, slp->fd, (char *)q, size) != size) {
+ if (atomic_write(slp->fd, (char *)q, size) != size) {
perror(" DUMP: error writing command pipe");
dumpabort(0);
}
@@ -482,7 +483,7 @@
* worked ok, otherwise the tape is much too short!
*/
if (slp->sent) {
- if (atomic(read, slp->fd, (char *)&got, sizeof got)
+ if (atomic_read(slp->fd, (char *)&got, sizeof got)
!= sizeof got) {
perror(" DUMP: error reading command pipe in master");
dumpabort(0);
@@ -510,7 +511,7 @@
int parentpid;
int childpid;
int status;
- int waitpid;
+ int wait_pid;
char *p;
#ifdef sunos
void (*interrupt_save)();
@@ -544,9 +545,9 @@
msg("Tape: %d; parent process: %d child process %d\n",
tapeno+1, parentpid, childpid);
#endif /* TDEBUG */
- while ((waitpid = wait(&status)) != childpid)
+ while ((wait_pid = wait(&status)) != childpid)
msg("Parent %d waiting for child %d has another child %d return\n",
- parentpid, childpid, waitpid);
+ parentpid, childpid, wait_pid);
if (status & 0xFF) {
msg("Child %d returns LOB status %o\n",
childpid, status&0xFF);
@@ -641,7 +642,7 @@
}
void
-dumpabort(int signo)
+dumpabort(int signo __unused)
{
if (master != 0 && master != getpid())
@@ -670,8 +671,8 @@
/*
* proceed - handler for SIGUSR2, used to synchronize IO between the slaves.
*/
-void
-proceed(int signo)
+static void
+proceed(int signo __unused)
{
if (ready)
@@ -715,10 +716,11 @@
}
}
- for (i = 0; i < SLAVES; i++)
- atomic(write, slaves[i].fd,
+ for (i = 0; i < SLAVES; i++) {
+ atomic_write(slaves[i].fd,
(char *) &slaves[(i + 1) % SLAVES].pid,
sizeof slaves[0].pid);
+ }
master = 0;
}
@@ -743,10 +745,11 @@
* get the lock back for the next cycle by swapping descriptors.
*/
static void
-doslave(int cmd, int slave_number)
+doslave(int cmd, int slave_number __unused)
{
int nread;
- int nextslave, size, wrote = 0, eot_count;
+ int nextslave, size, eot_count;
+ volatile int wrote = 0;
/*
* Need our own seek pointer.
@@ -758,7 +761,7 @@
/*
* Need the pid of the next slave in the loop...
*/
- if ((nread = atomic(read, cmd, (char *)&nextslave, sizeof nextslave))
+ if ((nread = atomic_read(cmd, (char *)&nextslave, sizeof nextslave))
!= sizeof nextslave) {
quit("master/slave protocol botched - didn't get pid of next slave.\n");
}
@@ -766,7 +769,7 @@
/*
* Get list of blocks to dump, read the blocks into tape buffer
*/
- while ((nread = atomic(read, cmd, (char *)slp->req, reqsiz)) == reqsiz) {
+ while ((nread = atomic_read(cmd, (char *)slp->req, reqsiz)) == reqsiz) {
struct req *p = slp->req;
for (trecno = 0; trecno < ntrec;
@@ -775,7 +778,7 @@
bread(p->dblk, slp->tblock[trecno],
p->count * TP_BSIZE);
} else {
- if (p->count != 1 || atomic(read, cmd,
+ if (p->count != 1 || atomic_read(cmd,
(char *)slp->tblock[trecno],
TP_BSIZE) != TP_BSIZE)
quit("master/slave protocol botched.\n");
@@ -838,7 +841,7 @@
* pass size of write back to master
* (for EOT handling)
*/
- atomic(write, cmd, (char *)&size, sizeof size);
+ atomic_write(cmd, (char *)&size, sizeof size);
}
/*
@@ -857,11 +860,21 @@
* loop until the count is satisfied (or error).
*/
static int
-atomic(ssize_t (*func)(), int fd, char *buf, int count)
+atomic_read(int fd, char *buf, int count)
+{
+ int got, need = count;
+
+ while ((got = read(fd, buf, need)) > 0 && (need -= got) > 0)
+ buf += got;
+ return (got < 0 ? got : count - need);
+}
+
+static int
+atomic_write(int fd, const char *buf, int count)
{
int got, need = count;
- while ((got = (*func)(fd, buf, need)) > 0 && (need -= got) > 0)
+ while ((got = write(fd, buf, need)) > 0 && (need -= got) > 0)
buf += got;
return (got < 0 ? got : count - need);
}
Index: main.c
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/main.c,v
retrieving revision 1.9
diff -u -r1.9 main.c
--- main.c 27 Dec 2004 22:36:37 -0000 1.9
+++ main.c 12 Apr 2005 09:49:51 -0000
@@ -80,7 +80,7 @@
long blocksperfile; /* output blocks per file */
char *host = NULL; /* remote host (if any) */
-static long numarg(char *, long, long);
+static long numarg(const char *, long, long);
static void obsolete(int *, char **[]);
static void usage(void);
@@ -253,9 +253,14 @@
}
if (strchr(tape, ':')) {
- host = tape;
- tape = strchr(host, ':');
- *tape++ = '\0';
+ if ((host = strdup(tape)) != NULL) {
+ char *ehost;
+ ehost = strchr(host, ':');
+ *ehost++ = '\0';
+ tape = ehost;
+ } else {
+ err(1, NULL);
+ }
#ifdef RDUMP
if (strchr(tape, '\n')) {
fprintf(stderr, "invalid characters in tape\n");
@@ -518,7 +523,7 @@
* range (except that a vmax of 0 means unlimited).
*/
static long
-numarg(char *meaning, long vmin, long vmax)
+numarg(const char *meaning, long vmin, long vmax)
{
char *p;
long val;
1) add const constraint
2) add extern, when duplicated definition warning encounted
3) rename certain function declaration's parameter avoid name shadowing
Index: dump.h
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/dump.h,v
retrieving revision 1.6
diff -u -r1.6 dump.h
--- dump.h 2 Apr 2005 22:25:32 -0000 1.6
+++ dump.h 12 Apr 2005 09:49:04 -0000
@@ -60,9 +60,9 @@
* All calculations done in 0.1" units!
*/
char *disk; /* name of the disk file */
-char *tape; /* name of the tape file */
-char *dumpdates; /* name of the file containing dump date information*/
-char *temp; /* name of the file for doing rewrite of dumpdates */
+const char *tape; /* name of the tape file */
+const char *dumpdates; /* name of the file containing dump date information*/
+const char *temp; /* name of the file for doing rewrite of dumpdates */
char lastlevel; /* dump level of previous dump */
char level; /* dump level of this dump */
int uflag; /* update flag */
@@ -71,34 +71,34 @@
int pipeout; /* true => output to standard output */
ino_t curino; /* current inumber; used globally */
int newtape; /* new tape flag */
-int density; /* density in 0.1" units */
+extern int density; /* density in 0.1" units */
long tapesize; /* estimated tape size, blocks */
long tsize; /* tape size in 0.1" units */
long asize; /* number of 0.1" units written on current tape */
int etapes; /* estimated number of tapes */
int nonodump; /* if set, do not honor UF_NODUMP user flags */
int unlimited; /* if set, write to end of medium */
-int cachesize; /* size of block cache */
+extern int cachesize; /* size of block cache */
-int notify; /* notify operator flag */
-int blockswritten; /* number of blocks written on current tape */
-int tapeno; /* current tape number */
+extern int notify; /* notify operator flag */
+extern int blockswritten; /* number of blocks written on current tape */
+extern int tapeno; /* current tape number */
time_t tstart_writing; /* when started writing the first tape block */
time_t tend_writing; /* after writing the last tape block */
int passno; /* current dump pass number */
struct fs *sblock; /* the file system super block */
char sblock_buf[MAXBSIZE];
-long dev_bsize; /* block size of underlying disk device */
+extern long dev_bsize; /* block size of underlying disk device */
int dev_bshift; /* log2(dev_bsize) */
int tp_bshift; /* log2(TP_BSIZE) */
/* operator interface functions */
-void broadcast(char *message);
+void broadcast(const char *message);
void infosch(int);
void lastdump(int arg); /* int should be char */
void msg(const char *fmt, ...) __printflike(1, 2);
void msgtail(const char *fmt, ...) __printflike(1, 2);
-int query(char *question);
+int query(const char *question);
void quit(const char *fmt, ...) __printflike(1, 2);
void timeest(void);
time_t unctime(char *str);
@@ -106,8 +106,8 @@
/* mapping rouintes */
struct dinode;
long blockest(struct dinode *dp);
-int mapfiles(ino_t maxino, long *tapesize);
-int mapdirs(ino_t maxino, long *tapesize);
+int mapfiles(ino_t maxino, long *_tapesize);
+int mapdirs(ino_t maxino, long *_tapesize);
/* file dumping routines */
void blksout(daddr_t *blkp, int frags, ino_t ino);
@@ -136,7 +136,7 @@
#ifdef RDUMP
void rmtclose(void);
int rmthost(char *host);
-int rmtopen(char *tape, int mode);
+int rmtopen(const char *_tape, int mode);
int rmtwrite(char *buf, int count);
#endif /* RDUMP */
@@ -167,8 +167,9 @@
char dd_level;
time_t dd_ddate;
};
-int nddates; /* number of records (might be zero) */
-struct dumpdates **ddatev; /* the arrayfied version */
+extern int nddates; /* number of records (might be zero) */
+extern struct dumpdates **ddatev; /* the arrayfied version */
+
void initdumptimes(void);
void getdumptime(void);
void putdumptime(void);
rename function parameter name to avoid name shadowing
Index: traverse.c
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/traverse.c,v
retrieving revision 1.9
diff -u -r1.9 traverse.c
--- traverse.c 2 Apr 2005 22:25:32 -0000 1.9
+++ traverse.c 12 Apr 2005 09:51:25 -0000
@@ -70,11 +70,11 @@
typedef long fsizeT;
#endif
-static int dirindir(ino_t ino, daddr_t blkno, int level, long *size,
- long *tapesize, int nodump);
-static void dmpindir(ino_t ino, daddr_t blk, int level, fsizeT *size);
+static int dirindir(ino_t ino, daddr_t blkno, int _level, long *size,
+ long *tape_size, int nodump);
+static void dmpindir(ino_t ino, daddr_t blk, int _level, fsizeT *size);
static int searchdir(ino_t ino, daddr_t blkno, long size, long filesize,
- long *tapesize, int nodump);
+ long *tape_size, int nodump);
/*
* This is an estimation of the number of TP_BSIZE blocks in the file.
@@ -136,7 +136,7 @@
* the directories in the filesystem.
*/
int
-mapfiles(ino_t maxino, long *tapesize)
+mapfiles(ino_t maxino, long *tape_size)
{
int mode;
ino_t ino;
@@ -159,9 +159,9 @@
if (WANTTODUMP(dp)) {
SETINO(ino, dumpinomap);
if (mode != IFREG && mode != IFDIR && mode != IFLNK)
- *tapesize += 1;
+ *tape_size += 1;
else
- *tapesize += blockest(dp);
+ *tape_size += blockest(dp);
continue;
}
if (mode == IFDIR) {
@@ -191,7 +191,7 @@
* pass using this algorithm.
*/
int
-mapdirs(ino_t maxino, long *tapesize)
+mapdirs(ino_t maxino, long *tape_size)
{
struct dinode *dp;
int i, isdir, nodump;
@@ -221,10 +221,11 @@
di = *dp; /* inode buf may change in searchdir(). */
filesize = di.di_size;
for (ret = 0, i = 0; filesize > 0 && i < NDADDR; i++) {
- if (di.di_db[i] != 0)
+ if (di.di_db[i] != 0) {
ret |= searchdir(ino, di.di_db[i],
(long)dblksize(sblock, &di, i),
- filesize, tapesize, nodump);
+ filesize, tape_size, nodump);
+ }
if (ret & HASDUMPEDFILE)
filesize = 0;
else
@@ -234,11 +235,11 @@
if (di.di_ib[i] == 0)
continue;
ret |= dirindir(ino, di.di_ib[i], i, &filesize,
- tapesize, nodump);
+ tape_size, nodump);
}
if (ret & HASDUMPEDFILE) {
SETINO(ino, dumpinomap);
- *tapesize += blockest(&di);
+ *tape_size += blockest(&di);
change = 1;
continue;
}
@@ -262,7 +263,7 @@
*/
static int
dirindir(ino_t ino, daddr_t blkno, int ind_level, long *filesize,
- long *tapesize, int nodump)
+ long *tape_size, int nodump)
{
int ret = 0;
int i;
@@ -272,9 +273,10 @@
if (ind_level <= 0) {
for (i = 0; *filesize > 0 && i < NINDIR(sblock); i++) {
blkno = idblk[i];
- if (blkno != 0)
+ if (blkno != 0) {
ret |= searchdir(ino, blkno, sblock->fs_bsize,
- *filesize, tapesize, nodump);
+ *filesize, tape_size, nodump);
+ }
if (ret & HASDUMPEDFILE)
*filesize = 0;
else
@@ -285,9 +287,10 @@
ind_level--;
for (i = 0; *filesize > 0 && i < NINDIR(sblock); i++) {
blkno = idblk[i];
- if (blkno != 0)
+ if (blkno != 0) {
ret |= dirindir(ino, blkno, ind_level, filesize,
- tapesize, nodump);
+ tape_size, nodump);
+ }
}
return (ret);
}
@@ -299,7 +302,7 @@
*/
static int
searchdir(ino_t ino, daddr_t blkno, long size, long filesize,
- long *tapesize, int nodump)
+ long *tape_size, int nodump)
{
struct direct *dp;
struct dinode *ip;
@@ -328,7 +331,7 @@
ip = getino(dp->d_ino);
if (TSTINO(dp->d_ino, dumpinomap)) {
CLRINO(dp->d_ino, dumpinomap);
- *tapesize -= blockest(ip);
+ *tape_size -= blockest(ip);
}
/*
* Add back to dumpdirmap and remove from usedinomap
1) add const constraint
2) add __unused for certain unused function parameter
3) add static for locally used only function definition
4) add const during type cast on const void pointer
Index: optr.c
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/optr.c,v
retrieving revision 1.6
diff -u -r1.6 optr.c
--- optr.c 27 Dec 2004 22:36:37 -0000 1.6
+++ optr.c 12 Apr 2005 09:50:42 -0000
@@ -54,7 +54,7 @@
#include "dump.h"
#include "pathnames.h"
-void alarmcatch(/* int, int */);
+void alarmcatch(int); /* int, int */
int datesort(const void *, const void *);
/*
@@ -68,11 +68,11 @@
* Every 2 minutes we reprint the message, alerting others
* that dump needs attention.
*/
-static int timeout;
-static char *attnmessage; /* attention message */
+static int timeout;
+static const char *attnmessage; /* attention message */
int
-query(char *question)
+query(const char *question)
{
char replybuffer[64];
int back, errcount;
@@ -82,7 +82,7 @@
quit("fopen on %s fails: %s\n", _PATH_TTY, strerror(errno));
attnmessage = question;
timeout = 0;
- alarmcatch();
+ alarmcatch(0);
back = -1;
errcount = 0;
do {
@@ -118,7 +118,7 @@
* sleep for 2 minutes in case nobody comes to satisfy dump
*/
void
-alarmcatch()
+alarmcatch(int signo __unused)
{
if (notify == 0) {
if (timeout == 0)
@@ -142,7 +142,7 @@
* Here if an inquisitive operator interrupts the dump program
*/
void
-interrupt(int signo)
+interrupt(int signo __unused)
{
msg("Interrupt received.\n");
if (query("Do you want to abort dump?"))
@@ -153,7 +153,7 @@
* We now use wall(1) to do the actual broadcasting.
*/
void
-broadcast(char *message)
+broadcast(const char *message)
{
FILE *fp;
char buf[sizeof(_PATH_WALL) + sizeof(OPGRENT) + 3];
@@ -209,7 +209,7 @@
* Schedule a printout of the estimate in the next call to timeest().
*/
void
-infosch(int signal)
+infosch(int signo __unused)
{
tschedule = 0;
}
@@ -263,7 +263,7 @@
* we don't actually do it
*/
-struct fstab *
+static struct fstab *
allocfsent(struct fstab *fs)
{
struct fstab *new;
@@ -355,7 +355,8 @@
int i;
struct fstab *dt;
struct dumpdates *dtwalk;
- char *lastname, *date;
+ const char *lastname;
+ char *date;
int dumpme;
time_t tnow;
struct tm *tlast;
@@ -399,8 +400,8 @@
int
datesort(const void *a1, const void *a2)
{
- struct dumpdates *d1 = *(struct dumpdates **)a1;
- struct dumpdates *d2 = *(struct dumpdates **)a2;
+ const struct dumpdates *d1 = *(const struct dumpdates **)a1;
+ const struct dumpdates *d2 = *(const struct dumpdates **)a2;
int diff;
diff = strncmp(d1->dd_name, d2->dd_name, sizeof(d1->dd_name));
1) add const constraint
2) add fake int parameter for rmtconnabort(), which also severs as a signal handler
3) msg("") -> msg("%s", "") to shut up gcc's empty fmt string warning
4) rename certain function parameter to avoid name shadowing
5) remove unused function
6) cast strlen(3)'s return value to (ssize_t) when it is compared write(2)'s return value
Index: dumprmt.c
===================================================================
RCS file: /opt/df_cvs/src/sbin/dump/dumprmt.c,v
retrieving revision 1.7
diff -u -r1.7 dumprmt.c
--- dumprmt.c 27 Dec 2004 22:36:37 -0000 1.7
+++ dumprmt.c 12 Apr 2005 09:49:26 -0000
@@ -76,12 +76,12 @@
static char *rmtpeer;
static int okname(char *);
-static int rmtcall(char *, char *);
-static void rmtconnaborted(/* int, int */);
+static int rmtcall(const char *, const char *);
+static void rmtconnaborted(int);
static int rmtgetb(void);
static void rmtgetconn(void);
static void rmtgets(char *, int);
-static int rmtreply(char *);
+static int rmtreply(const char *);
#ifdef KERBEROS
int krcmd(char **, int /*u_short*/, char *, char *, int *, char *);
#endif
@@ -107,7 +107,7 @@
}
static void
-rmtconnaborted(void)
+rmtconnaborted(int signo __unused)
{
msg("Lost connection to remote host.\n");
if (errfd != -1) {
@@ -168,7 +168,7 @@
tuser = pwd->pw_name;
if ((rmt = getenv("RMT")) == NULL)
rmt = _PATH_RMT;
- msg("");
+ msg("%s", "");
#ifdef KERBEROS
if (dokerberos)
rmtape = krcmd(&rmtpeer, sp->s_port, tuser, rmt, &errfd,
@@ -217,13 +217,13 @@
}
int
-rmtopen(char *tape, int mode)
+rmtopen(const char *rtape, int mode)
{
char buf[256];
- snprintf(buf, sizeof (buf), "O%.226s\n%d\n", tape, mode);
+ snprintf(buf, sizeof (buf), "O%.226s\n%d\n", rtape, mode);
rmtstate = TS_OPEN;
- return (rmtcall(tape, buf));
+ return (rmtcall(rtape, buf));
}
void
@@ -237,25 +237,6 @@
}
int
-rmtread(char *buf, int count)
-{
- char line[30];
- int n, i, cc;
-
- snprintf(line, sizeof (line), "R%d\n", count);
- n = rmtcall("read", line);
- if (n < 0)
- /* rmtcall() properly sets errno for us on errors. */
- return (n);
- for (i = 0; i < n; i += cc) {
- cc = read(rmtape, buf+i, n - i);
- if (cc <= 0)
- rmtconnaborted();
- }
- return (n);
-}
-
-int
rmtwrite(char *buf, int count)
{
char line[30];
@@ -266,76 +247,17 @@
return (rmtreply("write"));
}
-void
-rmtwrite0(int count)
-{
- char line[30];
-
- snprintf(line, sizeof (line), "W%d\n", count);
- write(rmtape, line, strlen(line));
-}
-
-void
-rmtwrite1(char *buf, int count)
-{
-
- write(rmtape, buf, count);
-}
-
-int
-rmtwrite2(void)
-{
-
- return (rmtreply("write"));
-}
-
-int
-rmtseek(int offset, int pos)
-{
- char line[80];
-
- snprintf(line, sizeof (line), "L%d\n%d\n", offset, pos);
- return (rmtcall("seek", line));
-}
-
-struct mtget mts;
-
-struct mtget *
-rmtstatus(void)
-{
- int i;
- char *cp;
-
- if (rmtstate != TS_OPEN)
- return (NULL);
- rmtcall("status", "S\n");
- for (i = 0, cp = (char *)&mts; i < sizeof(mts); i++)
- *cp++ = rmtgetb();
- return (&mts);
-}
-
-int
-rmtioctl(int cmd, int count)
-{
- char buf[256];
-
- if (count < 0)
- return (-1);
- snprintf(buf, sizeof (buf), "I%d\n%d\n", cmd, count);
- return (rmtcall("ioctl", buf));
-}
-
static int
-rmtcall(char *cmd, char *buf)
+rmtcall(const char *cmd, const char *buf)
{
- if (write(rmtape, buf, strlen(buf)) != strlen(buf))
- rmtconnaborted();
+ if (write(rmtape, buf, strlen(buf)) != (ssize_t)strlen(buf))
+ rmtconnaborted(0);
return (rmtreply(cmd));
}
static int
-rmtreply(char *cmd)
+rmtreply(const char *cmd)
{
char *cp;
char code[30], emsg[BUFSIZ];
@@ -357,7 +279,7 @@
msg("Protocol to remote tape server botched (code \"%s\").\n",
code);
- rmtconnaborted();
+ rmtconnaborted(0);
}
return (atoi(code + 1));
}
@@ -368,7 +290,7 @@
char c;
if (read(rmtape, &c, 1) != 1)
- rmtconnaborted();
+ rmtconnaborted(0);
return (c);
}
@@ -390,5 +312,5 @@
*cp = '\0';
msg("Protocol to remote tape server botched.\n");
msg("(rmtgets got \"%s\").\n", line);
- rmtconnaborted();
+ rmtconnaborted(0);
}
More information about the Submit
mailing list