Changed batch.rsync_argvs to batch.sh.
[rsync/rsync.git] / batch.c
CommitLineData
08a740ff 1/* -*- c-file-style: "linux" -*-
71020fc3 2
6902ed17 3 Weiss 1/1999
08a740ff 4 Batch utilities for rsync.
6902ed17 5
1cd5beeb 6*/
6902ed17
MP
7
8#include "rsync.h"
9#include <time.h>
10
9b3318b0 11extern char *batch_name;
e8d3168e 12
76f79ba7 13void write_batch_argvs_file(int argc, char *argv[])
6902ed17 14{
01966df4 15 int fd, i;
088aac85
DD
16 char filename[MAXPATHLEN];
17
893c4cc0 18 stringjoin(filename, sizeof filename,
b462781f 19 batch_name, ".sh", NULL);
01966df4
WD
20 fd = do_open(filename, O_WRONLY | O_CREAT | O_TRUNC,
21 S_IRUSR | S_IWUSR | S_IEXEC);
22 if (fd < 0) {
d62bcc17 23 rsyserr(FERROR, errno, "Batch file %s open error", filename);
1cd5beeb
MP
24 exit_cleanup(1);
25 }
088aac85 26
01966df4
WD
27 /* Write argvs info to BATCH.rsync_argvs file */
28 for (i = 0; i < argc; i++) {
088aac85 29 if (i == argc - 2) /* Skip source directory on cmdline */
71020fc3 30 continue;
b462781f
WD
31 if (strncmp(argv[i], "--files-from", 12) == 0) {
32 if (strchr(argv[i], '=') == NULL)
33 i++;
b9f592fb 34 continue;
b462781f 35 }
01966df4
WD
36 if (i != 0)
37 write(fd, " ", 1);
b462781f
WD
38 if (strncmp(argv[i], "--write-batch", 13) == 0) {
39 write(fd, "--read", 6);
40 write(fd, argv[i] + 7, strlen(argv[i] + 7));
01966df4
WD
41 } else if (i == argc - 1) {
42 char *p = find_colon(argv[i]);
43 if (p) {
44 if (*++p == ':')
45 p++;
46 } else
47 p = argv[i];
48 write(fd, "${1:-", 5);
49 write(fd, p, strlen(p));
50 write(fd, "}", 1);
088aac85 51 } else
01966df4 52 write(fd, argv[i], strlen(argv[i]));
1cd5beeb 53 }
01966df4 54 if (write(fd, "\n", 1) != 1 || close(fd) < 0) {
d62bcc17 55 rsyserr(FERROR, errno, "Batch file %s write error", filename);
1cd5beeb
MP
56 exit_cleanup(1);
57 }
6902ed17
MP
58}
59
6902ed17
MP
60void show_flist(int index, struct file_struct **fptr)
61{
1cd5beeb
MP
62 /* for debugging show_flist(flist->count, flist->files * */
63
64 int i;
65 for (i = 0; i < index; i++) {
66 rprintf(FINFO, "flist->flags=%#x\n", fptr[i]->flags);
67 rprintf(FINFO, "flist->modtime=%#lx\n",
68 (long unsigned) fptr[i]->modtime);
69 rprintf(FINFO, "flist->length=%.0f\n",
70 (double) fptr[i]->length);
71 rprintf(FINFO, "flist->mode=%#o\n", (int) fptr[i]->mode);
72 rprintf(FINFO, "flist->basename=%s\n", fptr[i]->basename);
73 if (fptr[i]->dirname)
74 rprintf(FINFO, "flist->dirname=%s\n",
75 fptr[i]->dirname);
76 if (fptr[i]->basedir)
77 rprintf(FINFO, "flist->basedir=%s\n",
78 fptr[i]->basedir);
79 }
6902ed17
MP
80}
81
82void show_argvs(int argc, char *argv[])
83{
1cd5beeb 84 /* for debugging * */
6902ed17 85
1cd5beeb
MP
86 int i;
87 rprintf(FINFO, "BATCH.C:show_argvs,argc=%d\n", argc);
88 for (i = 0; i < argc; i++) {
89 /* if (argv[i]) */
90 rprintf(FINFO, "i=%d,argv[i]=%s\n", i, argv[i]);
6902ed17 91
1cd5beeb 92 }
6902ed17 93}