@@ -33,9 +33,6 @@ get_main(int argc, char *argv[])
3333{
3434 int ret = 0 , k = 0 , ch ;
3535
36- /* Initialize parser */
37- parser = ucl_parser_new (UCLCMD_PARSER_FLAGS | UCL_PARSER_KEY_LOWERCASE );
38-
3936 /* options descriptor */
4037 static struct option longopts [] = {
4138 { "cjson" , no_argument , & output_type ,
@@ -48,6 +45,7 @@ get_main(int argc, char *argv[])
4845 UCL_EMIT_JSON },
4946 { "keys" , no_argument , & show_keys , 1 },
5047 { "input" , no_argument , NULL , 'i' },
48+ { "foldcase" , no_argument , NULL , 'I' },
5149 { "msgpack" , no_argument , & output_type ,
5250 UCL_EMIT_MSGPACK },
5351 { "noop" , no_argument , & noop , 1 },
@@ -61,7 +59,7 @@ get_main(int argc, char *argv[])
6159 { NULL , 0 , NULL , 0 }
6260 };
6361
64- while ((ch = getopt_long (argc , argv , "cdD:ef:i:jklmnNo :quy" , longopts , NULL )) != -1 ) {
62+ while ((ch = getopt_long (argc , argv , "cdD:ef:i:IjklmnNo :quy" , longopts , NULL )) != -1 ) {
6563 switch (ch ) {
6664 case 'c' :
6765 output_type = UCL_EMIT_JSON_COMPACT ;
@@ -82,17 +80,14 @@ get_main(int argc, char *argv[])
8280 break ;
8381 case 'f' :
8482 filename = optarg ;
85- if (strcmp (optarg , "-" ) == 0 ) {
86- /* Input from STDIN */
87- root_obj = parse_input (parser , stdin );
88- } else {
89- root_obj = parse_file (parser , filename );
90- }
9183 break ;
9284 case 'i' :
9385 fprintf (stderr , "Not implemented yet\n" );
9486 exit (1 );
9587 break ;
88+ case 'I' :
89+ pflags |= UCL_PARSER_KEY_LOWERCASE ;
90+ break ;
9691 case 'j' :
9792 output_type = UCL_EMIT_JSON ;
9893 break ;
@@ -140,8 +135,14 @@ get_main(int argc, char *argv[])
140135 usage ();
141136 }
142137
143- if (filename == NULL ) {
138+ /* Initialize parser */
139+ parser = ucl_parser_new (UCLCMD_PARSER_FLAGS | pflags );
140+
141+ if (filename == NULL || strcmp (filename , "-" ) == 0 ) {
142+ /* Input from STDIN */
144143 root_obj = parse_input (parser , stdin );
144+ } else {
145+ root_obj = parse_file (parser , filename );
145146 }
146147
147148 for (k = 0 ; k < argc ; k ++ ) {
0 commit comments