#!/opt/thinlinc/libexec/python3
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2014 Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import sys
import locale
import os
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
from thinlinc import prefix
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
from thinlinc . optionparse import OptionParser , SUPPRESS_HELP
from thinlinc . optcomplete import CompletionResult
from thinlinc . version import TL_VERSION
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
def iI111iiIi11i ( * args ) :
 OoOoo0o = prefix . get_tl_user_dir ( os . getenv ( "USER" ) )
 if 11 - 11: i1I1 - O000o / O0OO0OooooOo * ii % Ii * i1
 if not os . path . isdir ( OoOoo0o ) :
  return CompletionResult ( completions = [ ] , nospace = False )
  if 9 - 9: i1iiIII111
 i1Ii1i = [ dir for dir in os . listdir ( OoOoo0o ) if os . path . isdir ( os . path . join ( OoOoo0o , dir ) ) and ".ended" not in dir ]
 if 93 - 93: IIiIIiIi11I1 % IIiIIiIi11I1 / I1I - Oo . Ooo0Ooo
 if 46 - 46: iI1iII1I1I1i - Ii * Oo * Ii
 if 52 - 52: Oo + I1I / O000o / OooOoo - I1Ii1I1 - ooOOO
 return CompletionResult ( completions = i1Ii1i , nospace = False )
 if 60 - 60: iI1iII1I1I1i . O000o
def i1iiiiIIIiIi ( ) :
 II = OptionParser (
 version = TL_VERSION ,
 usage = "%prog [options] <command> [args]" ,
 description = "Restore environment from disk and execute command with arguments."
 )
 if 34 - 34: Ooo0Ooo + O000o * IIiIIiIi11I1 * OooOoo
 II . add_option ( "-d" , "--skip-display" ,
 action = "store_true" ,
 dest = "skip_display" ,
 default = False ,
 help = "do not restore DISPLAY" )
 if 25 - 25: Ii / O000o % Ii
 II . add_option ( "-n" , "--session-number" ,
 metavar = "nr" ,
 dest = "sessnum" ,
 default = "last" ,
 help = "use specified session number. The default is \"last\"" ,
 completer = iI111iiIi11i )
 if 96 - 96: Ii . IIiIIiIi11I1 % i1I1
 if 68 - 68: i1I1 . i1i1i1111I
 if 24 - 24: ii
 if 9 - 9: ooo000 / O0OO0OooooOo . O0OO0OooooOo / Ii % i1i1i1111I % Ooo0Ooo
 II . add_option ( "-s" , "--save-env" ,
 action = "store_true" ,
 dest = "savemode" ,
 default = False ,
 help = SUPPRESS_HELP )
 if 85 - 85: i1I1 % ooOOO + i1iiIII111 / ooOOO / ooo000
 II . disable_interspersed_args ( )
 if 17 - 17: oOo0O00 * i1iiIII111 - Iii1i . ii - Oo % i1i1i1111I
 II . set_argument_completer ( lambda * IIii : CompletionResult ( completions = [ ] , nospace = False ) )
 if 48 - 48: iI1iII1I1I1i / oOo0O00 % ii
 return II
 if 84 - 84: O000o . Oo + ooOOO / Oo . O000o
 if 20 - 20: ii + i1iiIII111 / I1I
def Ooo0OO ( ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 6 - 6: i1iiIII111
 if 99 - 99: ooOOO * I1Ii1I1
 if 95 - 95: Ooo0Ooo % Iii1i % i1i1i1111I . OooOoo
 II = i1iiiiIIIiIi ( )
 if 70 - 70: IiIIii11Ii
 ( IiII , IIii ) = II . parse_args ( )
 if 6 - 6: i1 / Oo * IiIIii11Ii
 if IiII . savemode :
  if IIii :
   II . error ( "Can not save when additional arguments are provided" )
  if IiII . skip_display :
   II . error ( "Can not save without a display number" )
  oooOo = prefix . get_tl_session_dir ( )
  I11iIi1i = "w"
 else :
  if not IIii :
   II . error ( "No command provided" )
   if 49 - 49: IIiIIiIi11I1
  iIIiii1iI = os . getenv ( "USER" )
  if iIIiii1iI is None :
   sys . exit ( "Unable to retrieve USER from environment" )
  oooOo = prefix . get_other_tl_session_dir ( iIIiii1iI , IiII . sessnum )
  I11iIi1i = "r"
  if 43 - 43: ooOOO . i1I1 + ooo000
 if oooOo is None :
  sys . exit ( "Unable to retrieve session directory" )
 oOo = os . path . join ( oooOo , "xstartup.env" )
 try :
  o0O = open ( oOo , I11iIi1i )
 except OSError :
  sys . exit ( "Unable to open %s" % oOo )
  if 45 - 45: Ooo0Ooo + i1I1 % ooo000 . I1I % Ii + Ooo0Ooo
 with o0O :
  if 1 - 1: I1I % Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
  if IiII . savemode :
   for OOOO0O0ooO0O , I1iIIiI1 in list ( os . environ . items ( ) ) :
    o0O . write ( "%s=%s\x00" % ( OOOO0O0ooO0O , I1iIIiI1 ) )
   o0O . close ( )
  else :
   OO0o0O0o0 = o0O . read ( )
   for I111Iii1Ii in OO0o0O0o0 . split ( "\x00" ) :
    if not "=" in I111Iii1Ii :
     continue
    OOOO0O0ooO0O , I1iIIiI1 = I111Iii1Ii . split ( "=" , 1 )
    if OOOO0O0ooO0O == "DISPLAY" and IiII . skip_display :
     continue
    os . environ [ OOOO0O0ooO0O ] = I1iIIiI1
   try :
    os . execvp ( IIii [ 0 ] , IIii )
   except OSError as iiIiII11i11II :
    sys . exit ( "%s: %s: %s" % ( sys . argv [ 0 ] , IIii [ 0 ] , iiIiII11i11II . args [ 1 ] ) )
    if 52 - 52: Iii1i / Oo
if __name__ == "__main__" :
 Ooo0OO ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
