|
Packit |
23ab03 |
/*
|
|
Packit |
23ab03 |
* Amanda, The Advanced Maryland Automatic Network Disk Archiver
|
|
Packit |
23ab03 |
* Copyright (c) 1991-1998, 2000 University of Maryland at College Park
|
|
Packit |
23ab03 |
* Copyright (c) 2007-2012 Zmanda, Inc. All Rights Reserved.
|
|
Packit |
23ab03 |
* Copyright (c) 2013-2016 Carbonite, Inc. All Rights Reserved.
|
|
Packit |
23ab03 |
* All Rights Reserved.
|
|
Packit |
23ab03 |
*
|
|
Packit |
23ab03 |
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
Packit |
23ab03 |
* documentation for any purpose is hereby granted without fee, provided that
|
|
Packit |
23ab03 |
* the above copyright notice appear in all copies and that both that
|
|
Packit |
23ab03 |
* copyright notice and this permission notice appear in supporting
|
|
Packit |
23ab03 |
* documentation, and that the name of U.M. not be used in advertising or
|
|
Packit |
23ab03 |
* publicity pertaining to distribution of the software without specific,
|
|
Packit |
23ab03 |
* written prior permission. U.M. makes no representations about the
|
|
Packit |
23ab03 |
* suitability of this software for any purpose. It is provided "as is"
|
|
Packit |
23ab03 |
* without express or implied warranty.
|
|
Packit |
23ab03 |
*
|
|
Packit |
23ab03 |
* U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
|
Packit |
23ab03 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M.
|
|
Packit |
23ab03 |
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
Packit |
23ab03 |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
Packit |
23ab03 |
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
Packit |
23ab03 |
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
Packit |
23ab03 |
*
|
|
Packit |
23ab03 |
* Authors: the Amanda Development Team. Its members are listed in a
|
|
Packit |
23ab03 |
* file named AUTHORS, in the root directory of this distribution.
|
|
Packit |
23ab03 |
*/
|
|
Packit |
23ab03 |
/*
|
|
Packit |
23ab03 |
* $Id: uparse.y,v 1.2 2006/05/25 01:47:13 johnfranks Exp $
|
|
Packit |
23ab03 |
*
|
|
Packit |
23ab03 |
* parser for amrecover interactive language
|
|
Packit |
23ab03 |
*/
|
|
Packit |
23ab03 |
%{
|
|
Packit |
23ab03 |
#include "amanda.h"
|
|
Packit |
23ab03 |
#include "amrecover.h"
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
void yyerror(char *s);
|
|
Packit |
23ab03 |
extern int yylex(void);
|
|
Packit |
23ab03 |
extern char * yytext;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
%}
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
/* DECLARATIONS */
|
|
Packit |
23ab03 |
%union {
|
|
Packit |
23ab03 |
int intval;
|
|
Packit |
23ab03 |
double floatval;
|
|
Packit |
23ab03 |
char * strval;
|
|
Packit |
23ab03 |
int subtok;
|
|
Packit |
23ab03 |
}
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
/* literal keyword tokens */
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
%token LISTHOST LISTDISK SETHOST SETDISK SETDATE SETTAPE SETMODE
|
|
Packit |
23ab03 |
%token CD CDX QUIT DHIST LS ADD ADDX EXTRACT
|
|
Packit |
23ab03 |
%token LIST DELETE DELETEX PWD CLEAR HELP LCD LPWD MODE SMB TAR
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
/* typed tokens */
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
%token <strval> PATH
|
|
Packit |
23ab03 |
%token <strval> DATE
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
/* GRAMMAR */
|
|
Packit |
23ab03 |
%%
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
ucommand:
|
|
Packit |
23ab03 |
set_command
|
|
Packit |
23ab03 |
| display_command
|
|
Packit |
23ab03 |
| quit_command
|
|
Packit |
23ab03 |
| add_command
|
|
Packit |
23ab03 |
| addx_command
|
|
Packit |
23ab03 |
| delete_command
|
|
Packit |
23ab03 |
| deletex_command
|
|
Packit |
23ab03 |
| local_command
|
|
Packit |
23ab03 |
| help_command
|
|
Packit |
23ab03 |
| extract_command
|
|
Packit |
23ab03 |
| {
|
|
Packit |
23ab03 |
char * errstr = g_strjoin(NULL, "Invalid command: ", yytext, NULL);
|
|
Packit |
23ab03 |
yyerror(errstr);
|
|
Packit |
23ab03 |
amfree(errstr);
|
|
Packit |
23ab03 |
YYERROR;
|
|
Packit |
23ab03 |
} /* Quiets compiler warnings about unused label */
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
set_command:
|
|
Packit |
23ab03 |
LISTHOST { list_host(); }
|
|
Packit |
23ab03 |
| LISTDISK PATH { list_disk($2); amfree($2); }
|
|
Packit |
23ab03 |
| LISTDISK { list_disk(NULL); }
|
|
Packit |
23ab03 |
| SETDATE DATE { set_date($2); amfree($2); }
|
|
Packit |
23ab03 |
| SETHOST PATH { set_host($2); amfree($2); }
|
|
Packit |
23ab03 |
| SETDISK PATH PATH { set_disk($2, $3); amfree($2); amfree($3); }
|
|
Packit |
23ab03 |
| SETDISK PATH { set_disk($2, NULL); amfree($2); }
|
|
Packit |
23ab03 |
| SETTAPE PATH { set_tape($2); amfree($2); }
|
|
Packit |
23ab03 |
| SETTAPE { set_tape(""); }
|
|
Packit |
23ab03 |
| CD PATH { cd_glob($2); amfree($2); }
|
|
Packit |
23ab03 |
| CDX PATH { cd_regex($2); amfree($2); }
|
|
Packit |
23ab03 |
| SETMODE SMB {
|
|
Packit |
23ab03 |
#ifdef SAMBA_CLIENT
|
|
Packit |
23ab03 |
set_mode(SAMBA_SMBCLIENT);
|
|
Packit |
23ab03 |
#endif /* SAMBA_CLIENT */
|
|
Packit |
23ab03 |
}
|
|
Packit |
23ab03 |
| SETMODE TAR {
|
|
Packit |
23ab03 |
#ifdef SAMBA_CLIENT
|
|
Packit |
23ab03 |
set_mode(SAMBA_TAR);
|
|
Packit |
23ab03 |
#endif /* SAMBA_CLIENT */
|
|
Packit |
23ab03 |
}
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
display_command:
|
|
Packit |
23ab03 |
DHIST { list_disk_history(); }
|
|
Packit |
23ab03 |
| LS { list_directory(); }
|
|
Packit |
23ab03 |
| LIST PATH { display_extract_list($2); amfree($2); }
|
|
Packit |
23ab03 |
| LIST { display_extract_list(NULL); }
|
|
Packit |
23ab03 |
| PWD { show_directory(); }
|
|
Packit |
23ab03 |
| CLEAR { clear_extract_list(); }
|
|
Packit |
23ab03 |
| MODE { show_mode (); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
quit_command:
|
|
Packit |
23ab03 |
QUIT { quit(); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
add_command:
|
|
Packit |
23ab03 |
ADD add_path
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
add_path:
|
|
Packit |
23ab03 |
add_path PATH { add_glob($2); amfree($2); }
|
|
Packit |
23ab03 |
| PATH { add_glob($1); amfree($1); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
addx_command:
|
|
Packit |
23ab03 |
ADDX addx_path
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
addx_path:
|
|
Packit |
23ab03 |
addx_path PATH { add_regex($2); amfree($2); }
|
|
Packit |
23ab03 |
| PATH { add_regex($1); amfree($1); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
delete_command:
|
|
Packit |
23ab03 |
DELETE delete_path
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
delete_path:
|
|
Packit |
23ab03 |
delete_path PATH { delete_glob($2); amfree($2); }
|
|
Packit |
23ab03 |
| PATH { delete_glob($1); amfree($1); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
deletex_command:
|
|
Packit |
23ab03 |
DELETEX deletex_path
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
deletex_path:
|
|
Packit |
23ab03 |
deletex_path PATH { delete_regex($2); amfree($2); }
|
|
Packit |
23ab03 |
| PATH { delete_regex($1); amfree($1); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
local_command:
|
|
Packit |
23ab03 |
LPWD { char buf[STR_SIZE]; puts(getcwd(buf, sizeof(buf))); }
|
|
Packit |
23ab03 |
| LCD PATH {
|
|
Packit |
23ab03 |
local_cd($2);
|
|
Packit |
23ab03 |
amfree($2);
|
|
Packit |
23ab03 |
}
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
help_command:
|
|
Packit |
23ab03 |
HELP { help_list(); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
extract_command:
|
|
Packit |
23ab03 |
EXTRACT { extract_files(); }
|
|
Packit |
23ab03 |
;
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
/* ADDITIONAL C CODE */
|
|
Packit |
23ab03 |
%%
|
|
Packit |
23ab03 |
|
|
Packit |
23ab03 |
void
|
|
Packit |
23ab03 |
yyerror(
|
|
Packit |
23ab03 |
char * s)
|
|
Packit |
23ab03 |
{
|
|
Packit |
23ab03 |
g_printf("%s\n", s);
|
|
Packit |
23ab03 |
}
|