[DRBD-cvs] svn commit by lars - r2307 - trunk/user - * renamed
yyparse to my_parse * piped drbdadm_parser.c
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Fri Jul 28 15:33:14 CEST 2006
Author: lars
Date: 2006-07-28 15:33:13 +0200 (Fri, 28 Jul 2006)
New Revision: 2307
Modified:
trunk/user/drbdadm_main.c
trunk/user/drbdadm_parser.c
Log:
* renamed yyparse to my_parse
* piped drbdadm_parser.c through Lindent
(only whitespace changes)
Modified: trunk/user/drbdadm_main.c
===================================================================
--- trunk/user/drbdadm_main.c 2006-07-28 11:45:47 UTC (rev 2306)
+++ trunk/user/drbdadm_main.c 2006-07-28 13:33:13 UTC (rev 2307)
@@ -78,7 +78,7 @@
struct deferred_cmd* next;
};
-extern int yyparse();
+extern int my_parse();
extern int yydebug;
extern FILE* yyin;
@@ -1641,7 +1641,7 @@
};
//yydebug = 1;
- yyparse();
+ my_parse();
if(!config_valid) exit(E_config_invalid);
Modified: trunk/user/drbdadm_parser.c
===================================================================
--- trunk/user/drbdadm_parser.c 2006-07-28 11:45:47 UTC (rev 2306)
+++ trunk/user/drbdadm_parser.c 2006-07-28 13:33:13 UTC (rev 2307)
@@ -51,161 +51,155 @@
_l; \
})
-static int c_section_start;
+static int c_section_start;
-void
-m_strtoll_range(const char *s, char def_unit,
- const char *name,
- unsigned long long min, unsigned long long max)
+void m_strtoll_range(const char *s, char def_unit,
+ const char *name,
+ unsigned long long min, unsigned long long max)
{
- unsigned long long r = m_strtoll(s, def_unit);
- char unit[] = { def_unit > '1' ? def_unit : 0, 0 };
- if (min > r || r > max)
- {
- fprintf(stderr,
- "%s:%d: %s %s => %llu%s out of range [%llu..%llu]%s.\n",
- config_file, fline, name, s, r, unit, min, max, unit);
- exit(E_config_invalid);
- }
- if (DEBUG_RANGE_CHECK)
- {
- fprintf(stderr,
- "%s:%d: %s %s => %llu%s in range [%llu..%llu]%s.\n",
- config_file, fline, name, s, r, unit, min, max, unit);
- }
+ unsigned long long r = m_strtoll(s, def_unit);
+ char unit[] = { def_unit > '1' ? def_unit : 0, 0 };
+ if (min > r || r > max) {
+ fprintf(stderr,
+ "%s:%d: %s %s => %llu%s out of range [%llu..%llu]%s.\n",
+ config_file, fline, name, s, r, unit, min, max, unit);
+ exit(E_config_invalid);
+ }
+ if (DEBUG_RANGE_CHECK) {
+ fprintf(stderr,
+ "%s:%d: %s %s => %llu%s in range [%llu..%llu]%s.\n",
+ config_file, fline, name, s, r, unit, min, max, unit);
+ }
}
-
-void
-range_check(const enum range_checks what, const char *name, const char *value)
+void range_check(const enum range_checks what, const char *name,
+ const char *value)
{
- switch (what)
- {
- case R_NO_CHECK:
- break;
- default:
- fprintf(stderr, "%s:%d: unknown range for %s => %s\n",
- config_file, fline, name, value);
- break;
- case R_MINOR_COUNT:
- m_strtoll_range(value, 1, name,
- DRBD_MINOR_COUNT_MIN, DRBD_MINOR_COUNT_MAX);
- break;
- case R_DIALOG_REFRESH:
- m_strtoll_range(value, 1, name,
- DRBD_DIALOG_REFRESH_MIN, DRBD_DIALOG_REFRESH_MAX);
- break;
- case R_DISK_SIZE:
- m_strtoll_range(value, 'K', name,
- DRBD_DISK_SIZE_SECT_MIN >> 1,
- DRBD_DISK_SIZE_SECT_MAX >> 1);
- break;
- case R_TIMEOUT:
- m_strtoll_range(value, 1, name, DRBD_TIMEOUT_MIN, DRBD_TIMEOUT_MAX);
- break;
- case R_CONNECT_INT:
- m_strtoll_range(value, 1, name, DRBD_CONNECT_INT_MIN,
- DRBD_CONNECT_INT_MAX);
- break;
- case R_PING_INT:
- m_strtoll_range(value, 1, name, DRBD_PING_INT_MIN, DRBD_PING_INT_MAX);
- break;
- case R_MAX_BUFFERS:
- m_strtoll_range(value, 1, name, DRBD_MAX_BUFFERS_MIN,
- DRBD_MAX_BUFFERS_MAX);
- break;
- case R_MAX_EPOCH_SIZE:
- m_strtoll_range(value, 1, name, DRBD_MAX_EPOCH_SIZE_MIN,
- DRBD_MAX_EPOCH_SIZE_MAX);
- break;
- case R_SNDBUF_SIZE:
- m_strtoll_range(value, 1, name, DRBD_SNDBUF_SIZE_MIN,
- DRBD_SNDBUF_SIZE_MAX);
- break;
- case R_KO_COUNT:
- m_strtoll_range(value, 1, name, DRBD_KO_COUNT_MIN, DRBD_KO_COUNT_MAX);
- break;
- case R_RATE:
- m_strtoll_range(value, 'K', name, DRBD_RATE_MIN, DRBD_RATE_MAX);
- break;
- case R_AL_EXTENTS:
- m_strtoll_range(value, 1, name, DRBD_AL_EXTENTS_MIN,
- DRBD_AL_EXTENTS_MAX);
- break;
- case R_PORT:
- m_strtoll_range(value, 1, name, DRBD_PORT_MIN, DRBD_PORT_MAX);
- break;
- /* FIXME not yet implemented!
- case R_META_IDX:
- m_strtoll_range(value, 1, name, DRBD_META_IDX_MIN, DRBD_META_IDX_MAX);
- break;
- */
- case R_WFC_TIMEOUT:
- m_strtoll_range(value, 1, name, DRBD_WFC_TIMEOUT_MIN,
- DRBD_WFC_TIMEOUT_MAX);
- break;
- case R_DEGR_WFC_TIMEOUT:
- m_strtoll_range(value, 1, name, DRBD_DEGR_WFC_TIMEOUT_MIN,
- DRBD_DEGR_WFC_TIMEOUT_MAX);
- break;
- }
+ switch (what) {
+ case R_NO_CHECK:
+ break;
+ default:
+ fprintf(stderr, "%s:%d: unknown range for %s => %s\n",
+ config_file, fline, name, value);
+ break;
+ case R_MINOR_COUNT:
+ m_strtoll_range(value, 1, name,
+ DRBD_MINOR_COUNT_MIN, DRBD_MINOR_COUNT_MAX);
+ break;
+ case R_DIALOG_REFRESH:
+ m_strtoll_range(value, 1, name,
+ DRBD_DIALOG_REFRESH_MIN,
+ DRBD_DIALOG_REFRESH_MAX);
+ break;
+ case R_DISK_SIZE:
+ m_strtoll_range(value, 'K', name,
+ DRBD_DISK_SIZE_SECT_MIN >> 1,
+ DRBD_DISK_SIZE_SECT_MAX >> 1);
+ break;
+ case R_TIMEOUT:
+ m_strtoll_range(value, 1, name, DRBD_TIMEOUT_MIN,
+ DRBD_TIMEOUT_MAX);
+ break;
+ case R_CONNECT_INT:
+ m_strtoll_range(value, 1, name, DRBD_CONNECT_INT_MIN,
+ DRBD_CONNECT_INT_MAX);
+ break;
+ case R_PING_INT:
+ m_strtoll_range(value, 1, name, DRBD_PING_INT_MIN,
+ DRBD_PING_INT_MAX);
+ break;
+ case R_MAX_BUFFERS:
+ m_strtoll_range(value, 1, name, DRBD_MAX_BUFFERS_MIN,
+ DRBD_MAX_BUFFERS_MAX);
+ break;
+ case R_MAX_EPOCH_SIZE:
+ m_strtoll_range(value, 1, name, DRBD_MAX_EPOCH_SIZE_MIN,
+ DRBD_MAX_EPOCH_SIZE_MAX);
+ break;
+ case R_SNDBUF_SIZE:
+ m_strtoll_range(value, 1, name, DRBD_SNDBUF_SIZE_MIN,
+ DRBD_SNDBUF_SIZE_MAX);
+ break;
+ case R_KO_COUNT:
+ m_strtoll_range(value, 1, name, DRBD_KO_COUNT_MIN,
+ DRBD_KO_COUNT_MAX);
+ break;
+ case R_RATE:
+ m_strtoll_range(value, 'K', name, DRBD_RATE_MIN, DRBD_RATE_MAX);
+ break;
+ case R_AL_EXTENTS:
+ m_strtoll_range(value, 1, name, DRBD_AL_EXTENTS_MIN,
+ DRBD_AL_EXTENTS_MAX);
+ break;
+ case R_PORT:
+ m_strtoll_range(value, 1, name, DRBD_PORT_MIN, DRBD_PORT_MAX);
+ break;
+ /* FIXME not yet implemented!
+ case R_META_IDX:
+ m_strtoll_range(value, 1, name, DRBD_META_IDX_MIN, DRBD_META_IDX_MAX);
+ break;
+ */
+ case R_WFC_TIMEOUT:
+ m_strtoll_range(value, 1, name, DRBD_WFC_TIMEOUT_MIN,
+ DRBD_WFC_TIMEOUT_MAX);
+ break;
+ case R_DEGR_WFC_TIMEOUT:
+ m_strtoll_range(value, 1, name, DRBD_DEGR_WFC_TIMEOUT_MIN,
+ DRBD_DEGR_WFC_TIMEOUT_MAX);
+ break;
+ }
}
-static struct d_option* new_opt(char* name,char* value)
+static struct d_option *new_opt(char *name, char *value)
{
- struct d_option* cn = malloc(sizeof(struct d_option));
+ struct d_option *cn = malloc(sizeof(struct d_option));
/* fprintf(stderr,"%s:%d: %s = %s\n",config_file,line,name,value); */
- cn->name=name;
- cn->value=value;
- cn->mentioned=0;
- cn->is_default=0;
+ cn->name = name;
+ cn->value = value;
+ cn->mentioned = 0;
+ cn->is_default = 0;
return cn;
}
-
-static void derror(struct d_host_info *host,
- struct d_resource* res,
- char* text)
+static void derror(struct d_host_info *host, struct d_resource *res, char *text)
{
- config_valid=0;
+ config_valid = 0;
fprintf(stderr, "%s:%d: in resource %s, on %s { ... }:"
" '%s' keyword missing.\n",
- config_file,c_section_start,res->name,host->name,text);
+ config_file, c_section_start, res->name, host->name, text);
}
void check_meta_disk(struct d_host_info *host)
{
- if (strcmp(host->meta_disk, "internal") != 0) {
- /* external */
- if (host->meta_index == NULL) {
- fprintf(stderr, "%s:%d: expected 'meta-disk = %s [index]'.\n",
- config_file, fline, host->meta_disk);
- }
- /* index either some number, or "flexible" */
- check_uniq("meta-disk", "%s:%s[%s]", host->name,
- host->meta_disk, host->meta_index);
- } else if (host->meta_index) {
- /* internal */
- if (strcmp(host->meta_index,"flexible") != 0) {
- /* internal, not flexible, but index given: no sir! */
- fprintf(stderr,
- "%s:%d: no index allowed with 'meta-disk = internal'.\n",
- config_file, fline);
- } /* else internal, flexible: fine */
- } else {
- /* internal, not flexible */
- host->meta_index = strdup("internal");
- }
+ if (strcmp(host->meta_disk, "internal") != 0) {
+ /* external */
+ if (host->meta_index == NULL) {
+ fprintf(stderr,
+ "%s:%d: expected 'meta-disk = %s [index]'.\n",
+ config_file, fline, host->meta_disk);
+ }
+ /* index either some number, or "flexible" */
+ check_uniq("meta-disk", "%s:%s[%s]", host->name,
+ host->meta_disk, host->meta_index);
+ } else if (host->meta_index) {
+ /* internal */
+ if (strcmp(host->meta_index, "flexible") != 0) {
+ /* internal, not flexible, but index given: no sir! */
+ fprintf(stderr,
+ "%s:%d: no index allowed with 'meta-disk = internal'.\n",
+ config_file, fline);
+ } /* else internal, flexible: fine */
+ } else {
+ /* internal, not flexible */
+ host->meta_index = strdup("internal");
+ }
}
-///////////////////////////
-
-
#define EXP(TOKEN1) \
({ \
- int token; \
- token = yylex(); \
+ int token; \
+ token = yylex(); \
if(token != TOKEN1) \
pe_expected_got( #TOKEN1, token); \
token; \
@@ -213,17 +207,17 @@
#define EXP2(TOKEN1,TOKEN2) \
({ \
- int token; \
- token = yylex(); \
- if(token != TOKEN1 && token != TOKEN2) \
+ int token; \
+ token = yylex(); \
+ if(token != TOKEN1 && token != TOKEN2) \
pe_expected_got( #TOKEN1 "|" # TOKEN2, token); \
token; \
})
static void pe_expected(const char *exp)
{
- fprintf(stderr,"%s:%u: Parse error: '%s' expected,\n\t"
- "but got '%s'\n",config_file,line,exp,yytext);
+ fprintf(stderr, "%s:%u: Parse error: '%s' expected,\n\t"
+ "but got '%s'\n", config_file, line, exp, yytext);
exit(E_config_invalid);
}
@@ -233,42 +227,51 @@
if (exp[0] == '\'' && exp[1] && exp[2] == '\'' && exp[3] == 0) {
tmp[0] = exp[1];
}
- fprintf(stderr,"%s:%u: Parse error: '%s' expected,\n\t"
- "but got '%s' (TK %d)\n",config_file,line,exp,yytext,got);
+ fprintf(stderr, "%s:%u: Parse error: '%s' expected,\n\t"
+ "but got '%s' (TK %d)\n", config_file, line, exp, yytext, got);
exit(E_config_invalid);
}
-static void parse_global(void) {
+static void parse_global(void)
+{
fline = line;
- check_uniq("global section","global");
+ check_uniq("global section", "global");
if (config) {
fprintf(stderr,
"%s:%u: You should put the global {} section\n\t"
"in front of any resource {} section\n",
- config_file,line);
+ config_file, line);
}
EXP('{');
- while(1) {
- switch(yylex()) {
+ while (1) {
+ switch (yylex()) {
case TK_DISABLE_IP_VERIFICATION:
- global_options.disable_ip_verification=1;
+ global_options.disable_ip_verification = 1;
break;
case TK_MINOR_COUNT:
EXP(TK_INTEGER);
- range_check(R_MINOR_COUNT,"minor-count",yylval.txt);
- global_options.minor_count=atoi(yylval.txt);
+ range_check(R_MINOR_COUNT, "minor-count", yylval.txt);
+ global_options.minor_count = atoi(yylval.txt);
break;
case TK_DIALOG_REFRESH:
EXP(TK_INTEGER);
- range_check(R_DIALOG_REFRESH,"dialog-refresh",yylval.txt);
- global_options.dialog_refresh=atoi(yylval.txt);
+ range_check(R_DIALOG_REFRESH, "dialog-refresh",
+ yylval.txt);
+ global_options.dialog_refresh = atoi(yylval.txt);
break;
case TK_USAGE_COUNT:
- switch(yylex()) {
- case TK_YES: global_options.usage_count=UC_YES; break;
- case TK_NO: global_options.usage_count=UC_NO; break;
- case TK_ASK: global_options.usage_count=UC_ASK; break;
- default: pe_expected("yes | no | ask");
+ switch (yylex()) {
+ case TK_YES:
+ global_options.usage_count = UC_YES;
+ break;
+ case TK_NO:
+ global_options.usage_count = UC_NO;
+ break;
+ case TK_ASK:
+ global_options.usage_count = UC_ASK;
+ break;
+ default:
+ pe_expected("yes | no | ask");
}
break;
case '}':
@@ -281,35 +284,35 @@
}
}
-static struct d_option* parse_options(int token_switch,int token_option)
+static struct d_option *parse_options(int token_switch, int token_option)
{
char *opt_name;
int token;
enum range_checks rc;
- struct d_option* options = NULL, *ro = NULL;
+ struct d_option *options = NULL, *ro = NULL;
fline = line;
EXP('{');
- while(1) {
+ while (1) {
token = yylex();
- if( token == token_switch) {
- options = APPEND(options,new_opt(yylval.txt,NULL));
- } else if ( token == token_option) {
+ if (token == token_switch) {
+ options = APPEND(options, new_opt(yylval.txt, NULL));
+ } else if (token == token_option) {
opt_name = yylval.txt;
rc = yylval.rc;
- EXP2(TK_STRING,TK_INTEGER);
- range_check(rc,opt_name,yylval.txt);
- ro = new_opt(opt_name,yylval.txt);
- options = APPEND(options,ro);
- } else if ( token == '}' ) {
+ EXP2(TK_STRING, TK_INTEGER);
+ range_check(rc, opt_name, yylval.txt);
+ ro = new_opt(opt_name, yylval.txt);
+ options = APPEND(options, ro);
+ } else if (token == '}') {
return options;
} else {
pe_expected("an option keyword");
}
- switch(yylex()) {
+ switch (yylex()) {
case TK__IS_DEFAULT:
- ro->is_default=1;
+ ro->is_default = 1;
EXP(';');
break;
case ';':
@@ -320,20 +323,20 @@
}
}
-static void parse_host_body(struct d_host_info *host,
- struct d_resource* res,
- int require_all)
+static void parse_host_body(struct d_host_info *host,
+ struct d_resource *res, int require_all)
{
EXP('{');
- while(1) {
- switch(yylex()) {
+ while (1) {
+ switch (yylex()) {
case TK_DISK:
- check_uniq("disk statement","%s:%s:disk",res->name,host->name);
+ check_uniq("disk statement", "%s:%s:disk", res->name,
+ host->name);
EXP(TK_STRING);
host->disk = yylval.txt;
- check_uniq("disk", "%s:%s:%s","disk",
- host->name,yylval.txt);
- switch(yylex()) {
+ check_uniq("disk", "%s:%s:%s", "disk",
+ host->name, yylval.txt);
+ switch (yylex()) {
case TK__MAJOR:
EXP(TK_INTEGER);
host->disk_major = atoi(yylval.txt);
@@ -348,34 +351,37 @@
}
break;
case TK_DEVICE:
- check_uniq("device statement","%s:%s:device",res->name,host->name);
+ check_uniq("device statement", "%s:%s:device",
+ res->name, host->name);
EXP(TK_STRING);
host->device = yylval.txt;
- check_uniq("device", "%s:%s:%s","device",
- host->name,yylval.txt);
+ check_uniq("device", "%s:%s:%s", "device",
+ host->name, yylval.txt);
EXP(';');
break;
case TK_ADDRESS:
- check_uniq("address statement","%s:%s:address",res->name,host->name);
+ check_uniq("address statement", "%s:%s:address",
+ res->name, host->name);
EXP(TK_IPADDR);
host->address = yylval.txt;
EXP(':');
EXP(TK_INTEGER);
host->port = yylval.txt;
range_check(R_PORT, "port", yylval.txt);
- check_uniq("IP","%s:%s", host->address,host->port);
+ check_uniq("IP", "%s:%s", host->address, host->port);
EXP(';');
break;
case TK_META_DISK:
- check_uniq("meta-disk statement","%s:%s:meta-disk",res->name,host->name);
+ check_uniq("meta-disk statement", "%s:%s:meta-disk",
+ res->name, host->name);
EXP(TK_STRING);
host->meta_disk = yylval.txt;
- if(strcmp("internal",yylval.txt)) {
+ if (strcmp("internal", yylval.txt)) {
EXP('[');
EXP(TK_INTEGER);
host->meta_index = yylval.txt;
EXP(']');
- switch(yylex()) {
+ switch (yylex()) {
case TK__MAJOR:
EXP(TK_INTEGER);
host->meta_major = atoi(yylval.txt);
@@ -394,7 +400,8 @@
check_meta_disk(host);
break;
case TK_FLEX_META_DISK:
- check_uniq("meta-disk statement","%s:%s:meta-disk",res->name,host->name);
+ check_uniq("meta-disk statement", "%s:%s:meta-disk",
+ res->name, host->name);
EXP(TK_STRING);
host->meta_disk = yylval.txt;
host->meta_index = strdup("flexible");
@@ -408,12 +415,17 @@
"| flex-meta-disk");
}
}
- break_loop:
- if (!require_all) return;
- if (!host->device) derror(host,res,"device");
- if (!host->disk) derror(host,res,"disk");
- if (!host->address) derror(host,res,"address");
- if (!host->meta_disk) derror(host,res,"meta-disk");
+ break_loop:
+ if (!require_all)
+ return;
+ if (!host->device)
+ derror(host, res, "device");
+ if (!host->disk)
+ derror(host, res, "disk");
+ if (!host->address)
+ derror(host, res, "address");
+ if (!host->meta_disk)
+ derror(host, res, "meta-disk");
}
void parse_skip()
@@ -422,32 +434,34 @@
fline = line;
switch (yylex()) {
- case TK_STRING:
- EXP('{');
- break;
- case '{':
- break;
- default:
- pe_expected("[ some_text ] {");
+ case TK_STRING:
+ EXP('{');
+ break;
+ case '{':
+ break;
+ default:
+ pe_expected("[ some_text ] {");
}
level = 1;
- while(level) {
- switch(yylex()) {
+ while (level) {
+ switch (yylex()) {
case '{':
- level++; /* if you really want to,
- you can wrap this with a GB size config file :) */
+ /* if you really want to,
+ you can wrap this with a GB size config file :) */
+ level++;
break;
case '}':
level--;
break;
case 0:
- fprintf(stderr,"%s:%u: reached eof "
+ fprintf(stderr, "%s:%u: reached eof "
"while parsing this skip block.\n",
config_file, fline);
exit(E_config_invalid);
}
- } while(level);
+ }
+ while (level) ;
}
@@ -560,27 +574,30 @@
}
}
-void yyparse(void)
+void my_parse(void)
{
common = NULL;
config = NULL;
- while(1) {
- switch(yylex()) {
+ while (1) {
+ switch (yylex()) {
case TK_GLOBAL:
parse_global();
break;
- case TK_COMMON:
+ case TK_COMMON:
EXP('{');
- common = parse_resource("common");
+ common = parse_resource("common");
break;
- case TK_RESOURCE:
+ case TK_RESOURCE:
EXP(TK_STRING);
EXP('{');
- config = APPEND( config , parse_resource(yylval.txt) );
+ config = APPEND(config, parse_resource(yylval.txt));
break;
- case TK_SKIP: parse_skip(); break;
- case 0: return;
+ case TK_SKIP:
+ parse_skip();
+ break;
+ case 0:
+ return;
default:
pe_expected("global | common | resource | skip");
}
More information about the drbd-cvs
mailing list