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