Hello, On Aug 6, 2014 3:43 PM, "Christian Boltz" <[email protected]> wrote: > > Hello, > > Am Mittwoch, 6. August 2014 schrieb Kshitij Gupta: > > On Wed, Aug 6, 2014 at 4:45 AM, Christian Boltz wrote: > > > this patch sets the currently selected path as (editable) default > > > when using "(N)ew" in aa-logprof or aa-genprof. > > > > > > Credits go to > > > http://stackoverflow.com/questions/2533120/show-default-value-for-ed > > > iting-on-python-input-possible ;-) > > Wow you found it! I recall struggling with curses (a module) for the > > same. Didn't know the solution was so simple. :-) > > Once you know "readline" is the keyword, searching is quite easy ;-) > > > > Also, some hate goes to the python devs because they changed the > > > meaning of input() between py2 and py3 in a terrible way. (Yes, > > > what py2 input() did was crazy, but it's even more crazy to change > > > its behaviour.) > > A consistent way for input/output is using sys.stdin/sys.stdout but as > > docs state: > > "Settings made using this module affect the behaviour of both the > > interpreter’s interactive prompt and the prompts offered by the > > built-in raw_input() and input() function." > > > > I guess we have to live with the "sys.version_info[0] >= 3" part for > > this. > > Well, we'll survive it ;-) > > > > - sys.stdout.write('\n' + text) > > > - string = sys.stdin.readline() > > > + readline.set_startup_hook(lambda: > > > readline.insert_text(default)) + try: > > > + if sys.version_info[0] >= 3: > > > + string = input(text) > > > > You gobbled a: '\n' before text > > Does it look better without the newline? ;-) > > No, it doesn't. Good catch! > > Slightly updated patch ('\n' added): > > === modified file 'utils/apparmor/ui.py' > --- utils/apparmor/ui.py 2014-02-24 19:56:28 +0000 > +++ utils/apparmor/ui.py 2014-08-06 10:02:59 +0000 > @@ -13,6 +13,7 @@ > # ---------------------------------------------------------------------- > import sys > import re > +import readline > from apparmor.yasti import yastLog, SendDataToYast, GetDataFromYast > > from apparmor.common import readkey, AppArmorException, DebugLogger > @@ -170,8 +171,16 @@ > debug_logger.debug('UI_GetString: %s: %s %s' % (UI_mode, text, default)) > string = default > if UI_mode == 'text': > - sys.stdout.write('\n' + text) > - string = sys.stdin.readline() > + readline.set_startup_hook(lambda: readline.insert_text(default)) > + try: > + if sys.version_info[0] >= 3: > + string = input('\n' + text) > + else: > + string = raw_input('\n' + text) > + except EOFError: > + string = '' > + finally: > + readline.set_startup_hook() > else: > SendDataToYast({'type': 'dialog-getstring', > 'label': text, > > > > Tested the readline part in py2 and py3, no reason rest of it > > shouldn't work for py2(unfortunately I dont have the libapparmor for > > py2 to test) if it did for py3. > > I'll build a new py2 libapparmor package when 2.9 beta2 is out. It's > just a build switch, but building for both py2 and py3 would make the > package more interesting[tm]. > Thanks. I look forward to that. :-)
> > Would it be worth the effort to wrap it in a function and move it to > > common.py? Maybe other tools could use it at some point. > > I'm looking forward for a saner_than_python_input() function ;-) > > Seriously: If we need it again somewhere, we really should split it > out (including the try/except stuff), but for now I'd keep it inside > UI_GetString(). > > Fair enough. Thanks fixing this. :-) Acked-by: Kshitij Gupta <[email protected]>. Regards, Kshitij Gupta > Regards, > > Christian Boltz > -- > Nur so aus Interesse: Bist Du in die Gesellschaft "Rettet das > Semikolon!" eingetreten? ;-) > [Jan Trippler in suse-linux über ein Script von David Haller] > > > -- > AppArmor mailing list > [email protected] > Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
-- AppArmor mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
