patch from Luk Claes to clear dependency_libs in *.la files
[debian/amanda] / recover-src / uparse.c
index 9a2010a2923fd9fdc10437d41812d6757d280b3e..de8148d6766cc5bdd713f7c740a4bab9a3dc6523 100644 (file)
    enum yytokentype {
      LISTHOST = 258,
      LISTDISK = 259,
-     SETHOST = 260,
-     SETDISK = 261,
-     SETDATE = 262,
-     SETTAPE = 263,
-     SETMODE = 264,
-     CD = 265,
-     CDX = 266,
-     QUIT = 267,
-     DHIST = 268,
-     LS = 269,
-     ADD = 270,
-     ADDX = 271,
-     EXTRACT = 272,
-     LIST = 273,
-     DELETE = 274,
-     DELETEX = 275,
-     PWD = 276,
-     CLEAR = 277,
-     HELP = 278,
-     LCD = 279,
-     LPWD = 280,
-     MODE = 281,
-     SMB = 282,
-     TAR = 283,
-     PATH = 284,
-     DATE = 285
+     LISTPROPERTY = 260,
+     SETHOST = 261,
+     SETDISK = 262,
+     SETDATE = 263,
+     SETTAPE = 264,
+     SETMODE = 265,
+     SETDEVICE = 266,
+     SETPROPERTY = 267,
+     CD = 268,
+     CDX = 269,
+     QUIT = 270,
+     DHIST = 271,
+     LS = 272,
+     ADD = 273,
+     ADDX = 274,
+     EXTRACT = 275,
+     DASH_H = 276,
+     LIST = 277,
+     DELETE = 278,
+     DELETEX = 279,
+     PWD = 280,
+     CLEAR = 281,
+     HELP = 282,
+     LCD = 283,
+     LPWD = 284,
+     MODE = 285,
+     SMB = 286,
+     TAR = 287,
+     APPEND = 288,
+     PRIORITY = 289,
+     NL = 290,
+     STRING = 291
    };
 #endif
 /* Tokens.  */
 #define LISTHOST 258
 #define LISTDISK 259
-#define SETHOST 260
-#define SETDISK 261
-#define SETDATE 262
-#define SETTAPE 263
-#define SETMODE 264
-#define CD 265
-#define CDX 266
-#define QUIT 267
-#define DHIST 268
-#define LS 269
-#define ADD 270
-#define ADDX 271
-#define EXTRACT 272
-#define LIST 273
-#define DELETE 274
-#define DELETEX 275
-#define PWD 276
-#define CLEAR 277
-#define HELP 278
-#define LCD 279
-#define LPWD 280
-#define MODE 281
-#define SMB 282
-#define TAR 283
-#define PATH 284
-#define DATE 285
+#define LISTPROPERTY 260
+#define SETHOST 261
+#define SETDISK 262
+#define SETDATE 263
+#define SETTAPE 264
+#define SETMODE 265
+#define SETDEVICE 266
+#define SETPROPERTY 267
+#define CD 268
+#define CDX 269
+#define QUIT 270
+#define DHIST 271
+#define LS 272
+#define ADD 273
+#define ADDX 274
+#define EXTRACT 275
+#define DASH_H 276
+#define LIST 277
+#define DELETE 278
+#define DELETEX 279
+#define PWD 280
+#define CLEAR 281
+#define HELP 282
+#define LCD 283
+#define LPWD 284
+#define MODE 285
+#define SMB 286
+#define TAR 287
+#define APPEND 288
+#define PRIORITY 289
+#define NL 290
+#define STRING 291
 
 
 
 #include "amanda.h"
 #include "amrecover.h"
 
+#define DATE_ALLOC_SIZE sizeof("YYYY-MM-DD-HH-MM-SS")   /* includes null */
+
 void           yyerror(char *s);
 extern int     yylex(void);
 extern char *  yytext;
 
 
-
 /* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -161,7 +174,7 @@ extern char *       yytext;
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 42 "uparse.y"
+#line 43 "uparse.y"
 {
        int     intval;
        double  floatval;
@@ -169,7 +182,7 @@ typedef union YYSTYPE
        int     subtok;
 }
 /* Line 187 of yacc.c.  */
-#line 173 "uparse.c"
+#line 186 "uparse.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -182,7 +195,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 186 "uparse.c"
+#line 199 "uparse.c"
 
 #ifdef short
 # undef short
@@ -395,22 +408,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  55
+#define YYFINAL  104
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   45
+#define YYLAST   166
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  31
+#define YYNTOKENS  37
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  16
+#define YYNNTS  21
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  49
+#define YYNRULES  101
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  61
+#define YYNSTATES  160
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   285
+#define YYMAXUTOK   291
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -446,46 +459,81 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36
 };
 
 #if YYDEBUG
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-static const yytype_uint8 yyprhs[] =
+static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
-      19,    21,    23,    24,    26,    29,    31,    34,    37,    41,
-      44,    47,    49,    52,    55,    58,    61,    63,    65,    68,
-      70,    72,    74,    76,    78,    81,    84,    86,    89,    92,
-      94,    97,   100,   102,   105,   108,   110,   112,   115,   117
+      19,    21,    23,    25,    27,    30,    33,    37,    40,    44,
+      47,    50,    54,    58,    61,    66,    70,    75,    77,    81,
+      84,    88,    92,    98,   101,   105,   110,   116,   120,   125,
+     130,   136,   139,   143,   147,   152,   156,   160,   163,   167,
+     171,   174,   178,   182,   186,   190,   193,   196,   200,   203,
+     207,   210,   213,   216,   219,   223,   226,   230,   233,   236,
+     239,   242,   245,   248,   251,   254,   258,   261,   263,   267,
+     270,   272,   276,   279,   281,   285,   288,   290,   293,   296,
+     300,   304,   307,   310,   313,   316,   319,   322,   325,   327,
+     330,   333
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      32,     0,    -1,    33,    -1,    34,    -1,    35,    -1,    36,
-      -1,    38,    -1,    40,    -1,    42,    -1,    44,    -1,    45,
-      -1,    46,    -1,    -1,     3,    -1,     4,    29,    -1,     4,
-      -1,     7,    30,    -1,     5,    29,    -1,     6,    29,    29,
-      -1,     6,    29,    -1,     8,    29,    -1,     8,    -1,    10,
-      29,    -1,    11,    29,    -1,     9,    27,    -1,     9,    28,
-      -1,    13,    -1,    14,    -1,    18,    29,    -1,    18,    -1,
-      21,    -1,    22,    -1,    26,    -1,    12,    -1,    15,    37,
-      -1,    37,    29,    -1,    29,    -1,    16,    39,    -1,    39,
-      29,    -1,    29,    -1,    19,    41,    -1,    41,    29,    -1,
-      29,    -1,    20,    43,    -1,    43,    29,    -1,    29,    -1,
-      25,    -1,    24,    29,    -1,    23,    -1,    17,    -1
+      38,     0,    -1,    39,    -1,    40,    -1,    41,    -1,    42,
+      -1,    43,    -1,    45,    -1,    47,    -1,    49,    -1,    51,
+      -1,    52,    -1,    53,    -1,    54,    -1,     3,    35,    -1,
+       3,    56,    -1,     4,    36,    35,    -1,     4,    35,    -1,
+       4,    36,    56,    -1,     5,    35,    -1,     5,    56,    -1,
+       6,    36,    35,    -1,     6,    36,    56,    -1,     6,    35,
+      -1,     7,    36,    36,    35,    -1,     7,    36,    35,    -1,
+       7,    36,    36,    56,    -1,     7,    -1,     9,    36,    35,
+      -1,     9,    35,    -1,     9,    36,    56,    -1,    11,    36,
+      35,    -1,    11,    21,    36,    36,    35,    -1,    11,    35,
+      -1,    11,    36,    56,    -1,    11,    21,    36,    35,    -1,
+      11,    21,    36,    36,    56,    -1,    12,    36,    55,    -1,
+      12,    33,    36,    55,    -1,    12,    34,    36,    55,    -1,
+      12,    33,    34,    36,    55,    -1,    12,    35,    -1,    12,
+      33,    35,    -1,    12,    34,    35,    -1,    12,    33,    34,
+      35,    -1,    13,    36,    35,    -1,    13,    36,    56,    -1,
+      13,    35,    -1,    14,    36,    35,    -1,    14,    36,    56,
+      -1,    14,    35,    -1,    10,    31,    35,    -1,    10,    32,
+      35,    -1,    10,    31,    56,    -1,    10,    32,    56,    -1,
+      10,    56,    -1,    10,    35,    -1,     8,    36,    35,    -1,
+       8,    35,    -1,     8,    36,    56,    -1,    16,    35,    -1,
+      16,    56,    -1,    17,    35,    -1,    17,    56,    -1,    22,
+      36,    35,    -1,    22,    35,    -1,    22,    36,    56,    -1,
+      25,    35,    -1,    25,    56,    -1,    26,    35,    -1,    26,
+      56,    -1,    30,    35,    -1,    30,    56,    -1,    15,    35,
+      -1,    15,    56,    -1,    18,    44,    35,    -1,    44,    36,
+      -1,    36,    -1,    19,    46,    35,    -1,    46,    36,    -1,
+      36,    -1,    23,    48,    35,    -1,    48,    36,    -1,    36,
+      -1,    24,    50,    35,    -1,    50,    36,    -1,    36,    -1,
+      29,    35,    -1,    29,    56,    -1,    28,    36,    35,    -1,
+      28,    36,    56,    -1,    28,    35,    -1,    27,    35,    -1,
+      27,    56,    -1,    20,    35,    -1,    20,    56,    -1,    36,
+      57,    -1,    36,    55,    -1,    35,    -1,    36,    57,    -1,
+      36,    57,    -1,    35,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint8 yyrline[] =
+static const yytype_uint16 yyrline[] =
 {
-       0,    65,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,   100,   108,   109,   110,   111,
-     112,   113,   114,   118,   122,   126,   127,   131,   135,   136,
-     140,   144,   145,   149,   153,   154,   158,   159,   166,   170
+       0,    68,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   129,   175,   176,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   196,   197,   201,   205,   206,   210,   214,
+     215,   219,   223,   224,   228,   232,   233,   237,   238,   239,
+     243,   244,   248,   249,   253,   254,   258,   267,   268,   272,
+     276,   277
 };
 #endif
 
@@ -494,14 +542,17 @@ static const yytype_uint8 yyrline[] =
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "LISTHOST", "LISTDISK", "SETHOST",
-  "SETDISK", "SETDATE", "SETTAPE", "SETMODE", "CD", "CDX", "QUIT", "DHIST",
-  "LS", "ADD", "ADDX", "EXTRACT", "LIST", "DELETE", "DELETEX", "PWD",
-  "CLEAR", "HELP", "LCD", "LPWD", "MODE", "SMB", "TAR", "PATH", "DATE",
-  "$accept", "ucommand", "set_command", "display_command", "quit_command",
-  "add_command", "add_path", "addx_command", "addx_path", "delete_command",
-  "delete_path", "deletex_command", "deletex_path", "local_command",
-  "help_command", "extract_command", 0
+  "$end", "error", "$undefined", "LISTHOST", "LISTDISK", "LISTPROPERTY",
+  "SETHOST", "SETDISK", "SETDATE", "SETTAPE", "SETMODE", "SETDEVICE",
+  "SETPROPERTY", "CD", "CDX", "QUIT", "DHIST", "LS", "ADD", "ADDX",
+  "EXTRACT", "DASH_H", "LIST", "DELETE", "DELETEX", "PWD", "CLEAR", "HELP",
+  "LCD", "LPWD", "MODE", "SMB", "TAR", "APPEND", "PRIORITY", "NL",
+  "STRING", "$accept", "ucommand", "set_command", "setdate_command",
+  "display_command", "quit_command", "add_command", "add_path",
+  "addx_command", "addx_path", "delete_command", "delete_path",
+  "deletex_command", "deletex_path", "local_command", "help_command",
+  "extract_command", "invalid_command", "property_value", "invalid_string",
+  "bogus_string", 0
 };
 #endif
 
@@ -513,28 +564,40 @@ static const yytype_uint16 yytoknum[] =
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285
+     285,   286,   287,   288,   289,   290,   291
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    31,    32,    32,    32,    32,    32,    32,    32,    32,
-      32,    32,    32,    33,    33,    33,    33,    33,    33,    33,
-      33,    33,    33,    33,    33,    33,    34,    34,    34,    34,
-      34,    34,    34,    35,    36,    37,    37,    38,    39,    39,
-      40,    41,    41,    42,    43,    43,    44,    44,    45,    46
+       0,    37,    38,    38,    38,    38,    38,    38,    38,    38,
+      38,    38,    38,    38,    39,    39,    39,    39,    39,    39,
+      39,    39,    39,    39,    39,    39,    39,    39,    39,    39,
+      39,    39,    39,    39,    39,    39,    39,    39,    39,    39,
+      39,    39,    39,    39,    39,    39,    39,    39,    39,    39,
+      39,    39,    39,    39,    39,    39,    39,    40,    40,    40,
+      41,    41,    41,    41,    41,    41,    41,    41,    41,    41,
+      41,    41,    41,    42,    42,    43,    44,    44,    45,    46,
+      46,    47,    48,    48,    49,    50,    50,    51,    51,    51,
+      51,    51,    52,    52,    53,    53,    54,    55,    55,    56,
+      57,    57
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     1,     2,     1,     2,     2,     3,     2,
-       2,     1,     2,     2,     2,     2,     1,     1,     2,     1,
-       1,     1,     1,     1,     2,     2,     1,     2,     2,     1,
-       2,     2,     1,     2,     2,     1,     1,     2,     1,     1
+       1,     1,     1,     1,     2,     2,     3,     2,     3,     2,
+       2,     3,     3,     2,     4,     3,     4,     1,     3,     2,
+       3,     3,     5,     2,     3,     4,     5,     3,     4,     4,
+       5,     2,     3,     3,     4,     3,     3,     2,     3,     3,
+       2,     3,     3,     3,     3,     2,     2,     3,     2,     3,
+       2,     2,     2,     2,     3,     2,     3,     2,     2,     2,
+       2,     2,     2,     2,     2,     3,     2,     1,     3,     2,
+       1,     3,     2,     1,     3,     2,     1,     2,     2,     3,
+       3,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+       2,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -542,41 +605,61 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-      12,    13,    15,     0,     0,     0,    21,     0,     0,     0,
-      33,    26,    27,     0,     0,    49,    29,     0,     0,    30,
-      31,    48,     0,    46,    32,     0,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    14,    17,    19,    16,
-      20,    24,    25,    22,    23,    36,    34,    39,    37,    28,
-      42,    40,    45,    43,    47,     1,    18,    35,    38,    41,
-      44
+       0,     0,     0,     0,     0,    27,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,     0,    15,    17,     0,    19,    20,    23,
+       0,     0,    58,     0,    29,     0,     0,     0,    56,    55,
+       0,    33,     0,     0,     0,    41,     0,    47,     0,    50,
+       0,    73,    74,    60,    61,    62,    63,    77,     0,    80,
+       0,    94,    95,    65,     0,    83,     0,    86,     0,    67,
+      68,    69,    70,    92,    93,    91,     0,    87,    88,    71,
+      72,   101,     0,    96,     1,    99,    16,    18,    21,    22,
+      25,     0,    57,    59,    28,    30,    51,    53,    52,    54,
+       0,    31,    34,     0,    42,     0,    43,     0,    98,     0,
+      37,    45,    46,    48,    49,    75,    76,    78,    79,    64,
+      66,    81,    82,    84,    85,    89,    90,   100,    24,    26,
+      35,     0,    44,     0,    38,    39,    97,    32,    36,    40
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
+static const yytype_int16 yydefgoto[] =
 {
-      -1,    25,    26,    27,    28,    29,    46,    30,    48,    31,
-      51,    32,    53,    33,    34,    35
+      -1,    29,    30,    31,    32,    33,    34,    78,    35,    80,
+      36,    86,    37,    88,    38,    39,    40,    41,   130,    44,
+     103
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -6
-static const yytype_int8 yypact[] =
+#define YYPACT_NINF -124
+static const yytype_int16 yypact[] =
 {
-      -3,    -6,    -5,    -1,     0,     1,     3,    -2,     4,     5,
-      -6,    -6,    -6,     6,     7,    -6,     8,     9,    10,    -6,
-      -6,    -6,    11,    -6,    -6,    27,    -6,    -6,    -6,    -6,
-      -6,    -6,    -6,    -6,    -6,    -6,    -6,    -6,    12,    -6,
-      -6,    -6,    -6,    -6,    -6,    -6,    13,    -6,    14,    -6,
-      -6,    15,    -6,    16,    -6,    -6,    -6,    -6,    -6,    -6,
-      -6
+     106,   -22,   -10,     2,     4,   -20,     6,     9,    -4,   -18,
+       0,    13,    20,    22,    26,    28,   -14,    -7,    33,    35,
+      10,    15,    37,    39,    41,    43,    47,    49,    51,    66,
+    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
+    -124,  -124,  -124,    51,  -124,  -124,    53,  -124,  -124,  -124,
+      55,    59,  -124,    61,  -124,    63,    65,    67,  -124,  -124,
+      44,  -124,    69,   -27,    71,  -124,   102,  -124,   104,  -124,
+     108,  -124,  -124,  -124,  -124,  -124,  -124,  -124,   110,  -124,
+     114,  -124,  -124,  -124,   116,  -124,   118,  -124,   120,  -124,
+    -124,  -124,  -124,  -124,  -124,  -124,   122,  -124,  -124,  -124,
+    -124,  -124,    51,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
+    -124,   124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
+     126,  -124,  -124,   128,  -124,   102,  -124,   102,  -124,   102,
+    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
+    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
+    -124,   130,  -124,   102,  -124,  -124,  -124,  -124,  -124,  -124
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-      -6,    -6,    -6,    -6,    -6,    -6,    -6,    -6,    -6,    -6,
-      -6,    -6,    -6,    -6,    -6,    -6
+    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
+    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -123,    -3,
+     -42
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -586,20 +669,44 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint8 yytable[] =
 {
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    36,    41,    42,    55,    37,    38,
-       0,    39,    40,    43,    44,    45,    47,    49,    50,    52,
-      54,    56,    57,    58,    59,    60
+      48,   105,   154,    60,   155,    59,   156,   123,   124,   125,
+      72,    74,    76,    42,    43,    82,    51,    61,    62,    90,
+      92,    94,    77,    98,   100,    45,    46,    56,    57,    79,
+     159,    58,    43,    63,    64,    65,    66,    47,    43,    49,
+      50,    52,    53,   107,    54,    55,    85,   109,    67,    68,
+     113,    87,   115,   117,   119,    69,    70,    71,    43,   122,
+     147,    73,    43,    75,    43,   132,   104,   134,    81,    43,
+      83,    84,    89,    43,    91,    43,    93,    43,    95,    96,
+     120,   140,    97,    43,    99,    43,   101,   102,   106,    43,
+     108,    43,     0,   146,   110,   111,   112,    43,   114,    43,
+     116,    43,   118,    43,   121,    43,   126,   127,   149,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,     0,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,   128,   129,   131,
+      43,     0,    28,   133,    43,   135,   136,     0,   158,   137,
+     138,   139,    43,   141,   142,   143,   144,   145,    43,   148,
+      43,   150,   151,   152,   153,   157,    43
 };
 
-static const yytype_int8 yycheck[] =
+static const yytype_int16 yycheck[] =
 {
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    29,    27,    28,     0,    29,    29,
-      -1,    30,    29,    29,    29,    29,    29,    29,    29,    29,
-      29,    29,    29,    29,    29,    29
+       3,    43,   125,    21,   127,     8,   129,    34,    35,    36,
+      13,    14,    15,    35,    36,    18,    36,    35,    36,    22,
+      23,    24,    36,    26,    27,    35,    36,    31,    32,    36,
+     153,    35,    36,    33,    34,    35,    36,    35,    36,    35,
+      36,    35,    36,    46,    35,    36,    36,    50,    35,    36,
+      53,    36,    55,    56,    57,    35,    36,    35,    36,    62,
+     102,    35,    36,    35,    36,    68,     0,    70,    35,    36,
+      35,    36,    35,    36,    35,    36,    35,    36,    35,    36,
+      36,    84,    35,    36,    35,    36,    35,    36,    35,    36,
+      35,    36,    -1,    96,    35,    36,    35,    36,    35,    36,
+      35,    36,    35,    36,    35,    36,    35,    36,   111,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    -1,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    35,    36,    35,
+      36,    -1,    36,    35,    36,    35,    36,    -1,   151,    35,
+      36,    35,    36,    35,    36,    35,    36,    35,    36,    35,
+      36,    35,    36,    35,    36,    35,    36
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -607,12 +714,21 @@ static const yytype_int8 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    32,    33,    34,    35,    36,
-      38,    40,    42,    44,    45,    46,    29,    29,    29,    30,
-      29,    27,    28,    29,    29,    29,    37,    29,    39,    29,
-      29,    41,    29,    43,    29,     0,    29,    29,    29,    29,
-      29
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    36,    38,
+      39,    40,    41,    42,    43,    45,    47,    49,    51,    52,
+      53,    54,    35,    36,    56,    35,    36,    35,    56,    35,
+      36,    36,    35,    36,    35,    36,    31,    32,    35,    56,
+      21,    35,    36,    33,    34,    35,    36,    35,    36,    35,
+      36,    35,    56,    35,    56,    35,    56,    36,    44,    36,
+      46,    35,    56,    35,    36,    36,    48,    36,    50,    35,
+      56,    35,    56,    35,    56,    35,    36,    35,    56,    35,
+      56,    35,    36,    57,     0,    57,    35,    56,    35,    56,
+      35,    36,    35,    56,    35,    56,    35,    56,    35,    56,
+      36,    35,    56,    34,    35,    36,    35,    36,    35,    36,
+      55,    35,    56,    35,    56,    35,    36,    35,    36,    35,
+      56,    35,    36,    35,    36,    35,    56,    57,    35,    56,
+      35,    36,    35,    36,    55,    55,    55,    35,    56,    55
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1426,195 +1542,482 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 12:
-#line 75 "uparse.y"
-    {
-           char * errstr = vstralloc("Invalid command: ", yytext, NULL);
-           yyerror(errstr);
-           amfree(errstr);
-           YYERROR;
-       }
+        case 14:
+#line 83 "uparse.y"
+    { list_host(); }
     break;
 
-  case 13:
+  case 15:
 #line 84 "uparse.y"
-    { list_host(); }
+    { yyerror("Invalid argument"); }
     break;
 
-  case 14:
+  case 16:
 #line 85 "uparse.y"
-    { list_disk((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { list_disk((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 15:
+  case 17:
 #line 86 "uparse.y"
     { list_disk(NULL); }
     break;
 
-  case 16:
+  case 18:
 #line 87 "uparse.y"
-    { set_date((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 17:
+  case 19:
 #line 88 "uparse.y"
-    { set_host((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { list_property(); }
     break;
 
-  case 18:
+  case 20:
 #line 89 "uparse.y"
-    { set_disk((yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(3) - (3)].strval)); }
+    { yyerror("Invalid argument"); }
     break;
 
-  case 19:
+  case 21:
 #line 90 "uparse.y"
-    { set_disk((yyvsp[(2) - (2)].strval), NULL); amfree((yyvsp[(2) - (2)].strval)); }
+    { set_host((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 20:
+  case 22:
 #line 91 "uparse.y"
-    { set_tape((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 21:
+  case 23:
 #line 92 "uparse.y"
-    { set_tape(""); }
+    { yyerror("Argument required"); }
     break;
 
-  case 22:
+  case 24:
 #line 93 "uparse.y"
-    { cd_glob((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { set_disk((yyvsp[(2) - (4)].strval), (yyvsp[(3) - (4)].strval)); amfree((yyvsp[(2) - (4)].strval)); amfree((yyvsp[(3) - (4)].strval)); }
     break;
 
-  case 23:
+  case 25:
 #line 94 "uparse.y"
-    { cd_regex((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { set_disk((yyvsp[(2) - (3)].strval), NULL); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 24:
+  case 26:
 #line 95 "uparse.y"
-    {
-#ifdef SAMBA_CLIENT
-                        set_mode(SAMBA_SMBCLIENT);
-#endif /* SAMBA_CLIENT */
-                    }
+    { yyerror("Invalid argument"); amfree((yyvsp[(2) - (4)].strval)); amfree((yyvsp[(3) - (4)].strval)); }
     break;
 
-  case 25:
+  case 27:
+#line 96 "uparse.y"
+    { yyerror("Argument required"); }
+    break;
+
+  case 28:
+#line 97 "uparse.y"
+    { set_tape((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 29:
+#line 98 "uparse.y"
+    { set_tape("default"); }
+    break;
+
+  case 30:
+#line 99 "uparse.y"
+    { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 31:
 #line 100 "uparse.y"
-    {
-#ifdef SAMBA_CLIENT
-                        set_mode(SAMBA_TAR);
-#endif /* SAMBA_CLIENT */
-                    }
+    { set_device(NULL, (yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 26:
+  case 32:
+#line 101 "uparse.y"
+    { set_device((yyvsp[(3) - (5)].strval), (yyvsp[(4) - (5)].strval)); amfree((yyvsp[(3) - (5)].strval)); amfree((yyvsp[(4) - (5)].strval));  }
+    break;
+
+  case 33:
+#line 102 "uparse.y"
+    { set_device(NULL, NULL); }
+    break;
+
+  case 34:
+#line 103 "uparse.y"
+    { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 35:
+#line 104 "uparse.y"
+    { yyerror("Invalid argument"); amfree((yyvsp[(3) - (4)].strval)); }
+    break;
+
+  case 36:
+#line 105 "uparse.y"
+    { yyerror("Invalid argument"); amfree((yyvsp[(3) - (5)].strval)); amfree((yyvsp[(4) - (5)].strval)); }
+    break;
+
+  case 37:
+#line 106 "uparse.y"
+    { set_property_name((yyvsp[(2) - (3)].strval), 0); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 38:
+#line 107 "uparse.y"
+    { set_property_name((yyvsp[(3) - (4)].strval), 1); amfree((yyvsp[(3) - (4)].strval)); }
+    break;
+
+  case 39:
 #line 108 "uparse.y"
-    { list_disk_history(); }
+    { set_property_name((yyvsp[(3) - (4)].strval), 0); amfree((yyvsp[(3) - (4)].strval)); }
     break;
 
-  case 27:
+  case 40:
 #line 109 "uparse.y"
-    { list_directory(); }
+    { set_property_name((yyvsp[(4) - (5)].strval), 1); amfree((yyvsp[(4) - (5)].strval)); }
     break;
 
-  case 28:
+  case 41:
 #line 110 "uparse.y"
-    { display_extract_list((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
+    { yyerror("Invalid argument"); }
     break;
 
-  case 29:
+  case 42:
 #line 111 "uparse.y"
-    { display_extract_list(NULL); }
+    { yyerror("Invalid argument"); }
     break;
 
-  case 30:
+  case 43:
 #line 112 "uparse.y"
-    { show_directory(); }
+    { yyerror("Invalid argument"); }
     break;
 
-  case 31:
+  case 44:
 #line 113 "uparse.y"
-    { clear_extract_list(); }
+    { yyerror("Invalid argument"); }
     break;
 
-  case 32:
+  case 45:
 #line 114 "uparse.y"
-    { show_mode (); }
+    { cd_glob((yyvsp[(2) - (3)].strval), 1); amfree((yyvsp[(2) - (3)].strval)); }
     break;
 
-  case 33:
+  case 46:
+#line 115 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 47:
+#line 116 "uparse.y"
+    { yyerror("Argument required"); }
+    break;
+
+  case 48:
+#line 117 "uparse.y"
+    { cd_regex((yyvsp[(2) - (3)].strval), 1); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 49:
 #line 118 "uparse.y"
+    { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 50:
+#line 119 "uparse.y"
+    { yyerror("Argument required"); }
+    break;
+
+  case 51:
+#line 120 "uparse.y"
+    { set_mode(SAMBA_SMBCLIENT); }
+    break;
+
+  case 52:
+#line 121 "uparse.y"
+    { set_mode(SAMBA_TAR); }
+    break;
+
+  case 53:
+#line 122 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 54:
+#line 123 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 55:
+#line 124 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 56:
+#line 125 "uparse.y"
+    { yyerror("Argument required"); }
+    break;
+
+  case 57:
+#line 129 "uparse.y"
+    {
+                       time_t now;
+                       struct tm *t;
+                       int y=2000, m=0, d=1, h=0, mi=0, s=0;
+                       int ret;
+                       char *mydate = (yyvsp[(2) - (3)].strval);
+
+                       now = time((time_t *)NULL);
+                       t = localtime(&now);
+                       if (t) {
+                           y = 1900+t->tm_year;
+                           m = t->tm_mon+1;
+                           d = t->tm_mday;
+                       }
+                       if (sscanf(mydate, "---%d", &d) == 1 ||
+                           sscanf(mydate, "--%d-%d", &m, &d) == 2 ||
+                           sscanf(mydate, "%d-%d-%d-%d-%d-%d", &y, &m, &d, &h, &mi, &s) >= 3) {
+                           if (y < 70) {
+                               y += 2000;
+                           } else if (y < 100) {
+                               y += 1900;
+                           }
+                           if(y < 1000 || y > 9999) {
+                               printf("invalid year");
+                           } else if(m < 1 || m > 12) {
+                               printf("invalid month");
+                           } else if(d < 1 || d > 31) {
+                               printf("invalid day");
+                           } else if(h < 0 || h > 24) {
+                               printf("invalid hour");
+                           } else if(mi < 0 || mi > 59) {
+                               printf("invalid minute");
+                           } else if(s < 0 || s > 59) {
+                               printf("invalid second");
+                           } else {
+                               char result[DATE_ALLOC_SIZE];
+                               if (h == 0 && mi == 0 && s == 0)
+                                   g_snprintf(result, DATE_ALLOC_SIZE, "%04d-%02d-%02d", y, m, d);
+                               else
+                                   g_snprintf(result, DATE_ALLOC_SIZE, "%04d-%02d-%02d-%02d-%02d-%02d", y, m, d, h, mi, s);
+                               set_date(result);
+                           }
+                       } else {
+                           printf("Invalid date: %s\n", mydate);
+                       }
+                    }
+    break;
+
+  case 58:
+#line 175 "uparse.y"
+    { yyerror("Argument required"); }
+    break;
+
+  case 59:
+#line 176 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 60:
+#line 180 "uparse.y"
+    { list_disk_history(); }
+    break;
+
+  case 61:
+#line 181 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 62:
+#line 182 "uparse.y"
+    { list_directory(); }
+    break;
+
+  case 63:
+#line 183 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 64:
+#line 184 "uparse.y"
+    { display_extract_list((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
+    break;
+
+  case 65:
+#line 185 "uparse.y"
+    { display_extract_list(NULL); }
+    break;
+
+  case 66:
+#line 186 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 67:
+#line 187 "uparse.y"
+    { show_directory(); }
+    break;
+
+  case 68:
+#line 188 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 69:
+#line 189 "uparse.y"
+    { clear_extract_list(); }
+    break;
+
+  case 70:
+#line 190 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 71:
+#line 191 "uparse.y"
+    { show_mode (); }
+    break;
+
+  case 72:
+#line 192 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 73:
+#line 196 "uparse.y"
     { quit(); }
     break;
 
-  case 35:
-#line 126 "uparse.y"
+  case 74:
+#line 197 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 76:
+#line 205 "uparse.y"
     { add_glob((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
     break;
 
-  case 36:
-#line 127 "uparse.y"
+  case 77:
+#line 206 "uparse.y"
     { add_glob((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
     break;
 
-  case 38:
-#line 135 "uparse.y"
+  case 79:
+#line 214 "uparse.y"
     { add_regex((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
     break;
 
-  case 39:
-#line 136 "uparse.y"
+  case 80:
+#line 215 "uparse.y"
     { add_regex((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
     break;
 
-  case 41:
-#line 144 "uparse.y"
+  case 82:
+#line 223 "uparse.y"
     { delete_glob((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
     break;
 
-  case 42:
-#line 145 "uparse.y"
+  case 83:
+#line 224 "uparse.y"
     { delete_glob((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
     break;
 
-  case 44:
-#line 153 "uparse.y"
+  case 85:
+#line 232 "uparse.y"
     { delete_regex((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
     break;
 
-  case 45:
-#line 154 "uparse.y"
+  case 86:
+#line 233 "uparse.y"
     { delete_regex((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
     break;
 
-  case 46:
-#line 158 "uparse.y"
-    { char buf[STR_SIZE]; puts(getcwd(buf, sizeof(buf))); }
+  case 87:
+#line 237 "uparse.y"
+    { char * buf= g_get_current_dir(); puts(buf); free(buf); }
     break;
 
-  case 47:
-#line 159 "uparse.y"
+  case 88:
+#line 238 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 89:
+#line 239 "uparse.y"
     {
-               local_cd((yyvsp[(2) - (2)].strval));
-               amfree((yyvsp[(2) - (2)].strval));
+               local_cd((yyvsp[(2) - (3)].strval));
+               amfree((yyvsp[(2) - (3)].strval));
        }
     break;
 
-  case 48:
-#line 166 "uparse.y"
+  case 90:
+#line 243 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 91:
+#line 244 "uparse.y"
+    { yyerror("Argument required"); }
+    break;
+
+  case 92:
+#line 248 "uparse.y"
     { help_list(); }
     break;
 
-  case 49:
-#line 170 "uparse.y"
+  case 93:
+#line 249 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 94:
+#line 253 "uparse.y"
     { extract_files(); }
     break;
 
+  case 95:
+#line 254 "uparse.y"
+    { yyerror("Invalid argument"); }
+    break;
+
+  case 96:
+#line 258 "uparse.y"
+    {
+           char * errstr = vstralloc("Invalid command: ", (yyvsp[(1) - (2)].strval), NULL);
+           yyerror(errstr);
+           amfree(errstr);
+           YYERROR;
+       }
+    break;
+
+  case 97:
+#line 267 "uparse.y"
+    { add_property_value((yyvsp[(1) - (2)].strval)); amfree( (yyvsp[(1) - (2)].strval)); }
+    break;
+
+  case 98:
+#line 268 "uparse.y"
+    { ; }
+    break;
+
+  case 99:
+#line 272 "uparse.y"
+    { amfree((yyvsp[(1) - (2)].strval)); }
+    break;
+
+  case 100:
+#line 276 "uparse.y"
+    { amfree((yyvsp[(1) - (2)].strval)); }
+    break;
+
+  case 101:
+#line 277 "uparse.y"
+    { ; }
+    break;
+
 
 /* Line 1267 of yacc.c.  */
-#line 1618 "uparse.c"
+#line 2021 "uparse.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -1828,13 +2231,13 @@ yyreturn:
 }
 
 
-#line 174 "uparse.y"
+#line 280 "uparse.y"
 
 
 void
 yyerror(
     char *     s)
 {
-       printf("%s\n", s);
+       g_printf("%s\n", s);
 }