[apparmor] [patch] aa.py / ask_the_question - simplify duplicate option prevention
Kshitij Gupta
kgupta8592 at gmail.com
Mon Aug 25 19:46:16 UTC 2014
Hello,
On Monday, August 25, 2014 10:36:54 PM Christian Boltz wrote:
> Hello,
>
> Am Dienstag, 26. August 2014 schrieb Kshitij Gupta:
> > On Sunday, August 24, 2014 04:44:40 PM Christian Boltz wrote:
> > > this patch adds a add_to_options() helper function to aa.py which
> > > - adds newpath to options if it's not already there
> > > - returns the updated options and the index of newpath
> > >
> > > This removes duplicated code for CMD_GLOB and CMD_GLOBEXT in
> > > ask_the_question()
> > >
> > > It also adds duplicate prevention to CMD_NEW.
> > >
> > > +def add_to_options(options, newpath):
> > > + if newpath not in options:
> > > + options.append(newpath)
> > > + default_option = len(options)
> > > + else:
> > > + default_option = options.index(newpath) + 1
> >
> > A slower way would be only keep: default_option =
> > options.index(newpath) + 1 and do away with the else and
> > default_option = len(options) part.
> >
> > Though its pretty inefficient for half the cases but would it be more
> > readable (2 lines less to read ;-) )?
>
> Sounds like a good idea, and the performance doesn't really matter in
> this case (we are talking about maybe 20 lines that are executed before
> waiting for the next user input)
>
>
> Updated patch:
>
> === modified file 'utils/apparmor/aa.py'
> --- utils/apparmor/aa.py 2014-08-25 20:05:45 +0000
> +++ utils/apparmor/aa.py 2014-08-25 20:33:29 +0000
> @@ -1921,30 +1931,19 @@
> continue
>
> user_globs.append(ans)
> - options.append(ans)
> - default_option = len(options)
> + options, default_option =
> add_to_options(options, ans)
>
> elif ans == 'CMD_GLOB':
> newpath = options[selected].strip()
> if not re_match_include(newpath):
> newpath = glob_path(newpath)
> -
> - if newpath not in options:
> - options.append(newpath)
> - default_option = len(options)
> - else:
> - default_option =
> options.index(newpath) + 1 + options,
> default_option = add_to_options(options, newpath)
>
> elif ans == 'CMD_GLOBEXT':
> newpath = options[selected].strip()
> if not re_match_include(newpath):
> newpath = glob_path_withext(newpath)
> -
> - if newpath not in options:
> - options.append(newpath)
> - default_option = len(options)
> - else:
> - default_option =
> options.index(newpath) + 1 + options,
> default_option = add_to_options(options, newpath)
>
> elif re.search('\d', ans):
> default_option = ans
> @@ -2039,6 +2038,13 @@
> else:
> done = False
>
> +def add_to_options(options, newpath):
> + if newpath not in options:
> + options.append(newpath)
> +
> + default_option = options.index(newpath) + 1
> + return (options, default_option)
> +
> def glob_path(newpath):
> """Glob the given file path"""
> if newpath[-1] == '/':
>
>
>
Thanks for the updated patch. :-)
Acked-by: Kshitij Gupta <kgupta8592 at gmail.com>.
Regards,
Kshitij Gupta
>
> Regards,
>
> Christian Boltz
More information about the AppArmor
mailing list