/* Forward referenced subroutines */
-void store_inc(LEX *lc, struct res_items *item, int index, int pass);
+void store_inc(LEX *lc, RES_ITEM *item, int index, int pass);
-static void store_newinc(LEX *lc, struct res_items *item, int index, int pass);
-static void store_match(LEX *lc, struct res_items *item, int index, int pass);
-static void store_opts(LEX *lc, struct res_items *item, int index, int pass);
-static void store_fname(LEX *lc, struct res_items *item, int index, int pass);
-static void store_base(LEX *lc, struct res_items *item, int index, int pass);
+static void store_newinc(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_match(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_opts(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_fname(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_base(LEX *lc, RES_ITEM *item, int index, int pass);
static void setup_current_opts(void);
* new Include/Exclude items
* name handler value code flags default_value
*/
-static struct res_items newinc_items[] = {
+static RES_ITEM newinc_items[] = {
{"compression", store_opts, NULL, 0, 0, 0},
{"signature", store_opts, NULL, 0, 0, 0},
{"verify", store_opts, NULL, 0, 0, 0},
#define INC_KW_REPLACE 8 /* restore options */
#define INC_KW_READFIFO 9 /* Causes fifo data to be read */
#define INC_KW_PORTABLE 10
+#define INC_KW_MTIMEONLY 11
+#define INC_KW_KEEPATIME 12
/* Include keywords -- these are keywords that can appear
* in the options lists of an old include ( Include = compression= ...)
{"replace", INC_KW_REPLACE},
{"readfifo", INC_KW_READFIFO},
{"portable", INC_KW_PORTABLE},
+ {"mtimeonly", INC_KW_MTIMEONLY},
+ {"keepatime", INC_KW_KEEPATIME},
{NULL, 0}
};
{"no", INC_KW_READFIFO, "0"},
{"yes", INC_KW_PORTABLE, "p"},
{"no", INC_KW_PORTABLE, "0"},
+ {"yes", INC_KW_MTIMEONLY, "m"},
+ {"no", INC_KW_MTIMEONLY, "0"},
+ {"yes", INC_KW_KEEPATIME, "k"},
+ {"no", INC_KW_KEEPATIME, "0"},
{NULL, 0, 0}
};
}
/* Store FileSet Include/Exclude info */
-void store_inc(LEX *lc, struct res_items *item, int index, int pass)
+void store_inc(LEX *lc, RES_ITEM *item, int index, int pass)
{
int token, i;
int options = lc->options;
*/
while ((token = lex_get_token(lc, T_ALL)) != T_EOB) {
switch (token) {
- case T_COMMA:
- case T_EOL:
- continue;
-
- case T_IDENTIFIER:
- case T_UNQUOTED_STRING:
- case T_QUOTED_STRING:
- if (res_all.res_fs.have_MD5) {
- MD5Update(&res_all.res_fs.md5c, (unsigned char *)lc->str, lc->str_len);
- }
- if (incexe->name_list.size() == 0) {
- incexe->name_list.init(10, true);
- }
- incexe->name_list.append(bstrdup(lc->str));
- Dmsg1(200, "Add to name_list %s\n", lc->str);
- break;
- default:
- scan_err1(lc, "Expected a filename, got: %s", lc->str);
+ case T_COMMA:
+ case T_EOL:
+ continue;
+
+ case T_IDENTIFIER:
+ case T_UNQUOTED_STRING:
+ case T_QUOTED_STRING:
+ if (res_all.res_fs.have_MD5) {
+ MD5Update(&res_all.res_fs.md5c, (unsigned char *)lc->str, lc->str_len);
+ }
+ if (incexe->name_list.size() == 0) {
+ incexe->name_list.init(10, true);
+ }
+ incexe->name_list.append(bstrdup(lc->str));
+ Dmsg1(200, "Add to name_list %s\n", lc->str);
+ break;
+ default:
+ scan_err1(lc, "Expected a filename, got: %s", lc->str);
}
}
/* Note, MD5Final is done in backup.c */
* resource. We treat the Finclude/Fexeclude like a sort of
* mini-resource within the FileSet resource.
*/
-static void store_newinc(LEX *lc, struct res_items *item, int index, int pass)
+static void store_newinc(LEX *lc, RES_ITEM *item, int index, int pass)
{
int token, i;
INCEXE *incexe;
/* Store Match info */
-static void store_match(LEX *lc, struct res_items *item, int index, int pass)
+static void store_match(LEX *lc, RES_ITEM *item, int index, int pass)
{
int token;
}
/* Store Base info */
-static void store_base(LEX *lc, struct res_items *item, int index, int pass)
+static void store_base(LEX *lc, RES_ITEM *item, int index, int pass)
{
int token;
* always increase the name buffer by 10 items because we expect
* to add more entries.
*/
-static void store_fname(LEX *lc, struct res_items *item, int index, int pass)
+static void store_fname(LEX *lc, RES_ITEM *item, int index, int pass)
{
int token;
INCEXE *incexe;
/*
* New style options come here
*/
-static void store_opts(LEX *lc, struct res_items *item, int index, int pass)
+static void store_opts(LEX *lc, RES_ITEM *item, int index, int pass)
{
int i;
int keyword;