Index: drbl_ui/README
===================================================================
--- drbl_ui/README	(revision 20)
+++ drbl_ui/README	(revision 20)
@@ -0,0 +1,18 @@
+說明:
+
+1. drbl_wizard.py
+可以正常執行的 ui  全部的 function 跟 設定 (除了語言檔以外) 全部寫在這個檔案中
+
+2. menu 目錄
+存放 drbl ui 的各個 function
+從 drbl_wizard.py中拆解出來的 function 目前尚未拆解完成
+
+3. config 目錄
+存放 drbl ui 的設定檔
+
+4. backup 目錄
+存放舊版的 drbl ui 或是一些程式備份的資料
+
+5. flow chart 目錄
+存放程式流程圖
+
Index: drbl_ui/backup/GPG-KEY-DRBL
===================================================================
--- drbl_ui/backup/GPG-KEY-DRBL	(revision 20)
+++ drbl_ui/backup/GPG-KEY-DRBL	(revision 20)
@@ -0,0 +1,25 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBETG4dYRBACuwb66BBd3STvK/7JxDkcp75VnsAgA6Yje1j2CCFIQCZrjyRO5
+n4rva9jEOw5qEAy+2npk7RsuKjaXTWU2l+27uIKF9m/A4NgUgFl8YzAKgHV0dNQX
+/o2AbUgyeIyZHTBeozCzWuP05ahv7EASva1011QZNLeeF72cuHWpEE0D1wCgtVVg
+kHCketrsTe8171qCrL+I6KUEAI+wTZus0W+aycUvoapseRO5+OvSKGyRJtEjgZwX
+THQueBZQDfazhWTI2KAxHVF31wpshjh6N1iOCFvS8XH6Lm2DDH6MzI11JrazEElc
+X4R/0FfBt/ml14rGcIxx5TRERVA6Krbvf1nAhRi1bnNOcnv8BgDrPaE3w+r7BaPt
+jGtZA/9Uf/4POfGjS5XvzNPQXt+qKii/3PF3F7/HnZxZ6CnF4d90KyUrd1qjjU7o
+IiP2SOxy9w7m2HmCdSet/ZmxKirDepYIXxJWMfbhBSrcmTSf4d/X8DSXNinYgJn6
+91QpoOcik8YA68mDdUXvqXH0LYqSQUVtlhpbTHtLBhg+A2SaMrQ/RFJCTCBQcm9q
+ZWN0IChEaXNrbGVzcyBSZW1vdGUgQm9vdCBpbiBMaW51eCkgPGRyYmxAbmNoYy5v
+cmcudHc+iFkEExECABkFAkTG4dYECwcDAgMVAgMDFgIBAh4BAheAAAoJEEAAlRHX
+6N86dogAnijZRwr8SbtmyAIjcFzkcTJb72DVAJ0QuTt+u8nJXjMMcDof6DFETvTH
+R7kBDQRExuHXEAQA2/Wsn+kZ8KN2HvlU1EHBcnZbmOtIIxjo7XcSeJzeDKZlhqFo
+q7+Cx5Y1duVD5seyQNU1iCwuz7ox7JL/0qis13wa5h+3DluXnj6jb/f7ec+wGRBe
+3PZLam57spCkaALmtX3HZvWFkmcbP8tiSgPNiiBToqwC0F4sevdg0e6x4ssAAwUE
+AKW+dFt0eRHzHjbNGHXgWJHlotfJQhjGqogso1w8cbpTr7/WfqDSm1M5K715b4TG
+LUAujP6f9PPiljTMhHTz++3pSNGvGcaQ6B4QfhK7fERXJLn/43vB5gqJtQpB0Ang
+pGG7kfZ2SZ2ZT6lnbo7CR8MMomz3i8/3RTmqB5ov8ObhiEYEGBECAAYFAkTG4dcA
+CgkQQACVEdfo3zoZMgCfSDywpr/ElmqskEmFNyoz2LZazfEAmQFTt6KfrIFPG4/c
+wAWnl0QzXWsZ
+=385O
+-----END PGP PUBLIC KEY BLOCK-----
Index: drbl_ui/backup/drbl_wizard_bak.py
===================================================================
--- drbl_ui/backup/drbl_wizard_bak.py	(revision 20)
+++ drbl_ui/backup/drbl_wizard_bak.py	(revision 20)
@@ -0,0 +1,2655 @@
+import  wx, sys, os, gettext, string, time
+import  wx.wizard as wiz
+from wx.lib.mixins.listctrl import CheckListCtrlMixin
+import  wx.lib.filebrowsebutton as filebrowse
+import	wx.lib.layoutf as layoutf
+
+cat = gettext.GNUTranslations(open('%s.mo' % os.getenv('LANG')))
+_ = cat.gettext
+
+global FinalArgs
+for i in range(0,37):
+    FinalArgs.insert(i,'')
+
+#----------------------------------------------------------------------
+ClonezillaStartSaveArgs = {
+1: ("-q", _('msg_ocs_param_q')),
+2: ("-c", _('msg_ocs_param_c')),
+3: ("-nogui", _('msg_ocs_param_nogui')),
+4: ("-a", _('msg_ocs_param_a')),
+5: ("-f", _('msg_ocs_param_f')),
+6: ("-s", _('msg_ocs_param_s')),
+7: ("-ntfs-ok", _('msg_ocs_param_notfs_ok')),
+}
+
+#----------------------------------------------------------------------
+ClonezillaStartRestoreArgs = {
+1: ("-g auto", _('msg_ocs_param_g_auto')),
+2: ("-x", _('msg_ocs_param_x')),
+3: ("-brdcst", _('msg_ocs_param_broadcast')),
+4: ("-v", _('msg_ocs_param_v')),
+5: ("-nogui", _('msg_ocs_param_nogui')),
+6: ("-c", _('msg_ocs_param_c')),
+7: ("-u", _('msg_ocs_param_u')),
+8: ("-t", _('msg_ocs_param_t')),
+9: ("-j0", _('msg_ocs_param_j0')),
+10: ("-ns", _('msg_ocs_param_ns')),
+11: ("-k", _('msg_ocs_param_k')),
+12: ("-r", _('msg_ocs_param_r')),
+13: ("-e", _('msg_ocs_param_e')),
+14: ("-f", _('msg_ocs_param_f')),
+15: ("-s", _('msg_ocs_param_s')),
+16: ("-a", _('msg_ocs_param_a')),
+17: ("-o0", _('msg_ocs_param_o0')),
+18: ("-o1", _('msg_ocs_param_o1')),
+19: ("-hn0", _('msg_ocs_param_hn0')),
+20: ("-hn1", _('msg_ocs_param_hn1')),
+}
+
+#----------------------------------------------------------------------
+class CSSCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartSaveArgs[data][0]
+        if flag:
+	    FinalArgs[index+3] = arg
+        else:
+	    FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+class CSRCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartRestoreArgs[data][0]
+        if flag:
+	    if index == 19:
+		FinalArgs[index+4] = arg
+	    else:
+		FinalArgs[index+3] = arg
+        else:
+	    if index == 19:
+		FinalArgs[index+4] = ''
+	    else:
+		FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SetAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_select_all_clients_or_select_part_them'), pos=(10,60), size=(400,100), style=wx.TE_MULTILINE)
+	wx.StaticText(self, -1, _('msg_set_all_clients_des'), pos=(10,80), size=(400,100), style=wx.TE_MULTILINE)
+	ox = ['Yes', 'No']
+	self.rb = wx.RadioBox(self, -1, _('msg_set_all_clients'), (10,150), (250,75), ox, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+	self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.rb)
+	FinalArgs[1] = '-nl'
+
+    def EvtRadioBox(self, event):
+	if event.GetSelection() == 0:
+	    FinalArgs[1] = '-nl'
+	if event.GetSelection() == 1:
+	    FinalArgs[1] = '-h'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def GetNext(self):
+	next = self.next
+	if self.rb.GetSelection()==0:
+	    next = next.GetNext()
+        return next
+
+#----------------------------------------------------------------------
+class SelectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	self.SelectedClientsArray = []
+	self.SelectedClientsStr = ''
+	self.fuse_next = self.fuse_prev = 0
+	
+        AllClientsArray = os.popen('sudo /opt/drbl/bin/get-client-ip-list').read().split('\n')
+	AllClientsArray.remove('')
+        self.lb = wx.CheckListBox(self, -1, (10,50), (470,250), AllClientsArray)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, self.lb)
+        self.lb.SetSelection(0)
+
+    def EvtCheckListBox(self, event):
+	global PXE_CFG
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+	    self.SelectedClientsArray.append(label)
+        if not (self.lb.IsChecked(index)):
+	    self.SelectedClientsArray.remove(label)
+        self.lb.SetSelection(index)    #so that (un)checking also selects (moves the highlight)
+	self.SelectedClientsStr = ''
+	PXE_CFG = []
+	for x in self.SelectedClientsArray:
+	    self.SelectedClientsStr = x + ' ' + self.SelectedClientsStr
+	    SinglePXECfgFileName = string.upper('%02x' % int(x.split('.')[0],10) + '%02x' % int(x.split('.')[1],10) + '%02x' % int(x.split('.')[2],10) + '%02x' % int(x.split('.')[3],10))
+	    PXE_CFG.append(SinglePXECfgFileName)
+        self.SelectedClientsStr = '\"' + self.SelectedClientsStr + '\"'
+	#print self.SelectedClientsStr
+	#print PXE_CFG[:]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global PXE_CFG
+	command = command_log = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if FinalArgs[1] == '-nl':
+                FinalArgs[2] = ''
+                PXE_CFG = []
+	    elif (self.SelectedClientsStr == '\"\"') or (self.SelectedClientsStr == ''):
+	        war = wx.MessageDialog(self, 'YOU MUST CHOOSE ONE!!', 'WARNNING!!', wx.OK|wx.ICON_INFORMATION)
+                war.ShowModal()
+                war.Destroy()
+                return self
+	    else:
+		FinalArgs[2] = self.SelectedClientsStr
+		#print FinalArgs[2]
+		#print PXE_CFG[:]
+	    if (FinalArgs[3] == 'remote-linux-gra') or (FinalArgs[3] == 'remote-linux-txt') or (FinalArgs[3] == 'terminal') or (FinalArgs[3] == 'remote-memtest') or (FinalArgs[3] == 'remote-fdos') or (FinalArgs[3] == 'remote-local') or (FinalArgs[3] == 'local') or (FinalArgs[3] == 'Wake-on-LAN'):
+                for i in range(0,4):
+                    if FinalArgs[i] != '':
+                        command = command + FinalArgs[i] + ' '
+                FinalCommand.SetLabel('%s' % command)
+                CommandLog.WriteText(os.popen('sudo %s' % command).read())
+	    elif (FinalArgs[3] == 'reboot') or (FinalArgs[3] == 'shutdown'):
+		for i in range(0,4):
+		    if FinalArgs[i] != '':
+			command = command + FinalArgs[i] + ' '
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % command)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+		file.close()
+		os.remove('tmp.log')
+		FinalCommand.SetLabel('%s' % command)
+                CommandLog.WriteText('%s' % command_log)
+	    elif (FinalArgs[0] == '/opt/drbl/sbin/drbl-client-reautologin'):
+		if FinalArgs[1] == '-nl':
+		    FinalArgs[1] = ''
+		    FinalCommand.SetLabel('%s' % command)
+		    CommandLog.WriteText(os.popen('sudo %s' % FinalArgs[0]).read())
+		else:
+                    FinalCommand.SetLabel('%s %s %s' % (FinalArgs[0], FinalArgs[1], FinalArgs[2]))
+                    CommandLog.WriteText(os.popen('sudo %s %s %s' % (FinalArgs[0], FinalArgs[1], FinalArgs[2])).read())
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_prev = 0
+
+        ModeList = [_('msg_clonezilla_save_disk'), _('msg_clonezilla_save_parts')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[12] = 'startdisk'
+	FinalArgs[13] = 'save'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[12] = 'startdisk'
+		FinalArgs[13] = 'save'
+        if event.GetInt() == 1:
+                FinalArgs[12] = 'startparts'
+		FinalArgs[13] = 'save'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+	    prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+	global CSSP2rb
+
+        choice = [_('msg_now_input_in_server'), _('msg_later_input_in_client')]
+	wx.StaticText(self, -1, _('msg_ask_if_input_save_image_name_in_server'), (10,60),(470,100), style=wx.TE_MULTILINE)
+        CSSP2rb = wx.RadioBox(self, -1, _('msg_choose_action'), (10,120), (210,80), choice, 1, wx.RA_SPECIFY_COLS)
+        CSSP2rb.SetSelection(0)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_next = self.fuse_next + 1
+	next = self.next
+	if self.fuse_next == 2:
+	    if CSSP2rb.GetSelection() == 1:
+		next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global CSSP2rb
+	self.fuse_next = self.fuse_next + 1
+	self.fuse_prev = 0
+	if self.fuse_next == 2:
+	    if CSSP2rb.GetSelection() == 1:
+                FinalArgs[14] = ''
+                FinalArgs[15] = ''
+		#print ('FinalArgs[14] is %s, FinalArgs[15] is %s' % (FinalArgs[14], FinalArgs[15]))
+	    elif self.text_img.GetValue() == '' or self.text_dev.GetValue() == '':
+		warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+		warnning.ShowModal()
+		warnning.Destroy()
+		return self
+	    else:
+	        FinalArgs[14] = self.text_img.GetValue()
+	        FinalArgs[15] = self.text_dev.GetValue()
+	        #print ('FinalArgs[14] is %s, FinalArgs[15] is %s' % (FinalArgs[14], FinalArgs[15]))
+	return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = self.fuse_prev = 0
+
+        ox = [_('msg_yes'), _('msg_no')]
+	wx.StaticText(self, -1, _('msg_skip_set_advanced_extra_param'), (10,60), (470,100), wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, _('msg_choose_action'), (10,100), (100,50), ox, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	self.SkipExtraParam = 'no'
+
+    def EvtRadioBox(self, event):
+	if event.GetSelection() == 0:
+	   self.SkipExtraParam = 'yes' 
+	else:
+	   self.SkipExtraParam = 'no'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global CSSP2rb
+	next = self.next
+	command = command_log = ''
+        self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if self.SkipExtraParam == 'yes':
+		if CSSP2rb.GetSelection() == 1:
+		    if FinalArgs[1] == '-nl':
+		        command = ('%s %s %s' % (FinalArgs[0], FinalArgs[12], FinalArgs[13]))
+		    elif FinalArgs[1] == '-h':
+			command = ('%s %s %s %s %s' % (FinalArgs[0], FinalArgs[1], FinalArgs[2], FinalArgs[12], FinalArgs[13]))
+		elif CSSP2rb.GetSelection() == 0:
+                    if FinalArgs[1] == '-nl':
+                        command = ('%s %s %s %s %s' % (FinalArgs[0], FinalArgs[12], FinalArgs[13], FinalArgs[14], FinalArgs[15]))
+                    elif FinalArgs[1] == '-h':
+                        command = ('%s %s %s %s %s %s %s' % (FinalArgs[0], FinalArgs[1], FinalArgs[2], FinalArgs[12], FinalArgs[13], FinalArgs[14], FinalArgs[15]))
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % command)
+                time.sleep(6)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+            	file.close()
+            	os.remove('tmp.log')
+            	FinalCommand.SetLabel('%s' % command)
+            	CommandLog.WriteText('%s' % command_log)
+		for i in range(0,3):
+		    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        prev = self.prev
+        if self.fuse_prev == 1:
+            if FinalArgs[14] == '' and FinalArgs[15] == '':
+                prev = prev.GetPrev()
+        return prev
+
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        self.list = CSSCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))	#not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)	#not translated
+
+        for key, data in ClonezillaStartSaveArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+	return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (10,100), (250,100), ArgList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	rb.SetSelection(0)
+	FinalArgs[10] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            FinalArgs[10] = '-p choose'
+        if event.GetSelection() == 1:
+            FinalArgs[10] = '-p true'
+        if event.GetSelection() == 2:
+            FinalArgs[10] = '-p poweroff'
+        if event.GetSelection() == 3:
+            FinalArgs[10] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        ArgList = [ _('msg_ocs_param_z0'), _('msg_ocs_param_z1'), _('msg_ocs_param_z2'), _('msg_ocs_param_z3')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (10,100), (300,100), ArgList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	rb.SetSelection(3)
+	FinalArgs[11] = '-z3'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[11] = '-z0'
+        if event.GetSelection() == 1:
+                FinalArgs[11] = '-z1'
+        if event.GetSelection() == 2:
+                FinalArgs[11] = '-z2'
+        if event.GetSelection() == 3:
+                FinalArgs[11] = '-z3'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = command_log = ''
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+	    if FinalArgs[1] == '-nl':
+		FinalArgs[1] = ''
+            for i in range(0,20):
+                if FinalArgs[i] != '':
+                    command = command + FinalArgs[i] + ' '
+	    file = open('tmp.log','w')
+	    os.system('sudo %s > tmp.log' % command)
+	    time.sleep(6)
+	    file.close()
+	    file = open('tmp.log')
+	    while True:
+		line = file.readline()
+		if len(line) == 0: # Zero length indicates EOF
+        	    break
+		command_log = command_log + line
+	    file.close()
+	    os.remove('tmp.log')
+	    FinalCommand.SetLabel('%s' % command)
+	    CommandLog.WriteText('%s' % command_log)
+	return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0	
+
+        ModeList = [_('msg_clonezilla_restore_disk'), _('msg_clonezilla_restore_parts')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS | wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+        FinalArgs[33] = 'startdisk'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'startdisk'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'startparts'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+	#self.fuse_next = self.fuse_next + 1
+	#if self.fuse_next == 2:
+	    #print ('ClonezillaRestorePage1: FinalArgs[33] is %s' % FinalArgs[33])
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        self.list = CSRCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        	       #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT) #not translated
+
+        for key, data in ClonezillaStartRestoreArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if not (self.list.IsChecked(18) or self.list.IsChecked(19)):
+	        next = next.GetNext()
+	        next = next.GetNext()
+	    #print ('ClonezillaRestorePage2: arguments are : %s' % FinalArgs[3:24])
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self,-1 ,_('msg_write_MS_WIN_is_necessary'), (10, 60), (470, 200), wx.TE_MULTILINE)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        wx.StaticText(self, -1, _('msg_What_the_win_hostname_prefix'), (5, 80))
+        self.text = wx.TextCtrl(self, -1, "PC", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if FinalArgs[21] == '-hn0':
+                FinalArgs[22] = self.text.GetValue()
+            else:
+                FinalArgs[22] = ''
+            if FinalArgs[23] == '-hn1':
+                FinalArgs[24] = self.text.GetValue()
+            else:
+                FinalArgs[24] = ''
+	    #print ('ClonezillaRestorePage4 : FinalArgs[21-24] are %s' % FinalArgs[21:25])
+	    #print ('FinalArgs[22] is %s, FinalArgs[24] is %s' % (FinalArgs[22], FinalArgs[24]))
+        return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self, -1, _('msg_if_always_provide_clonezilla_srv'), (10, 60), (470, 200),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (10,100), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[25] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[25] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[25] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[25] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+	#self.fuse_next = self.fuse_next + 1
+	#if self.fuse_next == 2:
+	    #print ('ClonezillaRestorePage5 : FinalArgs[25](-y) is %s' % FinalArgs[25])
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[21] == '' and FinalArgs[23] == '':
+	        prev = prev.GetPrev()
+	        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_prev = self.fuse_next = 0
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (10,100), (250,100), ArgList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        FinalArgs[26] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[26] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[26] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[26] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[26] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = command_log = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		if FinalArgs[1] == '-nl':
+		    FinalArgs[1] = ''
+		FinalArgs[27] = FinalArgs[29] = ''
+		FinalArgs[34] = 'restore'
+                for i in range(0,37):
+                    if FinalArgs[i] != '':
+                        command = command + FinalArgs[i] + ' '
+		#print ('ClonezillaRestorePage6 : FinalArgs[26] (-z) is %s' % FinalArgs[26])
+		#print ('FinalCommands : %s' % command)
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % command)
+                time.sleep(6)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+		file.close()
+		os.remove('tmp.log')
+		FinalCommand.SetLabel('%s' % command)
+                CommandLog.WriteText('%s' % command_log)
+		for i in range(0,8):
+		    next = next.GetNext()
+	    #else:
+	        #print ('ClonezillaRestorePage6 : FinalArgs[26] (-z) is %s' % FinalArgs[26])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[34] = 'multicast_restore'
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        wx.StaticText(self, -1, _('msg_choose_the_image_to_restore'), (5,80))
+        self.fbb = filebrowse.FileBrowseButton(self, -1, pos=(50,150), size=(350, -1), buttonText='browse', 
+toolTip='Enter the img name or click browse button to choose img', fileMask='*.img', changeCallback = self.fbbCallback)
+
+    def fbbCallback(self, evt):
+        FinalArgs[35] = evt.GetString()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		FinalArgs[35] = ''
+		next = next.GetNext()
+		#print ('ClonezillaRestorePage7 : FinalArgs[9] = -u')
+	    elif (FinalArgs[35] == '') or (os.path.exists(FinalArgs[35]) == 'False'):
+                warnning = wx.MessageDialog(self, 'Image File Not Found!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                warnning.ShowModal()
+                warnning.Destroy()
+		return self			
+	    elif FinalArgs[33] == 'startparts':
+	        next = next.GetNext()
+		#print ('ClonezillaRestorePage7 : FinalArgs[33] = startparts')
+	    #print ('ClonezillaRestorePage7 : FinalArgs[35] is %s' % FinalArgs[35])
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8a(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        wx.StaticText(self, -1, _('msg_choose_the_disks_to_restore'), (5,80))
+        self.text = wx.TextCtrl(self, -1, "sda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		next = next.GetNext()
+		FinalArgs[36] = ''
+		#print ('ClonezillaRestorePage8a : FinalArgs[9] = -u')
+	    elif FinalArgs[33] == 'startdisk':
+	        if self.text.GetValue() == '':
+                    warnning = wx.MessageDialog(self, 'Disks Not Found!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                    warnning.ShowModal()
+                    warnning.Destroy()
+                    return self
+	        else:
+	            FinalArgs[36] = self.text.GetValue()
+	            next = next.GetNext()
+		    #print ('ClonezillaRestorePage8a : FinalArgs[33] = startdisk, FinalArgs[36] is %s' % FinalArgs[36])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[36] = ''
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8b(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        wx.StaticText(self, -1, _('msg_choose_the_parts_to_restore'), (5,80))
+        self.text = wx.TextCtrl(self, -1, "sda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		next = next.GetNext()
+		FinalArgs[36] = ''
+		#print ('ClonezillaRestorePage8b : FinalArgs[9] = -u')
+	    elif FinalArgs[33] == 'startparts':
+	        if self.text.GetValue() == '':
+                    warnning = wx.MessageDialog(self, 'Partitions Not Found', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                    warnning.ShowModal()
+                    warnning.Destroy()
+                    return self
+	        else:		
+                    FinalArgs[36] = self.text.GetValue()
+	            next = next.GetNext()
+		    #print ('ClonezillaRestorePage8b : FinalArgs[33] = startparts, FinalArgs[36] is %s' % FinalArgs[36])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startparts':
+		FinalArgs[36] = ''
+	        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9a(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_disk'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[34] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[34] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[34] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = command_log = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[33] == 'startdisk':
+	        if FinalArgs[9] != '-u' and FinalArgs[34] == 'restore':
+		    if FinalArgs[1] == '-nl':
+			FinalArgs[1] = ''
+		    FinalArgs[27] = FinalArgs[29] = ''
+                    for i in range(0,37):
+                        if FinalArgs[i] != '':
+                            command = command + FinalArgs[i] + ' '
+                    #print ('ClonezillaStartRestorePage9a : FinalArgs[9] is empty, FinalArgs[34] is %s' % FinalArgs[34])
+		    #print ('FinalCommands : %s' % command)
+            	    file = open('tmp.log','w')
+            	    os.system('sudo %s > tmp.log' % command)
+            	    time.sleep(6)
+            	    file.close()
+            	    file = open('tmp.log')
+            	    while True:
+                	line = file.readline()
+                	if len(line) == 0: # Zero length indicates EOF
+                    	    break
+                	command_log = command_log + line
+		    file.close()
+		    os.remove('tmp.log')
+		    FinalCommand.SetLabel('%s' % command)
+            	    CommandLog.WriteText('%s' % command_log)
+                    #CommandLog.WriteText(os.popen('sudo %s' % command).read())
+		    for i in range(0,4):
+			next = next.GetNext()
+		else:
+		    next = next.GetNext()
+		    #print ('ClonezillaStartRestorePage9a : FinalArgs[34] is %s (should be multicast_restore)' % FinalArgs[34])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startdisk':
+		FinalArgs[27] = '--clients-to-wait'
+		FinalArgs[29] = '--max-time-to-wait'
+	        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9b(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_parts'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[34] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[34] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[34] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = command_log = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[33] == 'startparts':
+		if FinalArgs[9] != '-u' and FinalArgs[34] == 'restore':
+		    if FinalArgs[1] == '-nl':
+			FinalArgs[1] = ''
+		    FinalArgs[27] = FinalArgs[29] = ''
+                    for i in range(0,37):
+                        if FinalArgs[i] != '':
+                            command = command + FinalArgs[i] + ' '
+                    #print ('ClonezillaStartRestorePage9b : FinalArgs[9] is empty, FinalArgs[34] is %s' % FinalArgs[34])
+		    #print ('FinalCommands : %s' % command)
+            	    file = open('tmp.log','w')
+            	    os.system('sudo %s > tmp.log' % command)
+            	    time.sleep(6)
+            	    file.close()
+            	    file = open('tmp.log')
+            	    while True:
+                	line = file.readline()
+                	if len(line) == 0: # Zero length indicates EOF
+                    	    break
+                	command_log = command_log + line
+		    file.close()
+		    os.remove('tmp.log')
+		    FinalCommand.SetLabel('%s' % command)
+            	    CommandLog.WriteText('%s' % command_log)
+                    #CommandLog.WriteText(os.popen('sudo %s' % command).read())
+		    for i in range(0,3):
+			next = next.GetNext()
+                #else:
+                    #print ('ClonezillaStartRestorePage9b : FinalArgs[34] is %s (should be multicast_restore)' % FinalArgs[34])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startparts':
+		prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage10(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_clients_time_to_wait'), _('msg_time_to_wait'), _('msg_clients_to_wait')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (10,60), (200, 100), ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[27] = '--clients-to-wait'
+	FinalArgs[29] = '--max-time-to-wait'
+
+    def EvtRadioBox(self, event):
+	if event.GetInt() == 0:
+	    FinalArgs[27] = '--clients-to-wait'
+	    FinalArgs[29] = '--max-time-to-wait'
+	elif event.GetInt() == 1:
+	    FinalArgs[27] = ''
+	    FinalArgs[29] = '--max-time-to-wait'
+	elif event.GetInt() == 2:
+	    FinalArgs[27] = '--clients-to-wait'
+	    FinalArgs[29] = ''
+ 
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[27] == '' and FinalArgs[29] != '':
+	        next = next.GetNext()
+		#print ('ClonezillaRestorePage10 : just time-to-wait')
+	    #elif FinalArgs[27] != '' and FinalArgs[29] == '':
+		#print ('ClonezillaRestorePage10 : just clients-to-wait')
+	    #elif FinalArgs[27] != '' and FinalArgs[29] != '':
+		#print ('ClonezillaRestorePage10 : both time-to-wait and clients-to-wait')
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startdisk':
+	  	prev = prev.GetPrev()
+        return prev
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage11(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        wx.StaticText(self, -1, _('msg_how_many_clients_to_restore'), (10, 80))
+	self.text = wx.TextCtrl(self, -1, '5', (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = command_log = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if self.text.GetValue() == '':
+                warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                warnning.ShowModal()
+                warnning.Destroy()
+                return self
+	    if FinalArgs[27] != '' and FinalArgs[29] == '':
+	        FinalArgs[28] = self.text.GetValue()
+                if FinalArgs[1] == '-nl':
+                    FinalArgs[1] = ''
+                for i in range(0,37):
+                    if FinalArgs[i] != '':
+                        command = command + FinalArgs[i] + ' '
+                #print ('FinalCommands : %s' % command)
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % command)
+                time.sleep(6)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+		file.close()
+		os.remove('tmp.log')
+		FinalCommand.SetLabel('%s' % command)
+                CommandLog.WriteText('%s' % command_log)
+	    elif FinalArgs[27] != '' and FinalArgs[29] != '':
+		FinalArgs[28] = self.text.GetValue()	
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[28] = ''
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage12(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = self.fuse_prev  = 0
+
+        wx.StaticText(self, -1, _('msg_max_time_to_wait_sec'), pos=(10, 60), size=(475, 200), style=wx.TE_MULTILINE)
+        self.text = wx.TextCtrl(self, -1, "300", (10, 150), size=(100, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = command_log = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if self.text.GetValue() == '':
+		warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+		warnning.ShowModal()
+		warnning.Destroy()
+		return self
+	    FinalArgs[30] = self.text.GetValue()
+	    if FinalArgs[1] == '-nl':
+		FinalArgs[1] = ''
+            for i in range(0,37):
+                if FinalArgs[i] != '':
+                    command = command + FinalArgs[i] + ' '
+            #print ('FinalCommands : %s' % command)
+            file = open('tmp.log','w')
+            os.system('sudo %s > tmp.log' % command)
+            time.sleep(6)
+            file.close()
+            file = open('tmp.log')
+            while True:
+                line = file.readline()
+                if len(line) == 0: # Zero length indicates EOF
+                    break
+                command_log = command_log + line
+	    file.close()
+	    os.remove('tmp.log')
+	    FinalCommand.SetLabel('%s' % command)
+	    CommandLog.WriteText('%s' % command_log)
+	return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[30] = ''
+	    if FinalArgs[27] == '':
+		prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_prev = 0
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'), (10, 60), (470, 200),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (10,100), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[5] = '-y1'
+	FinalArgs[7] = 'select_in_client'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[5] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[5] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[5] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[5] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (10,60), (470,200), ArgList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        FinalArgs[6] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[6] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[6] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[6] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[6] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = ''
+        self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            for i in range(0,8):
+                if FinalArgs[i] != '':
+                    command = command + FinalArgs[i] + ' '
+	    FinalCommand.SetLabel('%s' % command)
+	    CommandLog.WriteText(os.popen('sudo %s' % command).read())
+        return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+	ModeList = [_('msg_hide_pxe_menus'), _('msg_reveal_pxe_menus'), _('msg_setdefault_pxe_menu')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_action'), (10, 60), (470,200), ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+        FinalArgs[3] = 'hide'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+	    FinalArgs[3] = 'hide'
+        if event.GetSelection() == 1:
+            FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+            FinalArgs[3] = 'reveal'
+        if event.GetSelection() == 2:
+	    FinalArgs[0] = '/opt/drbl/sbin/set-default-pxe-img'
+	    FinalArgs[3] = '-i'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+	next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if FinalArgs[3] == '-i':
+	        next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	self.fuse_next = self.fuse_prev = index = 0
+	self.AllLabelsArray = []
+	self.SelectedLabelsArray = []
+
+        file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+        content = file.read()
+        for word in content.split():
+	    if word == 'label':
+		self.AllLabelsArray.append(content.split()[index + 1])
+	    index = index + 1
+	file.close()
+
+        self.LabelBox = wx.CheckListBox(self, -1, (10,60), (470,250), self.AllLabelsArray)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, self.LabelBox)
+        self.LabelBox.SetSelection(0)
+
+    def EvtCheckListBox(self, event):
+        index = event.GetSelection()
+        label = self.LabelBox.GetString(index)
+        if self.LabelBox.IsChecked(index):
+            self.SelectedLabelsArray.append(label)
+        if not (self.LabelBox.IsChecked(index)):
+            self.SelectedLabelsArray.remove(label)
+        self.LabelBox.SetSelection(index)	#so that (un)checking also selects (moves the highlight)
+        #print self.SelectedLabelsArray[:]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if (FinalArgs[3] == 'hide') or (FinalArgs[3] == 'reveal'):
+	        if FinalArgs[1] == '-nl':
+		    for k in range(0,len(self.SelectedLabelsArray[:])):
+		    	os.system('sudo rm -f /tftpboot/nbi_img/pxelinux.cfg/1* 2* 3* 4* 5* 6* 7* 8* 9* 0* A* B* C* D* E* F*')
+		    	CommandLog.WriteText('remove all the pxe_cfg files under /tftpboot/nbi_img/pxelinux.cfg/, except default!\n')
+			CommandLog.WriteText(os.popen('sudo %s %s %s' % (FinalArgs[0], self.SelectedLabelsArray[k], FinalArgs[3])).read())
+	        else:
+		    for i in range(0, len(PXE_CFG[:])):
+			for k in range(0, len(self.SelectedLabelsArray[:])):
+			    if ((len(self.SelectedLabelsArray[:]) == len(self.AllLabelsArray[:])) and (FinalArgs[3] == 'hide')):
+				warnning = wx.MessageDialog(self, 'YOU CANNOT HIDE ALL LABELS', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+				warnning.ShowModal()
+				warnning.Destroy()
+				return self
+			    elif os.path.exists('/tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG[i]):
+				CommandLog.WriteText(os.popen('sudo %s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s' % (FinalArgs[0], self.SelectedLabelsArray[k], FinalArgs[3], PXE_CFG[i])).read())
+				CommandLog.WriteText('%s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s' % (FinalArgs[0], self.SelectedLabelsArray[k], FinalArgs[3], PXE_CFG[i]))
+			    else:
+				os.system('sudo cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG[i])
+				CommandLog.WriteText('copy /tftpboot/nbi_img/pxelinux.cfg/default to %s\n' % PXE_CFG[i])
+				CommandLog.WriteText(os.popen('sudo %s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s' % (FinalArgs[0], self.SelectedLabelsArray[k], FinalArgs[3], PXE_CFG[i])).read())
+				CommandLog.WriteText('%s -c /tftpboot/nbi_img/pxelinux.cfg/%s -i %s %s' % (FinalArgs[0], PXE_CFG[i] ,self.SelectedLabelsArray[k], FinalArgs[3]))
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+        return prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.fuse_next = self.fuse_prev = index = 0
+        AllLabelsArray = []
+
+        file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+        content = file.read()
+        for word in content.split():
+            if word == 'label':
+                AllLabelsArray.append(content.split()[index + 1])
+            index = index + 1
+        file.close()
+
+        self.LabelBox = wx.RadioBox(self, -1, _('msg_setdefault_list_des'), (10,60), (470,250), AllLabelsArray, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.LabelBox)
+        self.LabelBox.SetSelection(0)
+	self.SelectedLabel = AllLabelsArray[0]
+
+    def EvtRadioBox(self, event):
+	self.SelectedLabel = event.GetString()
+        #print self.SelectedLabel
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if (FinalArgs[1] == '-nl') and (FinalArgs[3] == '-i'):
+		os.system('sudo rm -f /tftpboot/nbi_img/pxelinux.cfg/1* 2* 3* 4* 5* 6* 7* 8* 9* 0* A* B* C* D* E* F*')
+		CommandLog.WriteText('remove all the pxe_cfg files under /tftpboot/nbi_img/pxelinux.cfg/, except default!\n')
+                CommandLog.WriteText(os.popen('sudo %s %s %s' % (FinalArgs[0], FinalArgs[3], self.SelectedLabel)).read())
+            elif (FinalArgs[1] == '-h') and (FinalArgs[3] == '-i'):
+                for i in range(0, len(PXE_CFG[:])):
+		    if os.path.exists('/tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG[i]):
+			CommandLog.WriteText(os.popen('sudo %s -c /tftpboot/nbi_img/pxelinux.cfg/%s %s %s' % (FinalArgs[0], PXE_CFG[i], FinalArgs[3], self.SelectedLabel)).read())
+		    else:
+                        os.system('sudo cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG[i])
+                        CommandLog.WriteText(os.popen('%s -c /tftpboot/nbi_img/pxelinux.cfg/%s %s %s' % (FinalArgs[0], PXE_CFG[i], FinalArgs[3], self.SelectedLabel)).read())
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[3] == '-i':
+		prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class SwitchPXEModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_pxemenu_text'), _('msg_pxemenu_graphic')]
+        rb = wx.RadioBox(self, -1, '', (10,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/switch-pxe-bg-mode'
+        FinalArgs[5] = '-m'
+	FinalArgs[6] = 'text'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            FinalArgs[6] = 'text'
+        if event.GetSelection() == 1:
+            FinalArgs[6] = 'graphic'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+	    if FinalArgs[1] == '-nl':
+		CommandLog.WriteText(os.popen('sudo %s %s %s' % (FinalArgs[0], FinalArgs[5], FinalArgs[6])).read())
+	    else:
+	        for i in range(0,len(PXE_CFG[:])):
+		    CommandLog.WriteText(os.popen('sudo %s -c /tftpboot/nbi_img/pxelinux.cfg/%s %s %s' % (FinalArgs[0], PXE_CFG[i], FinalArgs[5], FinalArgs[6])).read())
+	return self.next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class DRBLModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_drbl_mode_0'), _('msg_drbl_mode_1'), _('msg_drbl_mode_2')]
+	wx.StaticText(self,-1,_('msg_drbl_mode_switch_long'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 320, 300),wx.TE_MULTILINE)
+	rb = wx.RadioBox(self, -1, '', (10,220), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)	
+	self.fuse_next = self.fuse_prev = 0
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/tune-clientdir-opt'
+	FinalArgs[1] = '-d'
+	FinalArgs[2] = '0'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    FinalArgs[2] = '0'
+	if event.GetSelection() == 1:
+	    FinalArgs[2] = '1'
+	if event.GetSelection() == 2:
+	    FinalArgs[2] = '2'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = ''
+	self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            for i in range(0,3):
+                command = command + FinalArgs[i] + ' '
+            CommandLog.WriteText(os.popen('sudo %s' % command).read())
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_clonezilla_mode_0'), _('msg_clonezilla_mode_1'), _('msg_clonezilla_mode_2')]
+	wx.StaticText(self,-1,_('msg_clonezilla_mode_switch_long'), (10, 60), (475, 300),wx.TE_MULTILINE)
+	rb = wx.RadioBox(self, -1, '', (10,180), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/tune-clientdir-opt'
+        FinalArgs[1] = '-z'
+        FinalArgs[2] = '0'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[2] = '0'
+        elif event.GetInt() == 1:
+            FinalArgs[2] = '1'
+        elif event.GetInt() == 2:
+            FinalArgs[2] = '2'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        command = ''
+	self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+            for i in range(0,3):
+                command = command + FinalArgs[i] + ' '
+            CommandLog.WriteText(os.popen('sudo %s' % command).read())
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class LoginSwitchPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+	ModeList = [_('msg_normal_login'), _('msg_auto_login'), _('msg_timed_login')]
+        wx.StaticText(self, -1, _('msg_login_switch'),(10,60))
+	rb = wx.RadioBox(self, -1, _('msg_choose_action'), (10, 120), (200, 200),ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+	self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-login-switch'
+	FinalArgs[3] = '-n'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    FinalArgs[0] = '/opt/drbl/sbin/drbl-login-switch'
+	    FinalArgs[3] = '-n'
+            FinalArgs[4] = ''
+	    FinalArgs[5] = ''
+        if event.GetSelection() == 1:
+	    FinalArgs[0] = '/opt/drbl/sbin/drbl-client-switch'
+	    FinalArgs[3] = 'remote-linux-gra'
+	    FinalArgs[4] = '/opt/drbl/sbin/drbl-login-switch'
+            FinalArgs[5] = '-a'
+        if event.GetSelection() == 2:
+            FinalArgs[0] = '/opt/drbl/sbin/drbl-client-switch'
+	    FinalArgs[3] = 'remote-linux-gra'
+            FinalArgs[4] = '/opt/drbl/sbin/drbl-login-switch'
+            FinalArgs[5] = '-t'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[3] == '-n':
+		FinalArgs[1] = FinalArgs[2] = ''
+		CommandLog.WriteText(os.popen('sudo %s %s' % (FinalArgs[0], FinalArgs[3])).read())
+	    elif (FinalArgs[3] != '-n') and (FinalArgs[1] == '-nl'):
+		CommandLog.WriteText(os.popen('sudo %s %s %s' % (FinalArgs[0], FinalArgs[1], FinalArgs[3])).read())
+		CommandLog.WriteText(os.popen('sudo %s %s' % (FinalArgs[4], FinalArgs[5])).read())
+	    elif (FinalArgs[3] != '-n') and (FinalArgs[1] == '-h'):
+		CommandLog.WriteText(os.popen('sudo %s %s %s %s' % (FinalArgs[0], FinalArgs[1], FinalArgs[2], FinalArgs[3])).read())
+            	CommandLog.WriteText(os.popen('sudo %s %s' % (FinalArgs[4], FinalArgs[5])).read())
+        return next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class CleanAutoLoginAccountPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_clean_autologin_account'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-clean-autologin-account'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class SwitchDRBLServPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        ModeList = [_('msg_start_drbl_all_services'), _('msg_stop_drbl_all_services'), _('msg_restart_drbl_all_services'), _('msg_add_drbl_all_services'), _('msg_del_drbl_all_services')]
+        wx.StaticText(self, -1, _('msg_switch_drbl_service'),(10,60))
+        rb = wx.RadioBox(self, -1, _('msg_choose_action'), (10, 120), (250,200), ModeList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-all-service'
+        FinalArgs[1] = 'start'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            FinalArgs[1] = 'start'
+        if event.GetSelection() == 1:
+            FinalArgs[1] = 'stop'
+        if event.GetSelection() == 2:
+            FinalArgs[1] = 'restart'
+        if event.GetSelection() == 3:
+            FinalArgs[1] = 'add'
+        if event.GetSelection() == 4:
+            FinalArgs[1] = 'del'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def GetNext(self):
+        command = ''
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+            for i in range(0,3):
+                command = command + FinalArgs[i] + ' '
+	    FinalCommand.SetLabel('%s' % command)
+            CommandLog.WriteText(os.popen('sudo %s' % command).read()) 
+        return self.next
+
+#----------------------------------------------------------------------
+class FinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	global FinalCommand, CommandLog
+
+	FinalCommand = wx.StaticText(self, -1, '', pos=(10,60), size=(400,100))
+        CommandLog = wx.TextCtrl(self, -1, '', pos=(10,100), size=(470,200), style=wx.TE_MULTILINE|wx.TE_READONLY)
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def GetNext(self):
+        return self.next
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self):
+        wx.Frame.__init__(self, parent=None, title=_('msg_nchc_title'), size=(850,500))
+	self.SetAutoLayout(True)
+
+        FunctionList = [_('msg_remote_linux_graphic'), _('msg_remote_linux_text'), _('msg_thin_client')
+		        , _('msg_remote_memtest'), _('msg_remote_fdos'), _('msg_start_clonezilla_save_mode')
+			, _('msg_start_clonezilla_restore_mode'), _('msg_clonezilla_selec_in_client'), _('msg_clonezilla_stop')
+			, _('msg_local'), _('msg_reboot'), _('msg_shutdown'), _('msg_Wake_on_LAN')
+			, _('msg_switch_pxe_menu'), _('msg_switch_pxe_bg_mode'), _('msg_drbl_mode_switch')
+			, _('msg_clonezilla_mode_switch'), _('msg_gen_template_files'), _('msg_login_switch')
+			, _('msg_client_reautologin'), _('msg_reset_autologin_account')
+			, _('msg_switch_drbl_service'), _('msg_re_deploy'), _('msg_clean_dhcpd_lease')
+			, _('msg_regenerate_nfs_nis_nat_config')]
+
+	self.panelA = wx.Panel(self)
+	self.panelA.SetBackgroundColour(wx.RED)
+	self.panelA.SetConstraints(layoutf.Layoutf('t=t#1;l=l10#1;b%b15#1;r=r10#1',(self,)))
+
+        self.panelB = wx.Panel(self)
+        self.panelB.SetBackgroundColour(wx.BLUE)
+        self.panelB.SetConstraints(layoutf.Layoutf('t_5#2;l=l10#1;b%b90#1;r=r10#1',(self,self.panelA)))
+
+        self.panelC = wx.Panel(self)
+        self.panelC.SetBackgroundColour(wx.GREEN)
+        self.panelC.SetConstraints(layoutf.Layoutf('t_5#2;l=l10#1;b=b10#1;r=r10#1',(self,self.panelB)))
+
+        text = wx.StaticText(self.panelA, -1, _('TEST'), wx.DefaultPosition, (500,65), style=wx.TE_MULTILINE)
+        font = wx.Font(10, wx.SWISS, wx.BOLD, wx.NORMAL)
+        text.SetFont(font)
+        text.SetConstraints(layoutf.Layoutf('X%X50#1;Y=Y#1;h*;w%w50#1', (self.panelA,)))
+
+	rb = wx.RadioBox(self.panelB, -1, '', wx.DefaultPosition, wx.DefaultSize, FunctionList, 2, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        rb.SetConstraints(layoutf.Layoutf('X=X#1;Y=Y#1;h*;w%w90#1', (self.panelB,)))
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+
+        self.b_ok = wx.Button(self.panelC, wx.ID_OK)
+        self.b_ok.SetSize(self.b_ok.GetBestSize())
+        self.b_ok.SetConstraints(layoutf.Layoutf('X%X150#1;Y=Y#1;h*;w*', (self.panelC,)))
+        self.b_exit = wx.Button(self.panelC, wx.ID_EXIT)
+        self.b_exit.SetSize(self.b_exit.GetBestSize())
+        self.b_exit.SetConstraints(layoutf.Layoutf('X%X50#1;Y=Y#1;h*;w*', (self.panelC,)))
+
+        self.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b_ok)
+        self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.b_exit)
+        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b_ok)
+        if event.GetSelection() == 1:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxTxtWizard, self.b_ok)
+        if event.GetSelection() == 2:
+	    self.scroll.Bind(wx.EVT_BUTTON, self.TerminalWizard, self.b_ok)
+        if event.GetSelection() == 3:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteMemTestWizard, self.b_ok)
+        if event.GetSelection() == 4:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemotefdosWizard, self.b_ok)
+        if event.GetSelection() == 5:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartSaveWizard, self.b_ok)
+        if event.GetSelection() == 6:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartRestoreWizard, self.b_ok)
+        if event.GetSelection() == 7:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaSelectWizard, self.b_ok)
+        if event.GetSelection() == 8:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStopWizard, self.b_ok)
+        if event.GetSelection() == 9:
+            self.scroll.Bind(wx.EVT_BUTTON, self.LocalWizard, self.b_ok)
+        if event.GetSelection() == 10:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RebootWizard, self.b_ok)
+        if event.GetSelection() == 11:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ShutdownWizard, self.b_ok)
+        if event.GetSelection() == 12:
+            self.scroll.Bind(wx.EVT_BUTTON, self.WakeOnLANWizard, self.b_ok)
+        if event.GetSelection() == 13:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchPXEMenuWizard, self.b_ok)
+        if event.GetSelection() == 14:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchPXEModeWizard, self.b_ok)
+        if event.GetSelection() == 15:
+            self.scroll.Bind(wx.EVT_BUTTON, self.DRBLModeWizard, self.b_ok)
+        if event.GetSelection() == 16:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaModeWizard, self.b_ok)
+        if event.GetSelection() == 17:
+            self.scroll.Bind(wx.EVT_BUTTON, self.GenTemplateFileWizard, self.b_ok)
+        if event.GetSelection() == 18:
+            self.scroll.Bind(wx.EVT_BUTTON, self.LoginSwitchWizard, self.b_ok)
+        if event.GetSelection() == 19:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClientReAutoLoginWizard, self.b_ok)
+        if event.GetSelection() == 20:
+            self.scroll.Bind(wx.EVT_BUTTON, self.CleanAutoLoginAccountWizard, self.b_ok)
+        if event.GetSelection() == 21:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ResetAutoLoginAccountWizard, self.b_ok)
+        if event.GetSelection() == 22:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchDRBLServWizard, self.b_ok)
+        if event.GetSelection() == 23:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ReDeployWizard, self.b_ok)
+        if event.GetSelection() == 24:
+            self.scroll.Bind(wx.EVT_BUTTON, self.CleanDHCPLeaseWizard, self.b_ok)
+        if event.GetSelection() == 25:
+            self.scroll.Bind(wx.EVT_BUTTON, self.Regenerate3NWizard, self.b_ok)
+
+    def OnWizCancel(self, evt):
+        con = wx.MessageBox("Do you wnat to cancel this wizard?", "Confirm Again!", wx.CENTRE | wx.YES_NO | wx.ICON_QUESTION)
+	if con == wx.NO:
+	    evt.Veto()
+
+#----------------------------------------------------------------------
+    def OnCloseWindow(self, event):
+	self.Destroy()
+#----------------------------------------------------------------------
+    def OnCloseMe(self, event):
+	self.Close(True)
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxGraWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_linux_graphic'))
+
+	page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+	page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+	page3 = FinalPage(wizard, _('msg_done'))
+	FinalArgs[0] = '/opt/drbl/sbin/dcs'
+	FinalArgs[3] = 'remote-linux-gra'
+
+	self.page1 = page1
+	#wizard.FitToPage(page1)
+	wizard.SetPageSize((500,300))
+
+	page1.SetNext(page2)
+	page2.SetPrev(page1)
+	page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+	    for i in range(0,36):
+		FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+	    
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxTxtWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_linux_text'), pos = (350,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-linux-txt'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def TerminalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_thin_client'), pos = (350,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'terminal'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteMemTestWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_memtest'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-memtest'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RemotefdosWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_fdos'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard,_('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-fdos'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartSaveWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_start_clonezilla_save_mode'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+	page3 = ClonezillaStartSavePage1(wizard, _('msg_choose_mode'))
+	page4 = ClonezillaStartSavePage2(wizard, _('msg_title_input_save_image_name_in_server'))
+	page5 = ClonezillaStartSavePage3(wizard, _('msg_input_image_name'))
+	page6 = ClonezillaStartSavePage4(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page7 = ClonezillaStartSavePage5(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page8 = ClonezillaStartSavePage6(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page9 = ClonezillaStartSavePage7(wizard, _('msg_clonezilla_advanced_extra_param'))
+        page10 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+	page6.SetPrev(page5)
+	page6.SetNext(page7)
+	page7.SetPrev(page6)
+	page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+	    wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartRestoreWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_start_clonezilla_restore_mode'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = ClonezillaStartRestorePage1(wizard, _('msg_choose_mode'))
+        page4 = ClonezillaStartRestorePage2(wizard, _('msg_clonezilla_advanced_extra_param'))
+        page5 = ClonezillaStartRestorePage3(wizard, _('msg_change_hostname_of_MS_WIN_on_the_fly'))
+        page6 = ClonezillaStartRestorePage4(wizard, _('msg_What_the_win_hostname_prefix'))
+        page7 = ClonezillaStartRestorePage5(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page8 = ClonezillaStartRestorePage6(wizard, _('msg_clonezilla_advanced_extra_param'))
+        page9 = ClonezillaStartRestorePage7(wizard, _('msg_choose_the_image_to_restore'))
+	page10 = ClonezillaStartRestorePage8a(wizard, _('msg_choose_the_disks_to_restore'))
+	page11 = ClonezillaStartRestorePage8b(wizard, _('msg_choose_the_parts_to_restore'))
+	page12 = ClonezillaStartRestorePage9a(wizard, _('msg_choose_mode'))
+	page13 = ClonezillaStartRestorePage9b(wizard, _('msg_choose_mode'))
+	page14 = ClonezillaStartRestorePage10(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page15 = ClonezillaStartRestorePage11(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page16 = ClonezillaStartRestorePage12(wizard, _('msg_clonezilla_advanced_extra_param'))
+        page17 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+        page4.SetPrev(page3)
+        page4.SetNext(page5)
+        page5.SetPrev(page4)
+        page5.SetNext(page6)
+        page6.SetPrev(page5)
+        page6.SetNext(page7)
+        page7.SetPrev(page6)
+        page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+	page10.SetPrev(page9)
+	page10.SetNext(page11)
+	page11.SetPrev(page10)
+	page11.SetNext(page12)
+	page12.SetPrev(page11)
+	page12.SetNext(page13)
+	page13.SetPrev(page12)
+	page13.SetNext(page14)
+	page14.SetPrev(page13)
+	page14.SetNext(page15)
+	page15.SetPrev(page14)
+	page15.SetNext(page16)
+	page16.SetPrev(page15)
+	page16.SetNext(page17)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaSelectWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clonezilla_selec_in_client'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = ClonezillaSelectPage1(wizard, _('msg_clonezilla_advanced_extra_param'))
+	page4 = ClonezillaSelectPage2(wizard, _('msg_clonezilla_advanced_extra_param'))
+        page5 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStopWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clonezilla_stop'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def LocalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_local'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RebootWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_reboot'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ShutdownWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_shutdown'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+	    wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def WakeOnLANWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_Wake_on_LAN'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'Wake-on-LAN'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchPXEMenuWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_switch_pxe_menu'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = SwitchPXEMenuPage1(wizard, _('msg_choose_the_action'))
+        page4 = SwitchPXEMenuPage2(wizard, _('msg_hide_reveal'))
+	page5 = SwitchPXEMenuPage3(wizard, _('msg_setdefault_pxe_menu'))
+        page6 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchPXEModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_switch_pxe_bg_mode'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = SwitchPXEModePage(wizard, _('msg_switch_pxe_bg_mode'))
+        page4 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def DRBLModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_drbl_mode_switch'), pos = (500,200))
+
+        page1 = DRBLModePage(wizard, _('msg_drbl_mode_switch'))
+        page2 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,330))
+
+        page1.SetNext(page2)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ClonezillaModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clonezilla_mode_switch'), pos = (500,200))
+
+        page1 = ClonezillaModePage(wizard, _('msg_clonezilla_mode_switch'))
+        page2 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def GenTemplateFileWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_gen_template_files'), pos = (500,200))
+
+        page1 = FinalPage(wizard, _('msg_done'))
+	FinalCommand.SetLabel('/opt/drbl/sbin/gen_ssi_files')
+	CommandLog.WriteText(os.popen('sudo /opt/drbl/sbin/gen_ssi_files').read())
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def LoginSwitchWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_login_switch'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+	page3 = LoginSwitchPage(wizard, _('msg_login_switch'))
+        page4 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ClientReAutoLoginWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_client_reautologin'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-client-reautologin'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def CleanAutoLoginAccountWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clean_autologin_account'), pos = (500,200))
+
+        page1 = FinalPage(wizard, _('msg_done'))
+	FinalCommand.SetLabel('/opt/drbl/sbin/drbl-clean-autologin-account')
+	CommandLog.WriteText(os.popen('yes y | sudo /opt/drbl/sbin/drbl-clean-autologin-account').read())
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ResetAutoLoginAccountWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_reset_autologin_account'), pos = (500,200))
+
+        page1 = FinalPage(wizard, _('msg_done'))
+	FinalCommand.SetLabel('/opt/drbl/sbin/drbl-user-env-reset --auto-login')
+	CommandLog.WriteText(os.popen('yes y | sudo /opt/drbl/sbin/drbl-user-env-reset --auto-login').read())
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchDRBLServWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_switch_drbl_service'), pos = (500,200))
+
+        page1 = SwitchDRBLServPage(wizard, _('msg_switch_drbl_service'))
+        page2 = FinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ReDeployWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_re_deploy'), pos = (500,200))
+
+        page1 = FinalPage(wizard, _('msg_done'))
+	FinalCommand.SetLabel('/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf')
+	CommandLog.WriteText(os.popen('yes y | sudo /opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf').read())
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def CleanDHCPLeaseWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clean_dhcpd_lease'), pos = (500,200))
+
+        page1 = FinalPage(wizard, _('msg_done'))
+        FinalCommand.SetLabel('/opt/drbl/sbin/clean-dhcpd-lease')
+        CommandLog.WriteText(os.popen('sudo /opt/drbl/sbin/clean-dhcpd-lease').read())
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def Regenerate3NWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_regenerate_nfs_nis_nat_config'), pos = (500,200))
+
+        page1 = FinalPage(wizard, _('msg_done'))
+        FinalCommand.SetLabel('/opt/drbl/sbin/drbl-3n-conf generate')
+        CommandLog.WriteText(os.popen('sudo /opt/drbl/sbin/drbl-3n-conf generate').read())
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------------------------------------------------
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame()
+    frame.Centre()
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/backup/old_langs/trans.py
===================================================================
--- drbl_ui/backup/old_langs/trans.py	(revision 20)
+++ drbl_ui/backup/old_langs/trans.py	(revision 20)
@@ -0,0 +1,46 @@
+import wx
+import os
+import sys
+
+i = j = 0
+f = open(sys.argv[1],'r')
+os.system("sudo rm -rf pofile")
+po = open(sys.argv[1]+'.po','w')
+po.write('msgid \"\"\n')
+po.write('msgstr \"\"\n')
+po.write('\"Project-Id-Version: PACKAGE VERSION\\n"\n')
+po.write('\"POT-Creation-Date: 2006-11-04 09:59+CST\\n"\n')
+po.write('\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"\n')
+po.write('\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"\n')
+po.write('\"Language-Team: LANGUAGE <LL@li.org>\\n"\n')
+po.write('\"MIME-Version: 1.0\\n"\n')
+po.write('\"Content-Type: text/plain; charset=utf8\\n"\n')
+po.write('\"Content-Transfer-Encoding: cp936\\n"\n')
+po.write('\"Generated-By: pygettext.py 1.5\\n"\n\n')
+
+tokens2=[]
+content = f.read()
+tokens=('%s' % content).split('\n')
+#print tokens[548]
+#print len(tokens)
+
+for i in range(0,(len(tokens)-1)):
+    tokens2.append(tokens[i].split('=')[0])
+    tokens2.append(tokens[i].split('=')[1])
+
+for j in range(0,(2*(len(tokens)-1))):
+    if j == 0:
+	po.write('msgid ')
+        po.write('\'%s\'\n' % tokens2[j])
+    elif j ==1:
+        po.write('msgstr ')
+        po.write('%s\n\n' % tokens2[j])
+    elif j%2 ==0:
+	po.write('msgid ')
+        po.write('\'%s\'\n' % tokens2[j])
+    else:
+        po.write('msgstr ')
+        po.write('%s\n\n' % tokens2[j])
+
+f.close()
+po.close()
Index: drbl_ui/backup/old_langs/tw.UTF-8
===================================================================
--- drbl_ui/backup/old_langs/tw.UTF-8	(revision 20)
+++ drbl_ui/backup/old_langs/tw.UTF-8	(revision 20)
@@ -0,0 +1,532 @@
+msg_delimiter_star_line='*****************************************************'
+msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+msg_OS_version='你的作業系統版本'
+msg_is_not_supported='DRBL 不支援這個版本，程式結束!'
+msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+msg_set_proxy='你要設定代理伺服器嗎?'
+msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+msg_http_proxy_port='請輸入 HTTP 代理伺服器的連接埠: '
+msg_ftp_proxy_server='請輸入 FTP 代理伺服器的位址: '
+msg_ftp_proxy_port='請輸入 FTP 代理伺服器的連接埠: '
+msg_http_proxy_you_set='你設定的 HTTP 代理伺服器是: '
+msg_ftp_proxy_you_set='你設定的 FTP 代理伺服器是: '
+msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva與OpenSuSE)到本身的硬碟中? (假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y)'
+msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+msg_serial_console_only='用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+msg_redirect_to_which_port='請輸入要使用的序列埠(Serial Port)?'
+msg_serial_console_speed='您的序列終端機速度是多少?'
+msg_serial_console_parameter='請輸入序列終端機的參數'
+msg_smp_clients='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+msg_smp_clients_MDK='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='安裝 APT ...'
+msg_no_wget_get_it='沒有 wget 程式? 嘗試安裝 wget 程式...'
+msg_no_apt_get_it='沒有 apt 程式? 嘗試安裝 apt 程式...'
+msg_wget_installed_failure='未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+msg_wget_installed_successful='wget程式安裝成功!'
+msg_apt_already_installed='apt 已經安裝了. 神奇!!! 你真是優秀!'
+msg_backup_apt_sources='備份原來的 apt 來源檔(sources.list) ...'
+msg_setup_apt_sources_MDK='為 MDK 設定 apt 的來源檔(sources.list)'
+msg_enjoy_apt='現在開始享用 APT!'
+msg_clean_apt_cache='清除apt的快取檔案...'
+msg_check_apt_integrity='套件完整性檢查...'
+msg_upgrade_system_question='你是否要升級你的作業系統?'
+msg_upgrade_whole_system='升級作業系統中...'
+msg_check_installed_kernel='檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+msg_is_already_installed='已經被安裝在您的系統中...'
+msg_need_to_install_kernel='我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+msg_create_nbi_files='產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+msg_latest_kernel_for_clients='用戶端電腦使用的最新核心是'
+msg_no_drbl_script='你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+msg_create_files_for_PXELINUX='建立PXE網路開機的設定檔...'
+msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+msg_press_enter_to_continue='按 Enter 鍵繼續...'
+msg_press_enter_to_exit='按 Enter 鍵結束...'
+msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+msg_program_stop='程式停止!'
+msg_remove_SmallLinuxs_question='如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+msg_remove_drbl_setup_question='你是否要移除DRBL這個程式?'
+msg_remove_apt_question='你是否要移除 apt ?'
+msg_remove_yum_repo_question='你是否要清除yum的來源設定檔?'
+msg_remove_urpmi_media_question='你是否要清除 urpmi的來源設定檔?'
+msg_cleaning_apt_cache='正在清除 apt 的快取檔案...'
+msg_cleaning_tftpboot_and_misc='移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+msg_uninstalling_DRBL_RH='移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_MDK='移除 Mandrake Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_DBN='移除 Debian Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_SUSE='移除 SuSE Linux 上的 DRBL 套件中...'
+msg_analyzing_rpm_info='分析已安裝套件資訊中... 這可能需要幾分鐘...'
+msg_failed_to_install_pkgs='安裝程式失敗，無法繼續執行!'
+msg_check_network_and_url='請檢查您的電腦和這個網址(URL)間的連線狀況：'
+msg_not_determine_OS='無法判斷 Linux 作業系統的種類與版本!!!'
+msg_enter_OS_ver='請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='正在清除 apt 的快取檔案...'
+msg_install_DRBL_necesary_files='安裝 DRBL 所需之相關程式...'
+msg_select_url_path='你選擇的伺服器網址(URL)與路徑'
+msg_drbl_driver='您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+msg_smp_optimization_kernel='您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+msg_apt_optimization_question='您用戶端的電腦要使用哪個等級CPU的核心?'
+msg_optimization_level_0='0 -> 使用i386 CPU等級架構'
+msg_optimization_level_1='1 -> 使用i586 CPU等級架構'
+msg_optimization_level_2='2 -> 使用與此DRBL伺服器同等級CPU的核心'
+msg_N_note='注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+msg_different_level_machine_prompt='如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+msg_diff_arch_explain='如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+msg_not_sure_better_1='如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+msg_same_optimization='您選用與伺服器同等級的 CPU 最佳化.'
+msg_i586_optimization='你選用 i586 架構的 CPU 最佳化.'
+msg_no_optimization='你未選用 CPU 最佳化，預設使用 i386 架構.'
+msg_glibc_openssl_upgrade_question='如果 glibc 與 openssl 有較新版本，是否要升級?'
+msg_glibc_openssl_keep='0 -> 不升級 glibc 與 openssl.'
+msg_keep_glibc_upgrade_openssl='1 -> 只升級 openssl,'
+msg_upgrade_glibc_keep_openssl='2 -> 只升級 glibc,'
+msg_upgrade_glibc_openssl='3 -> 升級 glibc 與 openssl (預設),'
+msg_warning_glibc_upgrade='警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+msg_upgrade_glibc_make_you_cry='為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+msg_install_dhcp_tftp_etc='正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='啟用與伺服器同等級 CPU 最佳化.'
+msg_optimization_is_off='未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+msg_install_i386_of='安裝 i386 架構的'
+msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
+msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='移除舊的'
+msg_creating_dev='產生用戶端電腦的設備檔案...'
+msg_get_dev='擷取設備檔案...'
+msg_clean_tmp_dev='清除設備檔案的暫存目錄...'
+msg_remove_old_nbi='移除 /tftpboot 中舊的 nbi 檔案...'
+msg_install_extra_driver='安裝額外的驅動程式...'
+msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+msg_make_client_serial_console='建立用戶端序列終端機設定...'
+msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+msg_not_remove='請在下個步驟回答"N"!'
+msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+msg_do_u_want_to_remove='你要移除嗎？'
+msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+msg_rm_apt='正在移除 apt 與 libapt-pkg0...'
+msg_search_kernel_in_ayo='在 ayo 資料庫中尋找最新的'
+msg_latest_kernel_in_ayo='在 ayo 資料庫中,最新的核心是'
+msg_install_kernel_might_take_several_minutes='安裝這個核心可能需要一些時間，請耐心等候... '
+msg_latest_kernel_is_already_installed='給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+msg_error_no_drbl_kernel_in_apt='在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+msg_change_opt_from_i386_to_i586='由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+msg_change_opt_from_i586_to_i386='由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+msg_are_you_sure_run_impatient='這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+msg_run_step_by_step='很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+msg_run_drbl4imp='好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+msg_total_avail_space='系統可以提供的空間(/tftpboot與/)有'
+msg_necessary_space_setup_drbl='估計安裝DRBL需要的空間是'
+msg_total_client_no='DRBL用戶端的總數目是'
+msg_system_maybe_not_enough_space='你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+msg_logout_X_for_thin_client_gdm='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+msg_restart_X_for_thin_client_kdm='你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+msg_logout_X_for_modified_gdm_config_work='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+msg_logout_X_for_modified_kdm_config_work='你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+msg_restart_graphic_mode_later='你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+msg_turn_on_gdm_remote_access='開放GDM遠端連線...'
+msg_gdm_remote_access_is_already_on='DRBL伺服器中的GDM遠端連線已經開啟!'
+msg_set_thin_client_mode_for_clients='正在設定終端機模式給用戶端電腦來使用...'
+msg_gdm_remote_access_is_already_off='DRBL伺服器中的GDM遠端連線已經關閉!'
+msg_disable_thin_client_mode_for_clients='關閉用戶端的終端機模式!'
+msg_turn_off_gdm_remote_access='關閉GDM遠端連線...'
+msg_kdm_remote_access_is_already_on='DRBL伺服器中的KDM遠端連線已經開啟!'
+msg_turn_off_kdm_remote_access='開放KDM遠端連線...'
+msg_kdm_remote_access_is_already_off='DRBL伺服器中的KDM遠端連線已經關閉!'
+msg_dm_in_DRBL_server='DRBL伺服器中的圖形顯示管理程式(display manager)是'
+msg_hint_for_answer='提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+msg_available_kernel='可用的核心有'
+msg_which_os_ayo_repository='請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+msg_win_fail_with_Missing_OS='如果你還原的是M$ Windows系統，還原後使用M$ Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+msg_drbl_title='企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+msg_switch_client_mode='切換模式'
+msg_remote_linux='用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+msg_remote_linux_graphic='用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+msg_remote_linux_text='用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+msg_thin_client='用戶端遠距開機Linux圖形介面,終端機模式'
+msg_remote_memtest='用戶端遠距開機做記憶體測試(Memtest86+)'
+msg_remote_fdos='用戶端遠距開機使用自由DOS(FreeDOS)'
+msg_clonezilla_start='啟動再生龍(clonezilla)模式'
+msg_clonezilla_stop='停止再生龍(clonezilla)模式'
+msg_netinstall='用戶端經由網路安裝Linux套件'
+msg_local='用戶端使用本機作業系統開機'
+msg_reboot='現在重新啟動用戶端電腦'
+msg_shutdown='現在關閉用戶端電腦'
+msg_Wake_on_LAN='現在利用Wake-on-LAN開啟用戶端電腦'
+msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+msg_title_set_all_clients='設定所有的用戶端機器?'
+msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
+msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+msg_choose_the_action='選擇動作為'
+msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+msg_reveal_pxe_menus='顯示用戶端電腦某些已經被隱藏的開機選單'
+msg_setdefault_pxe_menu='設定用戶端電腦的開機預設選單'
+msg_title_hide='隱藏用戶端電腦的那一個開機選單?'
+msg_hide_list_des='隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+msg_reveal_title='顯示用戶端電腦的那一個開機選單?'
+msg_reveal_list_des='顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+msg_setdefault_title='哪一個是用戶端電腦的開機預設選單?'
+msg_setdefault_list_des='選定用戶端電腦開機時的預設選單'
+msg_choose_netinstall_imag='選擇要經由網路安裝的Linux套件'
+msg_nchc_clonezilla='再生龍(Clonezilla) - 開放原始碼再生還原系統'
+msg_nchc_drbl='企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+msg_nchc_free_software_labs='再生龍 - 國網中心自由軟體實驗室 - 台灣'
+msg_specify_hosts='指定用戶端機器'
+msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+msg_ocs_param_c='用戶端電腦在開始複製前會再次確認是否要執行'
+msg_ocs_param_s='用戶端電腦開機時略去硬體偵測'
+msg_ocs_param_f='當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+msg_ocs_param_j='使用sfdisk來產生分割區而不用dd'
+msg_ocs_param_j0='使用dd來產生分割區而不用sfdisk'
+msg_ocs_param_k='不在用戶端電腦硬碟再產生分割區'
+msg_ocs_param_t='用戶端電腦不再復原MBR (Mater Boot Record)'
+msg_ocs_param_e='用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+msg_ocs_param_y='伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+msg_ocs_param_y0='伺服器將總是提供再生模式給用戶端-預設本機開機'
+msg_ocs_param_y1='伺服器將總是提供再生模式給用戶端-預設是還原'
+msg_ocs_param_y2='伺服器將總是提供再生模式給用戶端-預設是DRBL'
+msg_ocs_param_z0='不壓縮(最快但是最大的印象檔)'
+msg_ocs_param_z1='使用gzip壓縮(快速但是較小的印象檔)'
+msg_ocs_param_z2='使用bzip2壓縮(最慢但是最小的印象檔)'
+msg_ocs_param_z3='使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+msg_ocs_param_g_auto='用戶端電腦重新在它的硬碟的MBR中安裝grub'
+msg_ocs_param_p_true='用戶端複製完畢時不做其他任何動作'
+msg_ocs_param_p_poweroff='用戶端複製完畢後關機'
+msg_ocs_param_p_reboot='用戶端複製完畢後重新開機'
+msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+msg_ocs_param_o="用戶端複製後執行目錄$POST_RUN_DIR下的執行檔"
+msg_ocs_param_hn0='復原後修改用戶端硬碟中的M$ win主機名稱(基於IP位址)'
+msg_ocs_param_hn1='復原後修改用戶端硬碟中的M$ win主機名稱(基於MAC位址)'
+msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+msg_ocs_param_r='還原結束後調整分割區大小(印象檔放到大於原來分割區用)'
+msg_ocs_param_x='在群播還原時使用全雙工網路'
+msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+msg_ocs_param_skip='不選用此選項'
+msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
+msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n 可用的參數有: \n'
+msg_no_network_installation_img='找不到網路安裝的印象檔!'
+msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+msg_start_clonezilla_mode='啟動再生龍模式'
+msg_choose_mode='選定模式'
+msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+msg_clonezilla_restore_disk='還原用戶端電腦的整個硬碟'
+msg_clonezilla_save_parts='儲存用戶端電腦的硬碟分割區'
+msg_clonezilla_restore_parts='還原用戶端電腦的硬碟分割區'
+msg_clonezilla_save_hda1='儲存用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_restore_hda1='還原用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_selec_in_client='在用戶端選擇儲或還原(限點播模式)'
+msg_choose_the_mode_to_restore_disk='選擇還原用戶端電腦的整個硬碟時的模式'
+msg_choose_the_mode_to_restore_parts='選擇還原用戶端電腦的硬碟分割區時的模式'
+msg_choose_the_mode_to_restore_hda1='選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+msg_abandon_hda1='注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+msg_unicast_restore='點播還原(unicast)'
+msg_multicast_restore='群播還原(multicast)'
+msg_choose_the_image_to_restore='選擇印象檔來做還原'
+msg_time_to_wait='設定時間來等待用戶端電腦開始複製'
+msg_clients_to_wait='直接設定用戶端電腦的數量來複製'
+msg_clients_time_to_wait='設定用戶端數量來複製，並且給定最長等待時間'
+msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議大於或等於$SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='你必須輸入一個名稱'
+msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+msg_you_must_input_partition='你必須輸入一個分割區'
+msg_please_do_it_again='請再做一次'
+msg_choose_the='選擇這個'
+msg_to_save='來存(只顯示未被掛載的)'
+msg_the_image='這個印象檔名稱'
+msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+msg_do_you_want_to_replace='你是否要覆蓋它'
+ms_choose_disks_to_save='選擇硬碟來儲存(只顯示未被掛載的分割區)'
+ms_choose_parts_to_save='選擇分割區來儲存(只顯示未被掛載的硬碟)'
+msg_choose_the_disks_to_restore='選擇硬碟來還原'
+msg_choose_the_parts_to_restore='選擇分割區來還原'
+msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份硬碟,該硬碟必須不能被掛載中!'
+msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份分割區,該分割區必須不能被掛載中!'
+msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+msg_no_modification='略去任何修改'
+msg_install_via_network='經由網路安裝'
+msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(大於或等於2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+msg_restart_drbl_all_services='重新啟動DRBL伺服器中的DRBL相關服務'
+msg_add_drbl_all_services='加上DRBL伺服器中的所有DRBL相關服務'
+msg_del_drbl_all_services='移除DRBL伺服器中的所有DRBL相關服務'
+msg_choose_action='選擇動作為'
+msg_login_switch='切換DRBL客戶端機器的圖形介面登入模式'
+msg_normal_login='一般登入(要求使用者輸入帳號密碼來登入)'
+msg_auto_login='自動登入'
+msg_timed_login='限時登入'
+msg_turn_on_client_to_make_template='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+msg_turn_on_client_to_clone='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+msg_turn_on_client_to_select_clone_type='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+msg_client_job_are_logged_in='用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+msg_client_sfdisk_log_are_in='用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+msg_set_the_clients_root_passwd='設定用戶端管理者(root)密碼'
+msg_new_passwd_prompt='輸入新的密碼: (螢幕上只會出現星號*)'
+msg_do_you_want_set_yum_repo='你要不要自己選yum的儲藏庫?'
+msg_set_yum_conf_yes_prompt='如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+msg_set_yum_conf_no_prompt='如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+msg_need_lynx_to_parse_config='需要lynx來判斷相關的網址，現在安裝lynx...'
+msg_need_curl_etc_to_parse_config='需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+msg_try_to_update_some_pkgs='如果找到新版的程式，嘗試升級某些需要的程式...'
+msg_force_to_upgrade_some_pkgs='嘗試強迫升級某些程式...'
+msg_install_net_install_images='安裝某些Linux套件的網路安裝印象檔...'
+msg_clean_dhcpd_lease='強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+msg_client_reautologin='強迫用戶端重新自動登入' 
+msg_clean_autologin_account='移除所有自動登入帳號(全部機器)'
+msg_reset_autologin_account='還原所有自動登入的環境為初始預設(全部機器)'
+msg_re_deploy='把伺服器的檔案更新到用戶端中(全部機器)'
+msg_dcs_others='其他模式或是指令'
+msg_dcs_more_modes='更多其他模式或是指令'
+msg_2_kernel_availables='有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+msg_from_this_drbl_server='來自於這台DRBL伺服器'
+msg_from_apt_repository='來自於apt的儲藏庫'
+msg_from_ayo_repository='來自於apt或是yum的儲藏庫'
+msg_install_kernel_for_clients='安裝用戶端電腦所需的核心'
+msg_which_kernel_do_you_perfer='你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+msg_you_choose='你選擇'
+msg_chosen_kernel='選定的核心為'
+msg_not_available_enter_again='找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+msg_hosts_allow_deny_is_set='警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='你必須確認這些用戶端的電腦:'
+msg_can_access_this_DRBL_server='可以連接到這台DRBL伺服器!'
+msg_otherwise_client_fail_to_boot='否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+msg_do_not_create_part='用戶端不再產生硬碟分割表!'
+msg_do_not_restore_mbr='用戶端不再復原MBR!'
+msg_you_have_to_input_image_names_in_client='在用戶端的電腦選擇還原的印象檔!'
+msg_title_input_save_image_name_in_server='現在輸入印象檔與範本裝置名稱 ?'
+msg_ask_if_input_save_image_name_in_server='你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+msg_input_image_name='輸入一個名稱來存這個印象檔:'
+msg_input_device_name='複製範本機中的那個裝置 ?'
+msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='在目的碟產生分割區...'
+msg_partition_table_for_target_dev='目的碟分割區的表'
+msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+msg_are_u_sure_u_want_to_continue='你確認要繼續執行 ?'
+msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+msg_different_type_of_input_devs='你輸入的裝置兩者屬於不同類型'
+msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
+msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
+msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+msg_now_run_this_cmd_in_target_machine='現在你可以在目的機器上執行類似這樣的指令來開始複製'
+msg_this_is_for_source_machine='這是在來源機器上執行'
+msg_this_is_for_target_machine='這是在目的機器上執行'
+msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+msg_then_reboot_this_server='然後把這台電腦重新開機，以便使用新的核心。'
+msg_make_audio_open='開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_audio_close='不開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_plugdev_open='開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_make_plugdev_close='不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_restart_prompt_for_audio='因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+msg_restart_prompt_for_plugdev='因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+msg_restart_prompt_for_dev='因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+msg_run_update_plugdev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+msg_run_update_dev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+msg_no_autologin_account='未找到自動登入帳號'
+msg_are_you_sure_reset_autologin_home_dir='你確認你要將自動登入帳號的環境重設為初始預設狀態'
+msg_warning_home_dir_will_be_deleted='警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+msg_these_accounts_are='這些帳號是'
+msg_ok_let_do_it='OK, 我們繼續做吧!'
+msg_do_not_reset_autologin_home_dir='不要重設自動登入帳號的家目錄'
+msg_created_autologin_ID_passwd_file="產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+msg_drbl_clonezilla_switch='切換企鵝龍單一系統印象檔與再生龍模式'
+msg_drbl_mode_switch='切換企鵝龍機制'
+msg_drbl_mode_switch_long="有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+msg_drbl_mode_0='使用完全企鵝龍模式'
+msg_drbl_mode_1='使用企鵝龍單一系統印象檔模式'
+msg_drbl_mode_2='不提供無碟GNU/Linux服務'
+msg_clonezilla_mode_switch='切換再生龍機制'
+msg_clonezilla_mode_switch_long='本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+msg_clonezilla_mode_0='使用完全再生龍模式'
+msg_clonezilla_mode_1='使用再生龍盒模式'
+msg_clonezilla_mode_2='不提供再生龍服務'
+msg_r_u_sure_want_to_del_autologin_accounts='你確認要移除這些自動登入帳號?'
+msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+msg_do_not_del_accounts='不要移除這些帳號'
+msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/dcs來切換。"
+msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+msg_wol_3='3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+msg_wol_4="4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+msg_no_kernel_rpm_is_available='無法在這些地方找到核心的RPM檔:'
+msg_internet_connection='1. 你的網際網路連線正常。'
+msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+msg_enter_1_or_press_enter_to_view='輸入<1>或是按<Enter>鍵來看目前收集的狀態。'
+msg_enter_2_or_press_q_to_quit='輸入<2>或是<q>來結束收集。'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+msg_What_the_win_hostname_prefix='所還原的M$ windows主機名稱的前置名稱是'
+msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 M$ Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 M$ Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在M$ WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+msg_install_glibc_etc_arch_by_yourself='如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+msg_prepare_kernel_for_clients='準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+msg_some_necessary_pkgs_not_installed='警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+msg_reset_all_existing_urpmi_setting='警告! 我們必須重新設定目前系統中的urpmi!'
+msg_some_required_pkgs_not_installed='這些必要的程式並沒有安裝'
+msg_use_drblsrv_instead="如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+msg_continue_may_not_work='如果你繼續的話，這個DRBL系統可能無法正常運作!'
+msg_switch_pxe_bg_mode='切換用戶端電腦PXE開機選單模式'
+msg_pxemenu_text='用戶端使用文字模式的開機選單'
+msg_pxemenu_graphic='用戶端使用圖形模式的開機選單'
+msg_only_one_kernel_meets_requirement='只有一個核心符合你設定的條件'
+msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd -h\"來得知。"
+msg_this_might_take_several_minutes='這可能會需要一點時間...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+msg_ocs_iso_too_big_for_DVD='要產生的ISO檔太大，無法放到一片DVD上.'
+msg_unable_to_create_clonezilla_img_iso='無法產生這個再生龍還原專用光碟'
+msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用'makeboot.exe' (在M$ windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，在來就可以用它來開機使用DRBL"
+msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+msg_format_as_FAT_16_32='如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+msg_this_is_disk_usage_status='這是磁碟的使用狀態'
+msg_boot_clonezilla_live_dev='現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+msg_clone_finished_choose_to='下一步要'
+msg_enter_cml='進入命令列'
+msg_clonezilla_is_free_and_no_warranty='**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
+msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+msg_if_src_part_is_ntfs='如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你存完印象檔，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的，例如USB隨身碟，有可能該裝置下次會無法開機!'
+msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+msg_to_see_this_ocs_live_help_msg='注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+msg_image_source_for_ocs_live="如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+msg_modify_grub_config_if_necessary="你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+msg_this_script_will_create_SL_diskless='這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+msg_RAM_size_for_SL_drbl_client='建議你的用戶端電腦的記憶體最少要'
+msg_image_saved_from_dd='這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+msg_cons_for_dd_clone='使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+msg_will_be_inefficent_and_slow='這樣將會非常沒有效率，而且可能需要很久的時間'
+msg_fs_not_supported_by_partimage_ntfsclone='這個檔案系統partimage或是ntfsclone並不支援'
+msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+msg_text_Enter='輸入'
+msg_text_for='對於'
+msg_Got_it='找到了'
+msg_Warning='警告'
+msg_uppercase_Warning='警告'
+msg_NOT_found='未找到'
+msg_Done='完成'
+msg_please='請'
+msg_browse='瀏覽'
+msg_or='或是'
+msg_for_more_details='更詳細的資料'
+msg_Failed_to_get='未能抓取'
+msg_Failed_to_install='未能安裝'
+msg_done='完成'
+msg_note='注意'
+msg_and='與'
+msg_clonezilla='再生龍'
+msg_error='錯誤'
+msg_restore='還原'
+msg_txt_check='檢查'
+msg_ex='例如'
+msg_exit='退出'
+msg_poweroff='關機'
+msg_reboot='重新開機'
+msg_then='然後'
Index: drbl_ui/backup/old_langs/tw.UTF-8.po
===================================================================
--- drbl_ui/backup/old_langs/tw.UTF-8.po	(revision 20)
+++ drbl_ui/backup/old_langs/tw.UTF-8.po	(revision 20)
@@ -0,0 +1,1605 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2006-11-04 09:59+CST\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf8\n"
+"Content-Transfer-Encoding: cp936\n"
+"Generated-By: pygettext.py 1.5\n"
+
+msgid 'msg_delimiter_star_line'
+msgstr '*****************************************************'
+
+msgid 'msg_install_RH'
+msgstr '在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_MDK'
+msgstr '在 Mandrake Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_DBN'
+msgstr '在 Debian Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_SUSE'
+msgstr '在 SuSE Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_OS_version'
+msgstr '你的作業系統版本'
+
+msgid 'msg_is_not_supported'
+msgstr 'DRBL 不支援這個版本，程式結束!'
+
+msgid 'msg_press_ctrl_c_stop'
+msgstr '請按 Ctrl-C 來中斷程式!'
+
+msgid 'msg_set_proxy'
+msgstr '你要設定代理伺服器嗎?'
+
+msgid 'msg_http_proxy_server'
+msgstr '請輸入 HTTP 代理伺服器的位址: '
+
+msgid 'msg_http_proxy_port'
+msgstr '請輸入 HTTP 代理伺服器的連接埠: '
+
+msgid 'msg_ftp_proxy_server'
+msgstr '請輸入 FTP 代理伺服器的位址: '
+
+msgid 'msg_ftp_proxy_port'
+msgstr '請輸入 FTP 代理伺服器的連接埠: '
+
+msgid 'msg_http_proxy_you_set'
+msgstr '你設定的 HTTP 代理伺服器是: '
+
+msgid 'msg_ftp_proxy_you_set'
+msgstr '你設定的 FTP 代理伺服器是: '
+
+msgid 'msg_drbl_test_option'
+msgstr '你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+
+msgid 'msg_drbl_unstable_option'
+msgstr '你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+
+msgid 'msg_drbl_extra_option'
+msgstr '你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+
+msgid 'msg_drbl_netinstall_option'
+msgstr '你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva與OpenSuSE)到本身的硬碟中? (假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y)'
+
+msgid 'msg_firefly_option'
+msgstr '你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+
+msgid 'msg_serial_console_option'
+msgstr '你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+
+msgid 'msg_know_nothing_serial_console'
+msgstr '如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+
+msgid 'msg_serial_console_only'
+msgstr '用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+
+msgid 'msg_redirect_to_which_port'
+msgstr '請輸入要使用的序列埠(Serial Port)?'
+
+msgid 'msg_serial_console_speed'
+msgstr '您的序列終端機速度是多少?'
+
+msgid 'msg_serial_console_parameter'
+msgstr '請輸入序列終端機的參數'
+
+msgid 'msg_smp_clients'
+msgstr '用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+
+msgid 'msg_smp_clients_MDK'
+msgstr '用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+
+msgid 'msg_smp_clients_RH'
+msgstr "$msg_smp_clients"
+
+msgid 'msg_install_apt'
+msgstr '安裝 APT ...'
+
+msgid 'msg_no_wget_get_it'
+msgstr '沒有 wget 程式? 嘗試安裝 wget 程式...'
+
+msgid 'msg_no_apt_get_it'
+msgstr '沒有 apt 程式? 嘗試安裝 apt 程式...'
+
+msgid 'msg_wget_installed_failure'
+msgstr '未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+
+msgid 'msg_wget_installed_successful'
+msgstr 'wget程式安裝成功!'
+
+msgid 'msg_apt_already_installed'
+msgstr 'apt 已經安裝了. 神奇!!! 你真是優秀!'
+
+msgid 'msg_backup_apt_sources'
+msgstr '備份原來的 apt 來源檔(sources.list) ...'
+
+msgid 'msg_setup_apt_sources_MDK'
+msgstr '為 MDK 設定 apt 的來源檔(sources.list)'
+
+msgid 'msg_enjoy_apt'
+msgstr '現在開始享用 APT!'
+
+msgid 'msg_clean_apt_cache'
+msgstr '清除apt的快取檔案...'
+
+msgid 'msg_check_apt_integrity'
+msgstr '套件完整性檢查...'
+
+msgid 'msg_upgrade_system_question'
+msgstr '你是否要升級你的作業系統?'
+
+msgid 'msg_upgrade_whole_system'
+msgstr '升級作業系統中...'
+
+msgid 'msg_check_installed_kernel'
+msgstr '檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+
+msgid 'msg_is_already_installed'
+msgstr '已經被安裝在您的系統中...'
+
+msgid 'msg_need_to_install_kernel'
+msgstr '我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+
+msgid 'msg_create_nbi_files'
+msgstr '產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+
+msgid 'msg_latest_kernel_for_clients'
+msgstr '用戶端電腦使用的最新核心是'
+
+msgid 'msg_no_drbl_script'
+msgstr '你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+
+msgid 'msg_create_files_for_PXELINUX'
+msgstr '建立PXE網路開機的設定檔...'
+
+msgid 'msg_prepare_files_for_PXE_client'
+msgstr '備妥PXE網路開機用戶端的設定檔與印象檔...'
+
+msgid 'msg_PXE_NOT_work'
+msgstr 'PXE 網路開機無法使用!!!'
+
+msgid 'msg_press_enter_to_continue'
+msgstr '按 Enter 鍵繼續...'
+
+msgid 'msg_press_enter_to_exit'
+msgstr '按 Enter 鍵結束...'
+
+msgid 'msg_FreeDOS_NOT_work'
+msgstr 'FreeDOS 遠端開機無法使用!!!'
+
+msgid 'msg_no_apt_already_uninstall'
+msgstr '找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+
+msgid 'msg_program_stop'
+msgstr '程式停止!'
+
+msgid 'msg_remove_SmallLinuxs_question'
+msgstr '如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+
+msgid 'msg_remove_drbl_setup_question'
+msgstr '你是否要移除DRBL這個程式?'
+
+msgid 'msg_remove_apt_question'
+msgstr '你是否要移除 apt ?'
+
+msgid 'msg_remove_yum_repo_question'
+msgstr '你是否要清除yum的來源設定檔?'
+
+msgid 'msg_remove_urpmi_media_question'
+msgstr '你是否要清除 urpmi的來源設定檔?'
+
+msgid 'msg_cleaning_apt_cache'
+msgstr '正在清除 apt 的快取檔案...'
+
+msgid 'msg_cleaning_tftpboot_and_misc'
+msgstr '移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+
+msgid 'msg_uninstalling_DRBL_RH'
+msgstr '移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_MDK'
+msgstr '移除 Mandrake Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_DBN'
+msgstr '移除 Debian Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_SUSE'
+msgstr '移除 SuSE Linux 上的 DRBL 套件中...'
+
+msgid 'msg_analyzing_rpm_info'
+msgstr '分析已安裝套件資訊中... 這可能需要幾分鐘...'
+
+msgid 'msg_failed_to_install_pkgs'
+msgstr '安裝程式失敗，無法繼續執行!'
+
+msgid 'msg_check_network_and_url'
+msgstr '請檢查您的電腦和這個網址(URL)間的連線狀況：'
+
+msgid 'msg_not_determine_OS'
+msgstr '無法判斷 Linux 作業系統的種類與版本!!!'
+
+msgid 'msg_enter_OS_ver'
+msgstr '請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+
+msgid 'msg_clean_apt_cache_RH'
+msgstr '正在清除 apt 的快取檔案...'
+
+msgid 'msg_install_DRBL_necesary_files'
+msgstr '安裝 DRBL 所需之相關程式...'
+
+msgid 'msg_select_url_path'
+msgstr '你選擇的伺服器網址(URL)與路徑'
+
+msgid 'msg_drbl_driver'
+msgstr '您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+
+msgid 'msg_smp_optimization_kernel'
+msgstr '您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+
+msgid 'msg_apt_optimization_question'
+msgstr '您用戶端的電腦要使用哪個等級CPU的核心?'
+
+msgid 'msg_optimization_level_0'
+msgstr '0 -> 使用i386 CPU等級架構'
+
+msgid 'msg_optimization_level_1'
+msgstr '1 -> 使用i586 CPU等級架構'
+
+msgid 'msg_optimization_level_2'
+msgstr '2 -> 使用與此DRBL伺服器同等級CPU的核心'
+
+msgid 'msg_N_note'
+msgstr '注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+
+msgid 'msg_different_level_machine_prompt'
+msgstr '如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+
+msgid 'msg_diff_arch_explain'
+msgstr '如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+
+msgid 'msg_not_sure_better_1'
+msgstr '如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+
+msgid 'msg_same_optimization'
+msgstr '您選用與伺服器同等級的 CPU 最佳化.'
+
+msgid 'msg_i586_optimization'
+msgstr '你選用 i586 架構的 CPU 最佳化.'
+
+msgid 'msg_no_optimization'
+msgstr '你未選用 CPU 最佳化，預設使用 i386 架構.'
+
+msgid 'msg_glibc_openssl_upgrade_question'
+msgstr '如果 glibc 與 openssl 有較新版本，是否要升級?'
+
+msgid 'msg_glibc_openssl_keep'
+msgstr '0 -> 不升級 glibc 與 openssl.'
+
+msgid 'msg_keep_glibc_upgrade_openssl'
+msgstr '1 -> 只升級 openssl,'
+
+msgid 'msg_upgrade_glibc_keep_openssl'
+msgstr '2 -> 只升級 glibc,'
+
+msgid 'msg_upgrade_glibc_openssl'
+msgstr '3 -> 升級 glibc 與 openssl (預設),'
+
+msgid 'msg_warning_glibc_upgrade'
+msgstr '警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+
+msgid 'msg_upgrade_glibc_make_you_cry'
+msgstr '為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+
+msgid 'msg_install_dhcp_tftp_etc'
+msgstr '正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+
+msgid 'msg_optimization_is_on'
+msgstr '啟用與伺服器同等級 CPU 最佳化.'
+
+msgid 'msg_optimization_is_off'
+msgstr '未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+
+msgid 'msg_install_i386_of'
+msgstr '安裝 i386 架構的'
+
+msgid 'msg_searching_glibc_in_ayo'
+msgstr '在 ayo 伺服器中尋找 glibc 程式'
+
+msgid 'msg_searching_openssl_in_ayo'
+msgstr '在 ayo 伺服器中尋找 openssl 程式'
+
+msgid 'msg_searching_openssl_perl_in_ayo'
+msgstr '在 ayo 伺服器中尋找 openssl-perl 程式'
+
+msgid 'msg_install_mkinitrd_net_etherboot'
+msgstr '安裝 mkpxeinitrd-net, etherboot, partimage...'
+
+msgid 'msg_removing_the_old'
+msgstr '移除舊的'
+
+msgid 'msg_creating_dev'
+msgstr '產生用戶端電腦的設備檔案...'
+
+msgid 'msg_get_dev'
+msgstr '擷取設備檔案...'
+
+msgid 'msg_clean_tmp_dev'
+msgstr '清除設備檔案的暫存目錄...'
+
+msgid 'msg_remove_old_nbi'
+msgstr '移除 /tftpboot 中舊的 nbi 檔案...'
+
+msgid 'msg_install_extra_driver'
+msgstr '安裝額外的驅動程式...'
+
+msgid 'msg_no_extra_driver'
+msgstr '在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+
+msgid 'msg_make_client_serial_console'
+msgstr '建立用戶端序列終端機設定...'
+
+msgid 'msg_kernel_being_used'
+msgstr '警告! 這個核心目前正在使用中: '
+
+msgid 'msg_warning_not_to_remove'
+msgstr '警告! 建議您最好不要移除!!!'
+
+msgid 'msg_not_remove'
+msgstr '請在下個步驟回答"N"!'
+
+msgid 'msg_which_ayo_repository'
+msgstr '請選取安裝時欲使用的 ayo 伺服器:'
+
+msgid 'msg_enter_FQDN_IP_yum_repository'
+msgstr '請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+
+msgid 'msg_enter_the_path_for_dir_ver_updates'
+msgstr '請輸入該網址中，以下目錄所在的路徑'
+
+msgid 'msg_os_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw. (預設)'
+
+msgid 'msg_os_ayo_repository_1'
+msgstr '1 -> ayo.freshrpms.net,'
+
+msgid 'msg_os_ayo_repository_3'
+msgstr '3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+
+msgid 'msg_os_ayo_repository_5'
+msgstr '5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+
+msgid 'msg_os_ayo_repository_use_existing_yum_config'
+msgstr '4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+
+msgid 'msg_os_ayo_repository_enter_by_yourself'
+msgstr '5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+
+msgid 'msg_drbl_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw. (預設)'
+
+msgid 'msg_drbl_ayo_repository_1'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_drbl_ayo_repository_3'
+msgstr '3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+
+msgid 'msg_drbl_ayo_repository_5'
+msgstr '5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+
+msgid 'msg_drbl_ayo_repository_enter_by_yourself'
+msgstr '5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+
+msgid 'msg_os_ayo_repository_1_mdk'
+msgstr '1 -> mdk.linux.org.tw,'
+
+msgid 'msg_os_ayo_repository_2_mdk'
+msgstr '2 -> distro.ibiblio.org,'
+
+msgid 'msg_drbl_ayo_repository_1_mdk'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2_mdk'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_apt_not_compatible'
+msgstr '警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+
+msgid 'msg_do_u_want_to_remove'
+msgstr '你要移除嗎？'
+
+msgid 'msg_warning_apt_not_compatible_and_fail'
+msgstr '你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+
+msgid 'msg_rm_apt'
+msgstr '正在移除 apt 與 libapt-pkg0...'
+
+msgid 'msg_search_kernel_in_ayo'
+msgstr '在 ayo 資料庫中尋找最新的'
+
+msgid 'msg_latest_kernel_in_ayo'
+msgstr '在 ayo 資料庫中,最新的核心是'
+
+msgid 'msg_install_kernel_might_take_several_minutes'
+msgstr '安裝這個核心可能需要一些時間，請耐心等候... '
+
+msgid 'msg_latest_kernel_is_already_installed'
+msgstr '給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+
+msgid 'msg_error_no_drbl_kernel_in_apt'
+msgstr '在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+
+msgid 'msg_change_opt_from_i386_to_i586'
+msgstr '由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+
+msgid 'msg_change_opt_from_i586_to_i386'
+msgstr '由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+
+msgid 'msg_are_you_sure_run_impatient'
+msgstr '這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+
+msgid 'msg_run_step_by_step'
+msgstr '很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+
+msgid 'msg_run_drbl4imp'
+msgstr '好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+
+msgid 'msg_total_avail_space'
+msgstr '系統可以提供的空間(/tftpboot與/)有'
+
+msgid 'msg_necessary_space_setup_drbl'
+msgstr '估計安裝DRBL需要的空間是'
+
+msgid 'msg_total_client_no'
+msgstr 'DRBL用戶端的總數目是'
+
+msgid 'msg_system_maybe_not_enough_space'
+msgstr '你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+
+msgid 'msg_logout_X_for_thin_client_gdm'
+msgstr '如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+
+msgid 'msg_restart_X_for_thin_client_kdm'
+msgstr '你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+
+msgid 'msg_logout_X_for_modified_gdm_config_work'
+msgstr '如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+
+msgid 'msg_logout_X_for_modified_kdm_config_work'
+msgstr '你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+
+msgid 'msg_restart_graphic_mode_later'
+msgstr '你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+
+msgid 'msg_turn_on_gdm_remote_access'
+msgstr '開放GDM遠端連線...'
+
+msgid 'msg_gdm_remote_access_is_already_on'
+msgstr 'DRBL伺服器中的GDM遠端連線已經開啟!'
+
+msgid 'msg_set_thin_client_mode_for_clients'
+msgstr '正在設定終端機模式給用戶端電腦來使用...'
+
+msgid 'msg_gdm_remote_access_is_already_off'
+msgstr 'DRBL伺服器中的GDM遠端連線已經關閉!'
+
+msgid 'msg_disable_thin_client_mode_for_clients'
+msgstr '關閉用戶端的終端機模式!'
+
+msgid 'msg_turn_off_gdm_remote_access'
+msgstr '關閉GDM遠端連線...'
+
+msgid 'msg_kdm_remote_access_is_already_on'
+msgstr 'DRBL伺服器中的KDM遠端連線已經開啟!'
+
+msgid 'msg_turn_off_kdm_remote_access'
+msgstr '開放KDM遠端連線...'
+
+msgid 'msg_kdm_remote_access_is_already_off'
+msgstr 'DRBL伺服器中的KDM遠端連線已經關閉!'
+
+msgid 'msg_dm_in_DRBL_server'
+msgstr 'DRBL伺服器中的圖形顯示管理程式(display manager)是'
+
+msgid 'msg_hint_for_answer'
+msgstr '提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+
+msgid 'msg_available_kernel'
+msgstr '可用的核心有'
+
+msgid 'msg_which_os_ayo_repository'
+msgstr '請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_which_drbl_ayo_repository'
+msgstr '請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_os_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw,'
+
+msgid 'msg_os_ayo_repository_1'
+msgstr '1 -> ayo.freshrpms.net,'
+
+msgid 'msg_os_ayo_repository_download_fedora_redhat_com'
+msgstr '1 -> download.fedora.redhat.com,'
+
+msgid 'msg_which_drbl_ayo_repository'
+msgstr '請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_drbl_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_1'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_drbl_server_is_ready'
+msgstr 'DRBL伺服器已經就緒!'
+
+msgid 'msg_all_set_you_can_turn_on_clients'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+
+msgid 'msg_etherboot_5_4_is_required'
+msgstr '如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+
+msgid 'msg_win_fail_with_Missing_OS'
+msgstr '如果你還原的是M$ Windows系統，還原後使用M$ Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+msgid 'msg_nchc_title'
+msgstr 'NCHC - 國家高速網路與計算中心 - 台灣'
+
+msgid 'msg_drbl_title'
+msgstr '企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+
+msgid 'msg_switch_client_mode'
+msgstr '切換模式'
+
+msgid 'msg_remote_linux'
+msgstr '用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+
+msgid 'msg_remote_linux_graphic'
+msgstr '用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+
+msgid 'msg_remote_linux_text'
+msgstr '用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+
+msgid 'msg_thin_client'
+msgstr '用戶端遠距開機Linux圖形介面,終端機模式'
+
+msgid 'msg_remote_memtest'
+msgstr '用戶端遠距開機做記憶體測試(Memtest86+)'
+
+msgid 'msg_remote_fdos'
+msgstr '用戶端遠距開機使用自由DOS(FreeDOS)'
+
+msgid 'msg_clonezilla_start'
+msgstr '啟動再生龍(clonezilla)模式'
+
+msgid 'msg_clonezilla_stop'
+msgstr '停止再生龍(clonezilla)模式'
+
+msgid 'msg_netinstall'
+msgstr '用戶端經由網路安裝Linux套件'
+
+msgid 'msg_local'
+msgstr '用戶端使用本機作業系統開機'
+
+msgid 'msg_reboot'
+msgstr '現在重新啟動用戶端電腦'
+
+msgid 'msg_shutdown'
+msgstr '現在關閉用戶端電腦'
+
+msgid 'msg_Wake_on_LAN'
+msgstr '現在利用Wake-on-LAN開啟用戶端電腦'
+
+msgid 'msg_switch_pxe_menu'
+msgstr '切換用戶端電腦開機的選單'
+
+msgid 'msg_title_set_all_clients'
+msgstr '設定所有的用戶端機器?'
+
+msgid 'msg_set_all_clients'
+msgstr '你是否要設定所有的用戶端機器模式?'
+
+msgid 'msg_set_all_clients_des'
+msgstr '如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+
+msgid 'msg_hide_reveal'
+msgstr '隱藏或是顯示PXE用戶端電腦的開機選單'
+
+msgid 'msg_choose_the_action'
+msgstr '選擇動作為'
+
+msgid 'msg_hide_pxe_menus'
+msgstr '隱藏用戶端電腦某些已經被顯示的開機選單'
+
+msgid 'msg_reveal_pxe_menus'
+msgstr '顯示用戶端電腦某些已經被隱藏的開機選單'
+
+msgid 'msg_setdefault_pxe_menu'
+msgstr '設定用戶端電腦的開機預設選單'
+
+msgid 'msg_title_hide'
+msgstr '隱藏用戶端電腦的那一個開機選單?'
+
+msgid 'msg_hide_list_des'
+msgstr '隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+
+msgid 'msg_reveal_title'
+msgstr '顯示用戶端電腦的那一個開機選單?'
+
+msgid 'msg_reveal_list_des'
+msgstr '顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+
+msgid 'msg_setdefault_title'
+msgstr '哪一個是用戶端電腦的開機預設選單?'
+
+msgid 'msg_setdefault_list_des'
+msgstr '選定用戶端電腦開機時的預設選單'
+
+msgid 'msg_choose_netinstall_imag'
+msgstr '選擇要經由網路安裝的Linux套件'
+
+msgid 'msg_nchc_clonezilla'
+msgstr '再生龍(Clonezilla) - 開放原始碼再生還原系統'
+
+msgid 'msg_nchc_drbl'
+msgstr '企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+
+msgid 'msg_nchc_free_software_labs'
+msgstr '再生龍 - 國網中心自由軟體實驗室 - 台灣'
+
+msgid 'msg_specify_hosts'
+msgstr '指定用戶端機器'
+
+msgid 'msg_choose_the_multicast_method'
+msgstr '群播(multicast)還原時選定方式為'
+
+msgid 'msg_by_MAC_address'
+msgstr '經由MAC位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_by_IP_address'
+msgstr '經由IP位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_multicast_clonezilla_warning'
+msgstr '再生龍群播模式警告!'
+
+msgid 'msg_multicast_clonezilla_warning_des'
+msgstr '你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+
+msgid 'msg_choose_param_to_set'
+msgstr '設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+
+msgid 'msg_choose_one_compression_param_to_save'
+msgstr '選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+
+msgid 'msg_ocs_param_n'
+msgstr '當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+
+msgid 'msg_ocs_param_u'
+msgstr '在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+
+msgid 'msg_ocs_param_c'
+msgstr '用戶端電腦在開始複製前會再次確認是否要執行'
+
+msgid 'msg_ocs_param_s'
+msgstr '用戶端電腦開機時略去硬體偵測'
+
+msgid 'msg_ocs_param_f'
+msgstr '當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+
+msgid 'msg_ocs_param_j'
+msgstr '使用sfdisk來產生分割區而不用dd'
+
+msgid 'msg_ocs_param_j0'
+msgstr '使用dd來產生分割區而不用sfdisk'
+
+msgid 'msg_ocs_param_k'
+msgstr '不在用戶端電腦硬碟再產生分割區'
+
+msgid 'msg_ocs_param_t'
+msgstr '用戶端電腦不再復原MBR (Mater Boot Record)'
+
+msgid 'msg_ocs_param_e'
+msgstr '用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+
+msgid 'msg_ocs_param_y'
+msgstr '伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+
+msgid 'msg_ocs_param_y0'
+msgstr '伺服器將總是提供再生模式給用戶端-預設本機開機'
+
+msgid 'msg_ocs_param_y1'
+msgstr '伺服器將總是提供再生模式給用戶端-預設是還原'
+
+msgid 'msg_ocs_param_y2'
+msgstr '伺服器將總是提供再生模式給用戶端-預設是DRBL'
+
+msgid 'msg_ocs_param_z0'
+msgstr '不壓縮(最快但是最大的印象檔)'
+
+msgid 'msg_ocs_param_z1'
+msgstr '使用gzip壓縮(快速但是較小的印象檔)'
+
+msgid 'msg_ocs_param_z2'
+msgstr '使用bzip2壓縮(最慢但是最小的印象檔)'
+
+msgid 'msg_ocs_param_z3'
+msgstr '使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+
+msgid 'msg_ocs_param_g_auto'
+msgstr '用戶端電腦重新在它的硬碟的MBR中安裝grub'
+
+msgid 'msg_ocs_param_p_true'
+msgstr '用戶端複製完畢時不做其他任何動作'
+
+msgid 'msg_ocs_param_p_poweroff'
+msgstr '用戶端複製完畢後關機'
+
+msgid 'msg_ocs_param_p_reboot'
+msgstr '用戶端複製完畢後重新開機'
+
+msgid 'msg_ocs_param_p_choose'
+msgstr '在用戶端複製完畢時才選擇模式'
+
+msgid 'msg_choose_post_mode_after_clone'
+msgstr '用戶端複製完畢後的動作'
+
+msgid 'msg_default_pxemenu_for_clone'
+msgstr '開機時候PXE預設的選單是'
+
+msgid 'msg_ocs_param_o'
+msgstr "用戶端複製後執行目錄$POST_RUN_DIR下的執行檔"
+
+msgid 'msg_ocs_param_hn0'
+msgstr '復原後修改用戶端硬碟中的M$ win主機名稱(基於IP位址)'
+
+msgid 'msg_ocs_param_hn1'
+msgstr '復原後修改用戶端硬碟中的M$ win主機名稱(基於MAC位址)'
+
+msgid 'msg_ocs_param_q'
+msgstr '使用ntfsclone而不用partimage來存NTFS分割區'
+
+msgid 'msg_ocs_param_a'
+msgstr '不要強迫開啟硬碟的DMA'
+
+msgid 'msg_ocs_param_nogui'
+msgstr 'partimage不使用圖形顯示,只顯示文字'
+
+msgid 'msg_ocs_param_v'
+msgstr '顯示詳細資訊(尤其是udpcast的訊息)'
+
+msgid 'msg_ocs_param_r'
+msgstr '還原結束後調整分割區大小(印象檔放到大於原來分割區用)'
+
+msgid 'msg_ocs_param_x'
+msgstr '在群播還原時使用全雙工網路'
+
+msgid 'msg_ocs_param_ns'
+msgstr 'ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+
+msgid 'msg_ocs_param_broadcast'
+msgstr '群播還原時,使用broadcast。適用於交換器不開放multicast'
+
+msgid 'msg_ocs_param_skip'
+msgstr '不選用此選項'
+
+msgid 'msg_clonezilla_advanced_extra_param'
+msgstr '再生龍額外的進階參數'
+
+msgid 'msg_skip_set_advanced_extra_param'
+msgstr '你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
+
+msgid 'msg_skip_set_save_compression_extra_param'
+msgstr '你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n 可用的參數有: \n'
+
+msgid 'msg_no_network_installation_img'
+msgstr '找不到網路安裝的印象檔!'
+
+msgid 'msg_no_network_installation_img_des'
+msgstr "在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+
+msgid 'msg_start_clonezilla_mode'
+msgstr '啟動再生龍模式'
+
+msgid 'msg_choose_mode'
+msgstr '選定模式'
+
+msgid 'msg_clonezilla_save_disk'
+msgstr '儲存用戶端電腦的整個硬碟'
+
+msgid 'msg_clonezilla_restore_disk'
+msgstr '還原用戶端電腦的整個硬碟'
+
+msgid 'msg_clonezilla_save_parts'
+msgstr '儲存用戶端電腦的硬碟分割區'
+
+msgid 'msg_clonezilla_restore_parts'
+msgstr '還原用戶端電腦的硬碟分割區'
+
+msgid 'msg_clonezilla_save_hda1'
+msgstr '儲存用戶端hda1(即將棄用，請使用上面功能)'
+
+msgid 'msg_clonezilla_restore_hda1'
+msgstr '還原用戶端hda1(即將棄用，請使用上面功能)'
+
+msgid 'msg_clonezilla_selec_in_client'
+msgstr '在用戶端選擇儲或還原(限點播模式)'
+
+msgid 'msg_choose_the_mode_to_restore_disk'
+msgstr '選擇還原用戶端電腦的整個硬碟時的模式'
+
+msgid 'msg_choose_the_mode_to_restore_parts'
+msgstr '選擇還原用戶端電腦的硬碟分割區時的模式'
+
+msgid 'msg_choose_the_mode_to_restore_hda1'
+msgstr '選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+
+msgid 'msg_abandon_hda1'
+msgstr '注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+
+msgid 'msg_unicast_restore'
+msgstr '點播還原(unicast)'
+
+msgid 'msg_multicast_restore'
+msgstr '群播還原(multicast)'
+
+msgid 'msg_choose_the_image_to_restore'
+msgstr '選擇印象檔來做還原'
+
+msgid 'msg_time_to_wait'
+msgstr '設定時間來等待用戶端電腦開始複製'
+
+msgid 'msg_clients_to_wait'
+msgstr '直接設定用戶端電腦的數量來複製'
+
+msgid 'msg_clients_time_to_wait'
+msgstr '設定用戶端數量來複製，並且給定最長等待時間'
+
+msgid 'msg_how_many_clients_to_restore'
+msgstr '多少台用戶端電腦要還原'
+
+msgid 'msg_input_name_to_save_the_img'
+msgstr '輸入一個名稱來存這個印象檔'
+
+msgid 'msg_time_to_wait_sec'
+msgstr '最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+
+msgid 'msg_max_time_to_wait_sec'
+msgstr "最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議大於或等於$SLEEP_TIME_AFTER_PART_CLONED)"
+
+msgid 'msg_you_must_input_filename'
+msgstr '你必須輸入一個名稱'
+
+msgid 'msg_you_must_input_legal_filename'
+msgstr '你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+
+msgid 'msg_you_must_input_partition'
+msgstr '你必須輸入一個分割區'
+
+msgid 'msg_please_do_it_again'
+msgstr '請再做一次'
+
+msgid 'msg_choose_the'
+msgstr '選擇這個'
+
+msgid 'msg_to_save'
+msgstr '來存(只顯示未被掛載的)'
+
+msgid 'msg_the_image'
+msgstr '這個印象檔名稱'
+
+msgid 'msg_was_saved_before'
+msgstr '存在，這個印象檔名稱已經在使用'
+
+msgid 'msg_do_you_want_to_replace'
+msgstr '你是否要覆蓋它'
+
+msgid 'ms_choose_disks_to_save'
+msgstr '選擇硬碟來儲存(只顯示未被掛載的分割區)'
+
+msgid 'ms_choose_parts_to_save'
+msgstr '選擇分割區來儲存(只顯示未被掛載的硬碟)'
+
+msgid 'msg_choose_the_disks_to_restore'
+msgstr '選擇硬碟來還原'
+
+msgid 'msg_choose_the_parts_to_restore'
+msgstr '選擇分割區來還原'
+
+msgid 'msg_no_umounted_disks_found'
+msgstr '找不到沒有被掛載的硬碟!要使用Clonezilla來備份硬碟,該硬碟必須不能被掛載中!'
+
+msgid 'msg_no_umounted_parts_found'
+msgstr '找不到沒有被掛載的分割區!要使用Clonezilla來備份分割區,該分割區必須不能被掛載中!'
+
+msgid 'msg_you_can_not_hide_all_pxe_menus'
+msgstr '你不能隱藏所有的選單'
+
+msgid 'msg_no_modification'
+msgstr '略去任何修改'
+
+msgid 'msg_install_via_network'
+msgstr '經由網路安裝'
+
+msgid 'msg_range_found_in_dhcpd_conf'
+msgstr '警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+
+msgid 'msg_you_are_using_multicast_clonezilla'
+msgstr '你正使用群播(multicast)的再生龍環境，你務必確認：'
+
+msgid 'msg_ethernet_port_is_up_confirm'
+msgstr '1. 這張網路卡已經啟動並且有插上網路線'
+
+msgid 'msg_more_NIC_connect_each_other'
+msgstr '2. 如果你的DRBL環境中使用超過1個(大於或等於2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+
+msgid 'msg_switch_drbl_service'
+msgstr '啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+
+msgid 'msg_start_drbl_all_services'
+msgstr '啟動DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_stop_drbl_all_services'
+msgstr '停止DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_restart_drbl_all_services'
+msgstr '重新啟動DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_add_drbl_all_services'
+msgstr '加上DRBL伺服器中的所有DRBL相關服務'
+
+msgid 'msg_del_drbl_all_services'
+msgstr '移除DRBL伺服器中的所有DRBL相關服務'
+
+msgid 'msg_choose_action'
+msgstr '選擇動作為'
+
+msgid 'msg_login_switch'
+msgstr '切換DRBL客戶端機器的圖形介面登入模式'
+
+msgid 'msg_normal_login'
+msgstr '一般登入(要求使用者輸入帳號密碼來登入)'
+
+msgid 'msg_auto_login'
+msgstr '自動登入'
+
+msgid 'msg_timed_login'
+msgstr '限時登入'
+
+msgid 'msg_turn_on_client_to_make_template'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+
+msgid 'msg_turn_on_client_to_clone'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+
+msgid 'msg_turn_on_client_to_select_clone_type'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+
+msgid 'msg_client_job_are_logged_in'
+msgstr '用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+
+msgid 'msg_client_sfdisk_log_are_in'
+msgstr '用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+
+msgid 'msg_set_the_clients_root_passwd'
+msgstr '設定用戶端管理者(root)密碼'
+
+msgid 'msg_new_passwd_prompt'
+msgstr '輸入新的密碼: (螢幕上只會出現星號*)'
+
+msgid 'msg_do_you_want_set_yum_repo'
+msgstr '你要不要自己選yum的儲藏庫?'
+
+msgid 'msg_set_yum_conf_yes_prompt'
+msgstr '如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+
+msgid 'msg_set_yum_conf_no_prompt'
+msgstr '如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+
+msgid 'msg_need_lynx_to_parse_config'
+msgstr '需要lynx來判斷相關的網址，現在安裝lynx...'
+
+msgid 'msg_need_curl_etc_to_parse_config'
+msgstr '需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+
+msgid 'msg_try_to_update_some_pkgs'
+msgstr '如果找到新版的程式，嘗試升級某些需要的程式...'
+
+msgid 'msg_force_to_upgrade_some_pkgs'
+msgstr '嘗試強迫升級某些程式...'
+
+msgid 'msg_install_net_install_images'
+msgstr '安裝某些Linux套件的網路安裝印象檔...'
+
+msgid 'msg_clean_dhcpd_lease'
+msgstr '強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+
+msgid 'msg_client_reautologin'
+msgstr '強迫用戶端重新自動登入' 
+
+msgid 'msg_clean_autologin_account'
+msgstr '移除所有自動登入帳號(全部機器)'
+
+msgid 'msg_reset_autologin_account'
+msgstr '還原所有自動登入的環境為初始預設(全部機器)'
+
+msgid 'msg_re_deploy'
+msgstr '把伺服器的檔案更新到用戶端中(全部機器)'
+
+msgid 'msg_dcs_others'
+msgstr '其他模式或是指令'
+
+msgid 'msg_dcs_more_modes'
+msgstr '更多其他模式或是指令'
+
+msgid 'msg_2_kernel_availables'
+msgstr '有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+
+msgid 'msg_from_this_drbl_server'
+msgstr '來自於這台DRBL伺服器'
+
+msgid 'msg_from_apt_repository'
+msgstr '來自於apt的儲藏庫'
+
+msgid 'msg_from_ayo_repository'
+msgstr '來自於apt或是yum的儲藏庫'
+
+msgid 'msg_install_kernel_for_clients'
+msgstr '安裝用戶端電腦所需的核心'
+
+msgid 'msg_which_kernel_do_you_perfer'
+msgstr '你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+
+msgid 'msg_you_choose'
+msgstr '你選擇'
+
+msgid 'msg_chosen_kernel'
+msgstr '選定的核心為'
+
+msgid 'msg_not_available_enter_again'
+msgstr '找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+
+msgid 'msg_hosts_allow_deny_is_set'
+msgstr '警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+
+msgid 'msg_you_must_make_sure_these_clients'
+msgstr '你必須確認這些用戶端的電腦:'
+
+msgid 'msg_can_access_this_DRBL_server'
+msgstr '可以連接到這台DRBL伺服器!'
+
+msgid 'msg_otherwise_client_fail_to_boot'
+msgstr '否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+
+msgid 'msg_if_you_like_you_can_reboot_to_make_sure_everthing'
+msgstr '如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+
+msgid 'msg_do_not_create_part'
+msgstr '用戶端不再產生硬碟分割表!'
+
+msgid 'msg_do_not_restore_mbr'
+msgstr '用戶端不再復原MBR!'
+
+msgid 'msg_you_have_to_input_image_names_in_client'
+msgstr '在用戶端的電腦選擇還原的印象檔!'
+
+msgid 'msg_title_input_save_image_name_in_server'
+msgstr '現在輸入印象檔與範本裝置名稱 ?'
+
+msgid 'msg_ask_if_input_save_image_name_in_server'
+msgstr '你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+
+msgid 'msg_input_image_name'
+msgstr '輸入一個名稱來存這個印象檔:'
+
+msgid 'msg_input_device_name'
+msgstr '複製範本機中的那個裝置 ?'
+
+msgid 'msg_ocs_param_exclude_multicast'
+msgstr '你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+
+msgid 'msg_run_drbl_ocs_again_cmd'
+msgstr '下次您可以直接下這樣的指令:'
+
+msgid 'msg_is_unknown_HD'
+msgstr '是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+
+msgid 'msg_creating_partition_in_target'
+msgstr '在目的碟產生分割區...'
+
+msgid 'msg_partition_table_for_target_dev'
+msgstr '目的碟分割區的表'
+
+msgid 'msg_if_go_on_the_data_will_be_erased_then_confirm'
+msgstr '如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+
+msgid 'msg_should_not_run_ocs_onthefly_in_server'
+msgstr '你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+
+msgid 'msg_ok_we_will_keep_old_partition_table'
+msgstr 'OK, 我們將保留原來的分割表.'
+
+msgid 'msg_fail_to_create_partition_table_in_target_dev'
+msgstr '未能在目的碟中建立分割表' 
+
+msgid 'msg_my_IP_in_drbl_env'
+msgstr '本台機器在DRBL環境中的IP位址'
+
+msgid 'msg_are_u_sure_u_want_to_continue'
+msgstr '你確認要繼續執行 ?'
+
+msgid 'msg_really_dangerous_then_continue'
+msgstr '這是非常危險的!!! 總之,我們將繼續...'
+
+msgid 'msg_src_target_r_same_dev'
+msgstr '來源和目的兩者是同一個裝!!!'
+
+msgid 'msg_is_not_valid_grub_root'
+msgstr '不是一個正確的grub根分割(root partition)!' 
+
+msgid 'msg_different_type_of_input_devs'
+msgstr '你輸入的裝置兩者屬於不同類型'
+
+msgid 'msg_a_partition_table_already_exist'
+msgstr '在目的碟中已經有一個分割表存在'
+
+msgid 'msg_do_u_want_to_duplicate_the_partition_layout_to'
+msgstr '你是否要複製分割表到'
+
+msgid 'msg_do_you_want_to_clone_the_MBR_to'
+msgstr '你是否要複製主要開機磁區(MBR)到'
+
+msgid 'msg_skip_clone_MBR'
+msgstr '略去複製主要開機磁區(MBR)'
+
+msgid 'msg_failed_to_clone_the_MBR'
+msgstr '未能複製主要開機磁區(MBR)到'
+
+msgid 'msg_now_run_this_cmd_in_target_machine'
+msgstr '現在你可以在目的機器上執行類似這樣的指令來開始複製'
+
+msgid 'msg_this_is_for_source_machine'
+msgstr '這是在來源機器上執行'
+
+msgid 'msg_this_is_for_target_machine'
+msgstr '這是在目的機器上執行'
+
+msgid 'msg_kernel_2_6_13_15_defaul_is_buggy'
+msgstr '目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+
+msgid 'msg_u_have_to_upgrade_kernel_in_this_machine'
+msgstr '你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+
+msgid 'msg_then_reboot_this_server'
+msgstr '然後把這台電腦重新開機，以便使用新的核心。'
+
+msgid 'msg_make_audio_open'
+msgstr '開放用戶端電腦的聲音裝置給所有使用者使用。'
+
+msgid 'msg_make_audio_close'
+msgstr '不開放用戶端電腦的聲音裝置給所有使用者使用。'
+
+msgid 'msg_make_plugdev_open'
+msgstr '開放用戶端電腦的抽取式裝置給所有使用者使用。'
+
+msgid 'msg_make_plugdev_close'
+msgstr '不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+
+msgid 'msg_restart_prompt_for_audio'
+msgstr '因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+
+msgid 'msg_restart_prompt_for_plugdev'
+msgstr '因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+
+msgid 'msg_restart_prompt_for_dev'
+msgstr '因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+
+msgid 'msg_run_update_plugdev_again'
+msgstr '注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+
+msgid 'msg_run_update_dev_again'
+msgstr '注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+
+msgid 'msg_no_autologin_account'
+msgstr '未找到自動登入帳號'
+
+msgid 'msg_are_you_sure_reset_autologin_home_dir'
+msgstr '你確認你要將自動登入帳號的環境重設為初始預設狀態'
+
+msgid 'msg_warning_home_dir_will_be_deleted'
+msgstr '警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+
+msgid 'msg_these_accounts_are'
+msgstr '這些帳號是'
+
+msgid 'msg_ok_let_do_it'
+msgstr 'OK, 我們繼續做吧!'
+
+msgid 'msg_do_not_reset_autologin_home_dir'
+msgstr '不要重設自動登入帳號的家目錄'
+
+msgid 'msg_created_autologin_ID_passwd_file'
+msgstr "產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+
+msgid 'msg_drbl_clonezilla_switch'
+msgstr '切換企鵝龍單一系統印象檔與再生龍模式'
+
+msgid 'msg_drbl_mode_switch'
+msgstr '切換企鵝龍機制'
+
+msgid 'msg_drbl_mode_switch_long'
+msgstr "有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+
+msgid 'msg_drbl_mode_0'
+msgstr '使用完全企鵝龍模式'
+
+msgid 'msg_drbl_mode_1'
+msgstr '使用企鵝龍單一系統印象檔模式'
+
+msgid 'msg_drbl_mode_2'
+msgstr '不提供無碟GNU/Linux服務'
+
+msgid 'msg_clonezilla_mode_switch'
+msgstr '切換再生龍機制'
+
+msgid 'msg_clonezilla_mode_switch_long'
+msgstr '本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+
+msgid 'msg_clonezilla_mode_0'
+msgstr '使用完全再生龍模式'
+
+msgid 'msg_clonezilla_mode_1'
+msgstr '使用再生龍盒模式'
+
+msgid 'msg_clonezilla_mode_2'
+msgstr '不提供再生龍服務'
+
+msgid 'msg_r_u_sure_want_to_del_autologin_accounts'
+msgstr '你確認要移除這些自動登入帳號?'
+
+msgid 'msg_also_clean_autologin_accounts'
+msgstr '你是否要清除這些自動登入帳號的家目錄?'
+
+msgid 'msg_do_not_del_accounts'
+msgstr '不要移除這些帳號'
+
+msgid 'msg_regenerate_nfs_nis_nat_config'
+msgstr '以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+
+msgid 'msg_not_in_SSI_mode'
+msgstr "這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/dcs來切換。"
+
+msgid 'msg_wol_0'
+msgstr '現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+
+msgid 'msg_wol_1'
+msgstr '1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+
+msgid 'msg_wol_2'
+msgstr '2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+
+msgid 'msg_wol_3'
+msgstr '3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+
+msgid 'msg_wol_4'
+msgstr "4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+
+msgid 'msg_no_kernel_rpm_is_available'
+msgstr '無法在這些地方找到核心的RPM檔:'
+
+msgid 'msg_internet_connection'
+msgstr '1. 你的網際網路連線正常。'
+
+msgid 'msg_use_baseurl_in_yum_centos'
+msgstr '2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+
+msgid 'msg_you_must_input_device_name_to_save_image'
+msgstr '你一定要輸入裝置名稱才能存取印象檔'
+
+msgid 'msg_start_detect_MAC_addresse'
+msgstr '開始偵測與收集用戶端的MAC address....'
+
+msgid 'msg_enter_1_or_press_enter_to_view'
+msgstr '輸入<1>或是按<Enter>鍵來看目前收集的狀態。'
+
+msgid 'msg_enter_2_or_press_q_to_quit'
+msgstr '輸入<2>或是<q>來結束收集。'
+
+msgid 'msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them'
+msgstr 'DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+
+msgid 'msg_the_collected_MAC_addr_from'
+msgstr '收集到的用戶端硬體卡號MAC位址(由'
+
+msgid 'msg_are_saved_in_files_separately'
+msgstr ')個別被存在這些檔案中'
+
+msgid 'msg_http_isu_edu_tw_not_compatible'
+msgstr '由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+
+msgid 'msg_prompt_chang_yum_config'
+msgstr '這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+
+msgid 'msg_What_the_win_hostname_prefix'
+msgstr '所還原的M$ windows主機名稱的前置名稱是'
+
+msgid 'msg_change_hostname_of_MS_WIN_on_the_fly'
+msgstr '已經開啟-hn0或-hn1'
+
+msgid 'msg_write_MS_WIN_is_necessary'
+msgstr '你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 M$ Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 M$ Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在M$ WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+
+msgid 'msg_necessary_pkgs_from_dists'
+msgstr '這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+
+msgid 'msg_necessary_pkgs_from_drbl'
+msgstr '這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+
+msgid 'msg_recommended_pkgs_from_dists'
+msgstr '這些套件如果可以在儲藏庫中找到，建議您安裝:'
+
+msgid 'msg_install_glibc_etc_arch_by_yourself'
+msgstr '如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+
+msgid 'msg_prepare_kernel_for_clients'
+msgstr '準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+
+msgid 'msg_some_necessary_pkgs_not_installed'
+msgstr '警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+
+msgid 'msg_reset_all_existing_urpmi_setting'
+msgstr '警告! 我們必須重新設定目前系統中的urpmi!'
+
+msgid 'msg_some_required_pkgs_not_installed'
+msgstr '這些必要的程式並沒有安裝'
+
+msgid 'msg_use_drblsrv_instead'
+msgstr "如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+
+msgid 'msg_continue_may_not_work'
+msgstr '如果你繼續的話，這個DRBL系統可能無法正常運作!'
+
+msgid 'msg_switch_pxe_bg_mode'
+msgstr '切換用戶端電腦PXE開機選單模式'
+
+msgid 'msg_pxemenu_text'
+msgstr '用戶端使用文字模式的開機選單'
+
+msgid 'msg_pxemenu_graphic'
+msgstr '用戶端使用圖形模式的開機選單'
+
+msgid 'msg_only_one_kernel_meets_requirement'
+msgstr '只有一個核心符合你設定的條件'
+
+msgid 'msg_drbl_server_is_NOT_NAT_server'
+msgstr '這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+
+msgid 'msg_ask_user_is_reserved_for_save_mode'
+msgstr '"ask_user"是保留來的名稱，請改用其他名字!'
+
+msgid 'msg_all_data_in_dev_will_be_overwritten'
+msgstr '在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+
+msgid 'msg_authentication_pxe_linux_info'
+msgstr "如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd -h\"來得知。"
+
+msgid 'msg_this_might_take_several_minutes'
+msgstr '這可能會需要一點時間...'
+
+msgid 'msg_run_dcs_clonezilla_start_to_show_pxemenu'
+msgstr "你必須要再執行\"$DRBL_SCRIPT_PATH/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+
+msgid 'msg_if_always_provide_clonezilla_srv'
+msgstr '你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+
+msgid 'msg_gen_template_files'
+msgstr '重新產生SSI/Clonezilla box範本檔案'
+
+msgid 'msg_ocs_iso_too_big_for_CD'
+msgstr '要產生的ISO檔太大，無法放到一片CD上.'
+
+msgid 'msg_ocs_iso_too_big_for_DVD'
+msgstr '要產生的ISO檔太大，無法放到一片DVD上.'
+
+msgid 'msg_unable_to_create_clonezilla_img_iso'
+msgstr '無法產生這個再生龍還原專用光碟'
+
+msgid 'msg_mkisofs_unable_process_that'
+msgstr 'mkisofs程式無法處理這個大檔案!'
+
+msgid 'msg_burn_clonezilla_img_iso'
+msgstr '你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+
+msgid 'msg_burn_drbl_live_img_iso'
+msgstr '你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+
+msgid 'msg_burn_drbl_live_img_zip'
+msgstr "你可以把這個zip檔解開到USB隨身碟中，然後用'makeboot.exe' (在M$ windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，在來就可以用它來開機使用DRBL"
+
+msgid 'msg_is_mounted_u_must_unmount_it'
+msgstr '這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+
+msgid 'msg_create_live_device_warning'
+msgstr '這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+
+msgid 'msg_unable_to_mount_this_dev'
+msgstr '無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+
+msgid 'msg_format_as_FAT_16_32'
+msgstr '如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+
+msgid 'msg_this_is_disk_usage_status'
+msgstr '這是磁碟的使用狀態'
+
+msgid 'msg_boot_clonezilla_live_dev'
+msgstr '現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+
+msgid 'msg_clone_finished_choose_to'
+msgstr '下一步要'
+
+msgid 'msg_enter_cml'
+msgstr '進入命令列'
+
+msgid 'msg_clonezilla_is_free_and_no_warranty'
+msgstr '**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+
+msgid 'msg_1_6_a_b_is_reserved'
+msgstr '1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+
+msgid 'msg_name_ntfs_dd_img_is_reserved'
+msgstr '.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+
+msgid 'msg_to_use_clonezilla_to_save_image'
+msgstr '要使用再生龍來存印象檔'
+
+msgid 'msg_run_sudo_su_to_become_root'
+msgstr '執行"sudo su -"來變成管理者(root)'
+
+msgid 'msg_prepare_writable_dev_and_mount_it_as'
+msgstr '你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+
+msgid 'msg_ex_mount_ocsroot_in_ocs_live'
+msgstr "例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+
+msgid 'msg_if_src_part_is_ntfs'
+msgstr '如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+
+msgid 'msg_sshfs_smbfs_are_supported'
+msgstr '本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+
+msgid 'msg_use_zh_TW_bterm'
+msgstr '如果你需要使用支援正體中文的終端機，可以執行'
+
+msgid 'msg_start_ocs_sr_interactive'
+msgstr '然後使用這個指令來使用再生龍'
+
+msgid 'msg_remember_poweroff_reboot_when_ocs_sr_is_done'
+msgstr '當你存完印象檔，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的，例如USB隨身碟，有可能該裝置下次會無法開機!'
+
+msgid 'msg_if_you_want_to_use_ocs_again'
+msgstr '如果你要再使用再生龍'
+
+msgid 'msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live'
+msgstr '如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+
+msgid 'msg_remove_existing_link_for_ocsroot'
+msgstr "移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+
+msgid 'msg_to_see_this_ocs_live_help_msg'
+msgstr '注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+
+msgid 'msg_image_source_for_ocs_live'
+msgstr "如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+
+msgid 'msg_modify_grub_config_if_necessary'
+msgstr "你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+
+msgid 'msg_this_script_will_create_SL_diskless'
+msgstr '這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+
+msgid 'msg_RAM_size_for_SL_drbl_client'
+msgstr '建議你的用戶端電腦的記憶體最少要'
+
+msgid 'msg_image_saved_from_dd'
+msgstr '這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+
+msgid 'msg_cons_for_dd_clone'
+msgstr '使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+
+msgid 'msg_will_be_inefficent_and_slow'
+msgstr '這樣將會非常沒有效率，而且可能需要很久的時間'
+
+msgid 'msg_fs_not_supported_by_partimage_ntfsclone'
+msgstr '這個檔案系統partimage或是ntfsclone並不支援'
+
+msgid 'msg_use_this_method_to_save_img'
+msgstr '只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+
+msgid 'msg_status_report_is_very_primitive'
+msgstr '此模式下的狀態回報也會非常陽春'
+
+msgid 'msg_home_partimag_not_home_partimage'
+msgstr '有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+
+msgid 'msg_text_Enter'
+msgstr '輸入'
+
+msgid 'msg_text_for'
+msgstr '對於'
+
+msgid 'msg_Got_it'
+msgstr '找到了'
+
+msgid 'msg_Warning'
+msgstr '警告'
+
+msgid 'msg_uppercase_Warning'
+msgstr '警告'
+
+msgid 'msg_NOT_found'
+msgstr '未找到'
+
+msgid 'msg_Done'
+msgstr '完成'
+
+msgid 'msg_please'
+msgstr '請'
+
+msgid 'msg_browse'
+msgstr '瀏覽'
+
+msgid 'msg_or'
+msgstr '或是'
+
+msgid 'msg_for_more_details'
+msgstr '更詳細的資料'
+
+msgid 'msg_Failed_to_get'
+msgstr '未能抓取'
+
+msgid 'msg_Failed_to_install'
+msgstr '未能安裝'
+
+msgid 'msg_done'
+msgstr '完成'
+
+msgid 'msg_note'
+msgstr '注意'
+
+msgid 'msg_and'
+msgstr '與'
+
+msgid 'msg_clonezilla'
+msgstr '再生龍'
+
+msgid 'msg_error'
+msgstr '錯誤'
+
+msgid 'msg_restore'
+msgstr '還原'
+
+msgid 'msg_txt_check'
+msgstr '檢查'
+
+msgid 'msg_ex'
+msgstr '例如'
+
+msgid 'msg_exit'
+msgstr '退出'
+
+msgid 'msg_poweroff'
+msgstr '關機'
+
+msgid 'msg_reboot'
+msgstr '重新開機'
+
Index: drbl_ui/backup/old_langs/tw.UTF-8_original
===================================================================
--- drbl_ui/backup/old_langs/tw.UTF-8_original	(revision 20)
+++ drbl_ui/backup/old_langs/tw.UTF-8_original	(revision 20)
@@ -0,0 +1,659 @@
+#!/bin/bash
+# Written by Steven Shiau <steven@nchc.org.tw> to use in DRBL for RedHat
+# License: GPL
+#
+# Revised by T. C. Lin <tclin@mail.dfes.tpc.edu.tw> on 4/01/2004
+# Many thanks to Mr. Lin.
+
+msg_delimiter_star_line='*****************************************************'.
+msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+msg_OS_version='你的作業系統版本'
+msg_is_not_supported='DRBL 不支援這個版本!'
+msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+msg_set_proxy='你要設定代理伺服器嗎?'
+msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+msg_http_proxy_port='請輸入 HTTP 代理伺服器的連接埠: '
+msg_ftp_proxy_server='請輸入 FTP 代理伺服器的位址: '
+msg_ftp_proxy_port='請輸入 FTP 代理伺服器的連接埠: '
+msg_http_proxy_you_set='你設定的 HTTP 代理伺服器是: '
+msg_ftp_proxy_you_set='你設定的 FTP 代理伺服器是: '
+msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+msg_serial_console_only='用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+msg_redirect_to_which_port='請輸入要使用的序列埠(Serial Port)?'
+msg_serial_console_speed='您的序列終端機速度是多少?'
+msg_serial_console_parameter='請輸入序列終端機的參數'
+msg_smp_clients='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+msg_smp_clients_MDK='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='安裝 APT ...'
+msg_no_wget_get_it='沒有 wget 程式? 嘗試安裝 wget 程式...'
+msg_no_apt_get_it='沒有 apt 程式? 嘗試安裝 apt 程式...'
+msg_wget_installed_failure='未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+msg_wget_installed_successful='wget程式安裝成功!'
+msg_apt_already_installed='apt 已經安裝了. 神奇!!! 你真是優秀!'
+msg_backup_apt_sources='備份原來的 apt 來源檔(sources.list) ...'
+msg_setup_apt_sources_MDK='為 MDK 設定 apt 的來源檔(sources.list)'
+msg_enjoy_apt='現在開始享用 APT!'
+msg_clean_apt_cache='清除apt的快取檔案...'
+msg_check_apt_integrity='套件完整性檢查...'
+msg_upgrade_system_question='你是否要升級你的作業系統?'
+msg_upgrade_whole_system='升級作業系統中...'
+msg_check_installed_kernel='檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+msg_is_already_installed='已經被安裝在您的系統中...'
+msg_need_to_install_kernel='我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+msg_create_nbi_files='產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+msg_latest_kernel_for_clients='用戶端電腦使用的最新核心是'
+msg_no_drbl_script='你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+msg_create_files_for_PXELINUX='建立PXE網路開機的設定檔...'
+msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+msg_press_enter_to_continue='按 Enter 鍵繼續...'
+msg_press_enter_to_exit="按 Enter 鍵離開."
+msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+msg_program_stop='程式停止!'
+msg_remove_SmallLinuxs_question='如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+msg_remove_drbl_setup_question='你是否要移除DRBL這個程式?'
+msg_remove_apt_question='你是否要移除 apt ?'
+msg_remove_yum_repo_question='你是否要清除yum的來源設定檔?'
+msg_remove_urpmi_media_question='你是否要清除 urpmi的來源設定檔?'
+msg_cleaning_apt_cache='正在清除 apt 的快取檔案...'
+msg_cleaning_tftpboot_and_misc='移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+msg_uninstalling_DRBL_RH='移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_MDK='移除 Mandrake Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_DBN='移除 Debian Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_SUSE='移除 SuSE Linux 上的 DRBL 套件中...'
+msg_analyzing_rpm_info='分析已安裝套件資訊中... 這可能需要幾分鐘...'
+msg_failed_to_install_pkgs='安裝程式失敗，無法繼續執行!'
+msg_check_network_and_url='請檢查您的電腦和這個網址(URL)間的連線狀況：'
+msg_not_determine_OS='無法判斷 Linux 作業系統的種類與版本!!!'
+msg_enter_OS_ver='請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='正在清除 apt 的快取檔案...'
+msg_install_DRBL_necesary_files='安裝 DRBL 所需之相關程式...'
+msg_select_url_path='你選擇的伺服器網址(URL)與路徑'
+msg_drbl_driver='您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+msg_smp_optimization_kernel='您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+msg_apt_optimization_question='您用戶端的電腦要使用哪個等級CPU的核心?'
+msg_optimization_level_0='0 -> 使用i386 CPU等級架構'
+msg_optimization_level_1='1 -> 使用i586 CPU等級架構'
+msg_optimization_level_2='2 -> 使用與此DRBL伺服器同等級CPU的核心'
+msg_N_note='注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+msg_different_level_machine_prompt='如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+msg_diff_arch_explain='如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+msg_not_sure_better_1='如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+msg_same_optimization='您選用與伺服器同等級的 CPU 最佳化.'
+msg_i586_optimization='你選用 i586 架構的 CPU 最佳化.'
+msg_no_optimization='你未選用 CPU 最佳化，預設使用 i386 架構.'
+msg_glibc_openssl_upgrade_question='如果 glibc 與 openssl 有較新版本，是否要升級?'
+msg_glibc_openssl_keep='0 -> 不升級 glibc 與 openssl.'
+msg_keep_glibc_upgrade_openssl='1 -> 只升級 openssl,'
+msg_upgrade_glibc_keep_openssl='2 -> 只升級 glibc,'
+msg_upgrade_glibc_openssl='3 -> 升級 glibc 與 openssl (預設),'
+msg_warning_glibc_upgrade='警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+msg_upgrade_glibc_make_you_cry='為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+msg_install_dhcp_tftp_etc='正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='啟用與伺服器同等級 CPU 最佳化.'
+msg_optimization_is_off='未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+msg_install_i386_of='安裝 i386 架構的'
+msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
+msg_searching_pkg_in_ayo='在 ayo 伺服器中尋找可用的程式'
+msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='移除舊的'
+msg_creating_dev='產生用戶端電腦的設備檔案...'
+msg_get_dev='擷取設備檔案...'
+msg_clean_tmp_dev='清除設備檔案的暫存目錄...'
+msg_remove_old_nbi='移除 /tftpboot 中舊的 nbi 檔案...'
+msg_install_extra_driver='安裝額外的驅動程式...'
+msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+msg_make_client_serial_console='建立用戶端序列終端機設定...'
+#
+msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+msg_not_remove='請在下個步驟回答"N"!'
+#
+msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+# RH/FC os
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+
+# RH/FC drbl
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+
+# MDK OS
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+
+# MDK drbl
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+
+msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+msg_do_u_want_to_remove='你要移除嗎？'
+msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+msg_rm_apt='正在移除 apt 與 libapt-pkg0...'
+msg_search_kernel_in_ayo='在 ayo 資料庫中尋找最新的'
+msg_latest_kernel_in_ayo='在 ayo 資料庫中,最新的核心是'
+msg_install_kernel_might_take_several_minutes='安裝這個核心可能需要一些時間，請耐心等候... '
+msg_latest_kernel_is_already_installed='給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+msg_error_no_drbl_kernel_in_apt='在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+msg_change_opt_from_i386_to_i586='由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+msg_change_opt_from_i586_to_i386='由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+msg_are_you_sure_run_impatient='這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+msg_run_step_by_step='很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+msg_run_drbl4imp='好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+msg_total_avail_space='系統可以提供的空間(/tftpboot與/)有'
+msg_necessary_space_setup_drbl='估計安裝DRBL需要的空間是'
+msg_total_client_no='DRBL用戶端的總數目是'
+msg_system_maybe_not_enough_space='你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+msg_logout_X_for_thin_client_gdm='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+msg_restart_X_for_thin_client_kdm='你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+msg_logout_X_for_modified_gdm_config_work='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+msg_logout_X_for_modified_kdm_config_work='你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+msg_restart_graphic_mode_later='你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+msg_turn_on_gdm_remote_access='開放GDM遠端連線...'
+msg_gdm_remote_access_is_already_on='DRBL伺服器中的GDM遠端連線已經開啟!'
+msg_set_thin_client_mode_for_clients='正在設定終端機模式給用戶端電腦來使用...'
+msg_gdm_remote_access_is_already_off='DRBL伺服器中的GDM遠端連線已經關閉!'
+msg_disable_thin_client_mode_for_clients='關閉用戶端的終端機模式!'
+msg_turn_off_gdm_remote_access='關閉GDM遠端連線...'
+msg_kdm_remote_access_is_already_on='DRBL伺服器中的KDM遠端連線已經開啟!'
+msg_turn_off_kdm_remote_access='開放KDM遠端連線...'
+msg_kdm_remote_access_is_already_off='DRBL伺服器中的KDM遠端連線已經關閉!'
+msg_dm_in_DRBL_server='DRBL伺服器中的圖形顯示管理程式(display manager)是'
+msg_hint_for_answer='提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+msg_available_kernel='可用的核心有'
+msg_which_os_ayo_repository='請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+msg_win_fail_with_Missing_OS='如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+# drbl-script
+msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+msg_drbl_title='企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+msg_switch_client_mode='切換模式'
+msg_remote_linux='用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+msg_remote_linux_graphic='用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+msg_remote_linux_text='用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+msg_thin_client='用戶端遠距開機Linux圖形介面,終端機模式'
+msg_remote_memtest='用戶端遠距開機做記憶體測試(Memtest86+)'
+msg_remote_fdos='用戶端遠距開機使用自由DOS(FreeDOS)'
+msg_clonezilla_start='啟動再生龍(clonezilla)模式'
+msg_clonezilla_stop='停止再生龍(clonezilla)模式'
+msg_netinstall='用戶端經由網路安裝Linux套件'
+msg_local='用戶端使用本機作業系統開機'
+msg_reboot='現在重新啟動用戶端電腦'
+msg_shutdown='現在關閉用戶端電腦'
+msg_Wake_on_LAN='現在利用Wake-on-LAN開啟用戶端電腦'
+msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+msg_title_set_all_clients='設定所有的用戶端機器?'
+msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
+msg_select_all_clients_or_select_part_them='你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+msg_select_all_clients='選擇所有的用戶端'
+msg_select_clients='根據IP或是MAC位址選擇部份用戶端'
+msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+msg_choose_the_action='選擇動作為'
+msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+msg_reveal_pxe_menus='顯示用戶端電腦某些已經被隱藏的開機選單'
+msg_setdefault_pxe_menu='設定用戶端電腦的開機預設選單'
+msg_title_hide='隱藏用戶端電腦的那一個開機選單?'
+msg_hide_list_des='隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+msg_reveal_title='顯示用戶端電腦的那一個開機選單?'
+msg_reveal_list_des='顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+msg_setdefault_title='哪一個是用戶端電腦的開機預設選單?'
+msg_setdefault_list_des='選定用戶端電腦開機時的預設選單'
+msg_choose_netinstall_imag='選擇要經由網路安裝的Linux套件'
+msg_nchc_clonezilla='再生龍(Clonezilla) - 開放原始碼再生還原系統'
+msg_nchc_drbl='企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+msg_nchc_free_software_labs='再生龍 - 國網中心自由軟體實驗室 - 台灣'
+msg_specify_hosts='指定用戶端機器'
+msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_list='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_grp='經由MAC位址群組來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_list='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_grp='經由IP位址群組來指定DRBL用戶端電腦的模式'
+msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
+msg_hint_for_not_fdisk='*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+msg_ocs_param_c='用戶端電腦在開始複製前會再次確認是否要執行'
+msg_ocs_param_s='用戶端電腦開機時略去硬體偵測'
+msg_ocs_param_f='當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+msg_ocs_param_j='使用sfdisk來產生分割區而不用dd'
+msg_ocs_param_j0='使用dd來產生分割區而不用sfdisk'
+msg_ocs_param_k='不在用戶端電腦硬碟再產生分割區'
+msg_ocs_param_t='用戶端電腦不再復原MBR (Mater Boot Record)'
+msg_ocs_param_e='用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+msg_ocs_param_y='伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+msg_ocs_param_y0='伺服器將總是提供再生模式給用戶端-預設本機開機'
+msg_ocs_param_y1='伺服器將總是提供再生模式給用戶端-預設是還原'
+msg_ocs_param_y2='伺服器將總是提供再生模式給用戶端-預設是DRBL'
+msg_ocs_param_z0='不壓縮(最快但是最大的印象檔)'
+msg_ocs_param_z1='使用gzip壓縮(快速但是較小的印象檔)'
+msg_ocs_param_z2='使用bzip2壓縮(最慢但是最小的印象檔)'
+msg_ocs_param_z3='使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+msg_ocs_param_g_auto='用戶端電腦重新在它的硬碟的MBR中安裝grub'
+msg_ocs_param_p_true='用戶端複製完畢時不做其他任何動作'
+msg_ocs_param_p_poweroff='用戶端複製完畢後關機'
+msg_ocs_param_p_reboot='用戶端複製完畢後重新開機'
+msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+# Since drbl.conf is loaded before language file is loaded, we explicitly show it as $POST_RUN_DIR
+msg_ocs_param_o0='用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
+msg_ocs_param_o1='用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
+msg_ocs_param_hn0='復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
+msg_ocs_param_hn1='復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+msg_ocs_param_r='在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+msg_ocs_param_x='在群播還原時使用全雙工網路'
+msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+msg_ocs_param_skip='不選用此選項'
+msg_ocs_param_notfs_ok='假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n
+可用的參數有: \n'
+msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n
+可用的參數有: \n'
+msg_no_network_installation_img='找不到網路安裝的印象檔!'
+msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+msg_start_clonezilla_mode='啟動再生龍模式'
+msg_choose_mode='選定模式'
+msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+msg_clonezilla_restore_disk='還原用戶端電腦的整個硬碟'
+msg_clonezilla_save_parts='儲存用戶端電腦的硬碟分割區'
+msg_clonezilla_restore_parts='還原用戶端電腦的硬碟分割區'
+msg_clonezilla_save_hda1='儲存用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_restore_hda1='還原用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_selec_in_client='在用戶端選擇儲或還原(限點播模式)'
+msg_choose_the_mode_to_restore_disk='選擇還原用戶端電腦的整個硬碟時的模式'
+msg_choose_the_mode_to_restore_parts='選擇還原用戶端電腦的硬碟分割區時的模式'
+msg_choose_the_mode_to_restore_hda1='選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+msg_abandon_hda1='注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+msg_unicast_restore='點播還原(unicast)'
+msg_multicast_restore='群播還原(multicast)'
+msg_choose_the_image_to_restore='選擇印象檔來做還原'
+msg_time_to_wait='設定時間來等待用戶端電腦開始複製'
+msg_clients_to_wait='直接設定用戶端電腦的數量來複製'
+msg_clients_time_to_wait='設定用戶端數量來複製，並且給定最長等待時間'
+msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議>=$SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='你必須輸入一個名稱'
+msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+msg_you_must_input_partition='你必須輸入一個分割區'
+msg_please_do_it_again='請再做一次'
+msg_choose_the='選擇這個'
+msg_to_save='來存(只顯示未被掛載的)'
+msg_the_image='這個印象檔名稱'
+msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+msg_do_you_want_to_replace='你是否要覆蓋它'
+msg_linux_disk_MS_mapping='硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
+msg_linux_parts_MS_mapping='分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
+msg_choose_disks_to_save='選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
+msg_choose_parts_to_save='選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
+msg_choose_the_disks_to_restore='選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
+msg_choose_the_parts_to_restore='選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
+msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
+msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+msg_no_modification='略去任何修改'
+msg_install_via_network='經由網路安裝'
+msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(>=2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+msg_restart_drbl_all_services='重新啟動DRBL伺服器中的DRBL相關服務'
+msg_add_drbl_all_services='加上DRBL伺服器中的所有DRBL相關服務'
+msg_del_drbl_all_services='移除DRBL伺服器中的所有DRBL相關服務'
+msg_choose_action='選擇動作為'
+msg_login_switch='切換DRBL客戶端機器的圖形介面登入模式'
+msg_normal_login='一般登入(要求使用者輸入帳號密碼來登入)'
+msg_auto_login='自動登入'
+msg_timed_login='限時登入'
+msg_turn_on_client_to_make_template='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+msg_turn_on_client_to_clone='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+msg_turn_on_client_to_select_clone_type='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+msg_client_job_are_logged_in='用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+msg_client_sfdisk_log_are_in='用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+msg_set_the_clients_root_passwd='設定用戶端管理者(root)密碼'
+msg_new_passwd_prompt='輸入新的密碼: (螢幕上只會出現星號*)'
+msg_do_you_want_set_yum_repo='你要不要自己選yum的儲藏庫?'
+msg_set_yum_conf_yes_prompt='如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+msg_set_yum_conf_no_prompt='如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+msg_need_lynx_to_parse_config='需要lynx來判斷相關的網址，現在安裝lynx...'
+msg_need_curl_etc_to_parse_config='需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+msg_try_to_update_some_pkgs='如果找到新版的程式，嘗試升級某些需要的程式...'
+msg_force_to_upgrade_some_pkgs='嘗試強迫升級某些程式...'
+msg_install_net_install_images='安裝某些Linux套件的網路安裝印象檔...'
+msg_clean_dhcpd_lease='強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+msg_client_reautologin='強迫用戶端重新自動登入' 
+msg_clean_autologin_account='移除所有自動登入帳號(全部機器)'
+msg_reset_autologin_account='還原所有自動登入的環境為初始預設(全部機器)'
+msg_re_deploy='把伺服器的檔案更新到用戶端中(全部機器)'
+msg_dcs_others='其他模式或是指令'
+msg_dcs_more_modes='更多其他模式或是指令'
+msg_2_kernel_availables='有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+msg_from_this_drbl_server='來自於這台DRBL伺服器'
+msg_from_apt_repository='來自於apt的儲藏庫'
+msg_from_ayo_repository='來自於apt或是yum的儲藏庫'
+msg_install_kernel_for_clients='安裝用戶端電腦所需的核心'
+msg_which_kernel_do_you_perfer='你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+msg_you_choose='你選擇'
+msg_chosen_kernel='選定的核心為'
+msg_not_available_enter_again='找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+msg_hosts_allow_deny_is_set='警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='你必須確認這些用戶端的電腦:'
+msg_can_access_this_DRBL_server='可以連接到這台DRBL伺服器!'
+msg_otherwise_client_fail_to_boot='否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+msg_do_not_create_part='用戶端不再產生硬碟分割表!'
+msg_do_not_restore_mbr='用戶端不再復原MBR!'
+msg_you_have_to_input_image_names_in_client='在用戶端的電腦選擇還原的印象檔!'
+msg_title_input_save_image_name_in_server='現在輸入印象檔與範本裝置名稱 ?'
+msg_ask_if_input_save_image_name_in_server='你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+msg_input_image_name='輸入一個名稱來存這個印象檔:'
+msg_input_device_name='複製範本機中的那個裝置 ?'
+msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='將在目的碟產生分割區...'
+msg_partition_table_for_target_dev='要產生的目的碟分割區的表'
+msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+msg_are_u_sure_u_want_to_continue='你確認要繼續執行'
+msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+msg_different_type_of_input_devs='你輸入的裝置兩者屬於不同類型'
+msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
+msg_do_you_want_to_clone_the_boot_loader_to='你是否要複製開機載入程式(boot loader)到'
+msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
+msg_skip_clone_boot_loader='略去複製開機載入程式(boot loader)'
+msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+msg_failed_to_clone_the_boot_loader='未能複製開機載入程式(boot loader)'
+msg_now_run_this_cmd_in_target_machine='現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
+msg_if_clone_the_partition_to_hda1_in_target_machine='例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
+msg_if_clone_the_disk_to_hda_in_target_machine='例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+msg_this_is_for_source_machine='這是在來源機器上執行'
+msg_this_is_for_target_machine='這是在目的機器上執行'
+msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+msg_then_reboot_this_server='然後把這台電腦重新開機，以便使用新的核心。'
+msg_make_audio_open='開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_audio_close='不開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_plugdev_open='開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_make_plugdev_close='不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_restart_prompt_for_audio='因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+msg_restart_prompt_for_plugdev='因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+msg_restart_prompt_for_dev='因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+msg_run_update_plugdev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+msg_run_update_dev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+msg_no_autologin_account='未找到自動登入帳號'
+msg_are_you_sure_reset_autologin_home_dir='你確認你要將自動登入帳號的環境重設為初始預設狀態'
+msg_warning_home_dir_will_be_deleted='警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+msg_these_accounts_are='這些帳號是'
+msg_ok_let_do_it='OK, 我們繼續做吧!'
+msg_do_not_reset_autologin_home_dir='不要重設自動登入帳號的家目錄'
+msg_created_autologin_ID_passwd_file="產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+msg_drbl_clonezilla_switch='切換企鵝龍單一系統印象檔與再生龍模式'
+msg_drbl_mode_switch='切換企鵝龍機制'
+msg_drbl_mode_switch_long="有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+msg_drbl_mode_0='使用完全企鵝龍模式'
+msg_drbl_mode_1='使用企鵝龍單一系統印象檔模式'
+msg_drbl_mode_2='不提供無碟GNU/Linux服務'
+msg_clonezilla_mode_switch='切換再生龍機制'
+msg_clonezilla_mode_switch_long='本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+msg_clonezilla_mode_0='使用完全再生龍模式'
+msg_clonezilla_mode_1='使用再生龍盒模式'
+msg_clonezilla_mode_2='不提供再生龍服務'
+msg_r_u_sure_want_to_del_autologin_accounts='你確認要移除這些自動登入帳號?'
+msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+msg_do_not_del_accounts='不要移除這些帳號'
+msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+msg_wol_3='3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+msg_wol_4="4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+msg_no_kernel_rpm_is_available='無法在這些地方找到核心的RPM檔:'
+msg_internet_connection='1. 你的網際網路連線正常。'
+msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+msg_enter_1_or_press_enter_to_view='輸入'1'或是按'Enter'鍵來看目前收集的狀態。'
+msg_enter_2_or_press_q_to_quit='輸入'2'或是'q'來結束收集。'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+msg_What_the_win_hostname_prefix='所還原的MS windows主機名稱的前置名稱是'
+msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+msg_install_glibc_etc_arch_by_yourself='如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+msg_prepare_kernel_for_clients='準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+msg_some_necessary_pkgs_not_installed='警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+msg_reset_all_existing_urpmi_setting='警告! 我們必須重新設定目前系統中的urpmi!'
+msg_some_required_pkgs_not_installed='這些必要的程式並沒有安裝'
+msg_use_drblsrv_instead="如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+msg_continue_may_not_work='如果你繼續的話，這個DRBL系統可能無法正常運作!'
+msg_switch_pxe_bg_mode='切換用戶端電腦PXE開機選單模式'
+msg_pxemenu_text='用戶端使用文字模式的開機選單'
+msg_pxemenu_graphic='用戶端使用圖形模式的開機選單'
+msg_only_one_kernel_meets_requirement='只有一個核心符合你設定的條件'
+msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+msg_this_might_take_several_minutes='這可能會需要一點時間...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+msg_ocs_iso_too_big_for_DVD='要產生的ISO檔太大，無法放到一片DVD上.'
+msg_unable_to_create_clonezilla_img_iso='無法產生這個再生龍還原專用光碟'
+msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+msg_format_as_FAT_16_32='如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+msg_this_is_disk_usage_status='這是磁碟的使用狀態'
+msg_boot_clonezilla_live_dev='現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+msg_clone_finished_choose_to='下一步要'
+msg_enter_cml='進入命令列'
+msg_clonezilla_is_free_and_no_warranty='**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
+msg_to_use_clonezilla_to_save_image_again='要再使用再生龍來存印象檔'
+msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+msg_if_src_part_is_ntfs='如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+msg_to_see_this_ocs_live_help_msg='注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+msg_image_source_for_ocs_live="如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+msg_modify_grub_config_if_necessary="你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+msg_this_script_will_create_SL_diskless='這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+msg_RAM_size_for_SL_drbl_client='建議你的用戶端電腦的記憶體最少要'
+msg_image_saved_from_dd='這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+msg_cons_for_dd_clone='使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+msg_will_be_inefficent_and_slow='這樣將會非常沒有效率，而且可能需要很久的時間'
+msg_fs_not_supported_by_partimage_ntfsclone='這個檔案系統partimage或是ntfsclone並不支援'
+msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+msg_target_dev_has_this_partition_table='你要寫入的硬碟有這樣的資訊表'
+msg_let_me_ask_you_again='容我再問你一次'
+msg_unable_to_mnt_ocsroot="無法掛載到$ocsroot"
+msg_mount_ocsroot_img_hint_short_des='掛載再生龍印象檔的目錄'
+msg_mount_ocsroo_img_hint_long_des="掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
+msg_mount_local_dev='掛載本機的分割區'
+msg_mount_sshfs='掛載SSH伺服器的目錄'
+msg_mount_smbfs='掛載網路芳鄰伺服器的目錄'
+msg_mount_nfs='掛載NFS伺服器的目錄'
+msg_mount_ftpfs='掛載FTP伺服器的目錄'
+msg_do_it_manually='自行手動調整'
+msg_skip_this_use_existing_ocsroot="使用現有的$ocsroot"
+msg_device_to_mount_as_ocsroot_do_not_mount_target_dev="掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
+msg_ip_address_or_FQDN_of_server='伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
+msg_smb_domain_in_server='網路芳鄰伺服器上的網域名稱'
+msg_if_no_smb_domain_skip_this='如果伺服器上沒有此設定，你可以略去此選項'
+msg_account_in_server='使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
+msg_sshfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
+msg_ftpfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
+msg_now_you_have_to_enter_passwd='現在你必須輸入對於這個帳號的密碼'
+msg_confirm_ssh_server_might_be_necessary='如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
+msg_ocs_img_dir_path="要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
+msg_enter_another_shell_hint='進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
+msg_existing_setting_is='現有的設定是'
+msg_start_clonezilla='使用再生龍'
+msg_start_clonezilla_or_enter_shell='使用再生龍或是登入(命令列) ?'
+msg_writable_dev_ex_usb_stick='可寫裝置如硬碟/隨身碟'
+msg_writable_fs_ex_nfs_smbfs='可寫網路磁碟如NFS/SMBFS'
+msg_readonly_dev_ex_CD='唯讀裝置如CD'
+msg_writable_dev_ramdisk='記憶體，關機後資料就消失。***不建議***'
+msg_warning_mount_ntfs_writable='警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
+msg_df_report='目前系統的掛載狀態'
+msg_hint_assign_IP_group="提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_hint_assign_MAC_group="提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_device_image_device_clone='兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
+msg_device_image_clone='硬碟/分割區[存到/來至]印象檔'
+msg_device_device_clone='硬碟/分割區複製到硬碟/分割區'
+msg_disk_to_local_disk='複製本機硬碟到本機硬碟'
+msg_disk_to_remote_disk='複製本機硬碟到它機硬碟'
+msg_part_to_local_part='複製本機分割區到本機分割區'
+msg_part_to_remote_part='複製本機分割區到它機分割區'
+msg_local_source_disk='選擇本機硬碟當來源母碟'
+msg_local_target_disk='選擇本機硬碟當目的碟'
+msg_local_source_part='選擇本機分割區當來源分割區'
+msg_local_target_part='選擇本機分割區當目的分割區'
+msg_ocs_onthefly_advanced_extra_param='直接複製再生龍模式額外的進階參數'
+msg_ocs_onthefly_param_g='在目地碟的開機磁區重新安裝grub'
+msg_ocs_onthefly_param_e='在目的碟的分割區調整檔案系統大小符合分割區大小'
+msg_ocs_onthefly_param_nogui='使用partimage的時候不顯示圖形介面'
+msg_ocs_onthefly_param_n='不要在目地碟的開機磁區產生分割區的分配表'
+msg_ocs_onthefly_param_m='不要複製開機管理程式(boot loader)'
+msg_ocs_onthefly_param_o='強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
+msg_ocs_onthefly_param_b='使用批次模式(危險!務必先確認設定正確)'
+msg_ocs_onthefly_param_v='印出詳細的資訊'
+msg_only_i686_kernel_available_in_centos_5='目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
+msg_do_you_want_to_clean_all_stale_mac_cfg="在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
+msg_something_went_wrong_when_start_drbl_related_srv='啟動DRBL相關服務的時候出現一些狀況!'
+msg_you_can_try_to_run_the_following_again='你可以嘗試再度執行以下指令看看'
+msg_try_drblsrv_offline="如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
+msg_very_unstable='非常不穩定'
+msg_not_stable='不穩定'
+msg_not_secure='不安全'
+msg_no_nic_is_found="找不到支援的網路卡."
+msg_choose_nic="請選擇一個網路卡\n(如果你有兩張或更多)"
+msg_send_dhcp_request_from="從網路卡送出 DHCP 要求:"
+msg_enter_IP_add_for_this_nic="請指定這張網卡的 IP 位址: "
+msg_enter_netmask_for_this_nic="請指定這張網卡的網路遮罩(Netmask): "
+msg_enter_default_gateway="請指定通訊閘(Gateway) "
+msg_enter_dns_server="請指定網域名稱伺服器(Nameserver) "
+msg_put_dnsserver_to_resolv_conf="將 Nameserver 設定至 /etc/resolv.conf "
+msg_append_dnsserver_to_resolv_conf="增設 Nameserver 至 /etc/resolv.conf :"
+msg_Network_config="網路設定"
+msg_choose_mode_to_setup_net="選擇你要的模式來設定這台電腦的網路"
+msg_use_dhcp_broadcast="使用DHCP來設定"
+msg_use_static_ip="設定固定IP位址"
+msg_use_pppoe_conf="使用PPPoE來設定"
+msg_setup_network_first='先設定網路'
+msg_hint_multiple_choice_select_by_space='///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
+msg_network_is_not_configured='網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
+msg_network_is_already_configured='發信網路已經設定了! 這台機器可用的IP位址是'
+
+#-----------------------------------------
+# some words
+msg_text_Enter='輸入'
+msg_text_for='對於'
+msg_Got_it='找到了'
+msg_Warning='警告'
+msg_uppercase_Warning='警告'
+msg_NOT_found='未找到'
+msg_Done='完成'
+msg_please='請'
+msg_browse='瀏覽'
+msg_or='或是'
+msg_for_more_details='更詳細的資料'
+msg_Failed_to_get='未能抓取'
+msg_Failed_to_install='未能安裝'
+msg_done='完成'
+msg_note='注意'
+msg_and='與'
+msg_clonezilla='再生龍'
+msg_error='錯誤'
+msg_restore='還原'
+msg_txt_check='檢查'
+msg_ex='例如'
+msg_exit='退出'
+msg_poweroff='關機'
+msg_reboot='重新開機'
+msg_then='然後'
+msg_unknown='未知'
+msg_experimental='實驗性質'
+msg_failed="失敗"
Index: drbl_ui/backup/old_langs/tw.UTF-8_original.po
===================================================================
--- drbl_ui/backup/old_langs/tw.UTF-8_original.po	(revision 20)
+++ drbl_ui/backup/old_langs/tw.UTF-8_original.po	(revision 20)
@@ -0,0 +1,1916 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2006-11-04 09:59+CST\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf8\n"
+"Content-Transfer-Encoding: cp936\n"
+"Generated-By: pygettext.py 1.5\n"
+
+msgid 'msg_delimiter_star_line'
+msgstr '*****************************************************'.
+
+msgid 'msg_install_RH'
+msgstr '在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_MDK'
+msgstr '在 Mandrake Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_DBN'
+msgstr '在 Debian Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_SUSE'
+msgstr '在 SuSE Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_OS_version'
+msgstr '你的作業系統版本'
+
+msgid 'msg_is_not_supported'
+msgstr 'DRBL 不支援這個版本!'
+
+msgid 'msg_press_ctrl_c_stop'
+msgstr '請按 Ctrl-C 來中斷程式!'
+
+msgid 'msg_set_proxy'
+msgstr '你要設定代理伺服器嗎?'
+
+msgid 'msg_http_proxy_server'
+msgstr '請輸入 HTTP 代理伺服器的位址: '
+
+msgid 'msg_http_proxy_port'
+msgstr '請輸入 HTTP 代理伺服器的連接埠: '
+
+msgid 'msg_ftp_proxy_server'
+msgstr '請輸入 FTP 代理伺服器的位址: '
+
+msgid 'msg_ftp_proxy_port'
+msgstr '請輸入 FTP 代理伺服器的連接埠: '
+
+msgid 'msg_http_proxy_you_set'
+msgstr '你設定的 HTTP 代理伺服器是: '
+
+msgid 'msg_ftp_proxy_you_set'
+msgstr '你設定的 FTP 代理伺服器是: '
+
+msgid 'msg_drbl_test_option'
+msgstr '你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+
+msgid 'msg_drbl_unstable_option'
+msgstr '你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+
+msgid 'msg_drbl_extra_option'
+msgstr '你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+
+msgid 'msg_drbl_netinstall_option'
+msgstr '你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+
+msgid 'msg_firefly_option'
+msgstr '你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+
+msgid 'msg_serial_console_option'
+msgstr '你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+
+msgid 'msg_know_nothing_serial_console'
+msgstr '如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+
+msgid 'msg_serial_console_only'
+msgstr '用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+
+msgid 'msg_redirect_to_which_port'
+msgstr '請輸入要使用的序列埠(Serial Port)?'
+
+msgid 'msg_serial_console_speed'
+msgstr '您的序列終端機速度是多少?'
+
+msgid 'msg_serial_console_parameter'
+msgstr '請輸入序列終端機的參數'
+
+msgid 'msg_smp_clients'
+msgstr '用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+
+msgid 'msg_smp_clients_MDK'
+msgstr '用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+
+msgid 'msg_smp_clients_RH'
+msgstr "$msg_smp_clients"
+
+msgid 'msg_install_apt'
+msgstr '安裝 APT ...'
+
+msgid 'msg_no_wget_get_it'
+msgstr '沒有 wget 程式? 嘗試安裝 wget 程式...'
+
+msgid 'msg_no_apt_get_it'
+msgstr '沒有 apt 程式? 嘗試安裝 apt 程式...'
+
+msgid 'msg_wget_installed_failure'
+msgstr '未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+
+msgid 'msg_wget_installed_successful'
+msgstr 'wget程式安裝成功!'
+
+msgid 'msg_apt_already_installed'
+msgstr 'apt 已經安裝了. 神奇!!! 你真是優秀!'
+
+msgid 'msg_backup_apt_sources'
+msgstr '備份原來的 apt 來源檔(sources.list) ...'
+
+msgid 'msg_setup_apt_sources_MDK'
+msgstr '為 MDK 設定 apt 的來源檔(sources.list)'
+
+msgid 'msg_enjoy_apt'
+msgstr '現在開始享用 APT!'
+
+msgid 'msg_clean_apt_cache'
+msgstr '清除apt的快取檔案...'
+
+msgid 'msg_check_apt_integrity'
+msgstr '套件完整性檢查...'
+
+msgid 'msg_upgrade_system_question'
+msgstr '你是否要升級你的作業系統?'
+
+msgid 'msg_upgrade_whole_system'
+msgstr '升級作業系統中...'
+
+msgid 'msg_check_installed_kernel'
+msgstr '檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+
+msgid 'msg_is_already_installed'
+msgstr '已經被安裝在您的系統中...'
+
+msgid 'msg_need_to_install_kernel'
+msgstr '我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+
+msgid 'msg_create_nbi_files'
+msgstr '產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+
+msgid 'msg_latest_kernel_for_clients'
+msgstr '用戶端電腦使用的最新核心是'
+
+msgid 'msg_no_drbl_script'
+msgstr '你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+
+msgid 'msg_create_files_for_PXELINUX'
+msgstr '建立PXE網路開機的設定檔...'
+
+msgid 'msg_prepare_files_for_PXE_client'
+msgstr '備妥PXE網路開機用戶端的設定檔與印象檔...'
+
+msgid 'msg_PXE_NOT_work'
+msgstr 'PXE 網路開機無法使用!!!'
+
+msgid 'msg_press_enter_to_continue'
+msgstr '按 Enter 鍵繼續...'
+
+msgid 'msg_press_enter_to_exit'
+msgstr "按 Enter 鍵離開."
+
+msgid 'msg_FreeDOS_NOT_work'
+msgstr 'FreeDOS 遠端開機無法使用!!!'
+
+msgid 'msg_no_apt_already_uninstall'
+msgstr '找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+
+msgid 'msg_program_stop'
+msgstr '程式停止!'
+
+msgid 'msg_remove_SmallLinuxs_question'
+msgstr '如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+
+msgid 'msg_remove_drbl_setup_question'
+msgstr '你是否要移除DRBL這個程式?'
+
+msgid 'msg_remove_apt_question'
+msgstr '你是否要移除 apt ?'
+
+msgid 'msg_remove_yum_repo_question'
+msgstr '你是否要清除yum的來源設定檔?'
+
+msgid 'msg_remove_urpmi_media_question'
+msgstr '你是否要清除 urpmi的來源設定檔?'
+
+msgid 'msg_cleaning_apt_cache'
+msgstr '正在清除 apt 的快取檔案...'
+
+msgid 'msg_cleaning_tftpboot_and_misc'
+msgstr '移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+
+msgid 'msg_uninstalling_DRBL_RH'
+msgstr '移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_MDK'
+msgstr '移除 Mandrake Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_DBN'
+msgstr '移除 Debian Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_SUSE'
+msgstr '移除 SuSE Linux 上的 DRBL 套件中...'
+
+msgid 'msg_analyzing_rpm_info'
+msgstr '分析已安裝套件資訊中... 這可能需要幾分鐘...'
+
+msgid 'msg_failed_to_install_pkgs'
+msgstr '安裝程式失敗，無法繼續執行!'
+
+msgid 'msg_check_network_and_url'
+msgstr '請檢查您的電腦和這個網址(URL)間的連線狀況：'
+
+msgid 'msg_not_determine_OS'
+msgstr '無法判斷 Linux 作業系統的種類與版本!!!'
+
+msgid 'msg_enter_OS_ver'
+msgstr '請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+
+msgid 'msg_clean_apt_cache_RH'
+msgstr '正在清除 apt 的快取檔案...'
+
+msgid 'msg_install_DRBL_necesary_files'
+msgstr '安裝 DRBL 所需之相關程式...'
+
+msgid 'msg_select_url_path'
+msgstr '你選擇的伺服器網址(URL)與路徑'
+
+msgid 'msg_drbl_driver'
+msgstr '您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+
+msgid 'msg_smp_optimization_kernel'
+msgstr '您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+
+msgid 'msg_apt_optimization_question'
+msgstr '您用戶端的電腦要使用哪個等級CPU的核心?'
+
+msgid 'msg_optimization_level_0'
+msgstr '0 -> 使用i386 CPU等級架構'
+
+msgid 'msg_optimization_level_1'
+msgstr '1 -> 使用i586 CPU等級架構'
+
+msgid 'msg_optimization_level_2'
+msgstr '2 -> 使用與此DRBL伺服器同等級CPU的核心'
+
+msgid 'msg_N_note'
+msgstr '注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+
+msgid 'msg_different_level_machine_prompt'
+msgstr '如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+
+msgid 'msg_diff_arch_explain'
+msgstr '如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+
+msgid 'msg_not_sure_better_1'
+msgstr '如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+
+msgid 'msg_same_optimization'
+msgstr '您選用與伺服器同等級的 CPU 最佳化.'
+
+msgid 'msg_i586_optimization'
+msgstr '你選用 i586 架構的 CPU 最佳化.'
+
+msgid 'msg_no_optimization'
+msgstr '你未選用 CPU 最佳化，預設使用 i386 架構.'
+
+msgid 'msg_glibc_openssl_upgrade_question'
+msgstr '如果 glibc 與 openssl 有較新版本，是否要升級?'
+
+msgid 'msg_glibc_openssl_keep'
+msgstr '0 -> 不升級 glibc 與 openssl.'
+
+msgid 'msg_keep_glibc_upgrade_openssl'
+msgstr '1 -> 只升級 openssl,'
+
+msgid 'msg_upgrade_glibc_keep_openssl'
+msgstr '2 -> 只升級 glibc,'
+
+msgid 'msg_upgrade_glibc_openssl'
+msgstr '3 -> 升級 glibc 與 openssl (預設),'
+
+msgid 'msg_warning_glibc_upgrade'
+msgstr '警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+
+msgid 'msg_upgrade_glibc_make_you_cry'
+msgstr '為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+
+msgid 'msg_install_dhcp_tftp_etc'
+msgstr '正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+
+msgid 'msg_optimization_is_on'
+msgstr '啟用與伺服器同等級 CPU 最佳化.'
+
+msgid 'msg_optimization_is_off'
+msgstr '未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+
+msgid 'msg_install_i386_of'
+msgstr '安裝 i386 架構的'
+
+msgid 'msg_searching_glibc_in_ayo'
+msgstr '在 ayo 伺服器中尋找 glibc 程式'
+
+msgid 'msg_searching_openssl_in_ayo'
+msgstr '在 ayo 伺服器中尋找 openssl 程式'
+
+msgid 'msg_searching_openssl_perl_in_ayo'
+msgstr '在 ayo 伺服器中尋找 openssl-perl 程式'
+
+msgid 'msg_searching_pkg_in_ayo'
+msgstr '在 ayo 伺服器中尋找可用的程式'
+
+msgid 'msg_install_mkinitrd_net_etherboot'
+msgstr '安裝 mkpxeinitrd-net, etherboot, partimage...'
+
+msgid 'msg_removing_the_old'
+msgstr '移除舊的'
+
+msgid 'msg_creating_dev'
+msgstr '產生用戶端電腦的設備檔案...'
+
+msgid 'msg_get_dev'
+msgstr '擷取設備檔案...'
+
+msgid 'msg_clean_tmp_dev'
+msgstr '清除設備檔案的暫存目錄...'
+
+msgid 'msg_remove_old_nbi'
+msgstr '移除 /tftpboot 中舊的 nbi 檔案...'
+
+msgid 'msg_install_extra_driver'
+msgstr '安裝額外的驅動程式...'
+
+msgid 'msg_no_extra_driver'
+msgstr '在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+
+msgid 'msg_make_client_serial_console'
+msgstr '建立用戶端序列終端機設定...'
+
+msgid 'msg_kernel_being_used'
+msgstr '警告! 這個核心目前正在使用中: '
+
+msgid 'msg_warning_not_to_remove'
+msgstr '警告! 建議您最好不要移除!!!'
+
+msgid 'msg_not_remove'
+msgstr '請在下個步驟回答"N"!'
+
+msgid 'msg_which_ayo_repository'
+msgstr '請選取安裝時欲使用的 ayo 伺服器:'
+
+msgid 'msg_enter_FQDN_IP_yum_repository'
+msgstr '請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+
+msgid 'msg_enter_the_path_for_dir_ver_updates'
+msgstr '請輸入該網址中，以下目錄所在的路徑'
+
+msgid 'msg_os_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw. (預設)'
+
+msgid 'msg_os_ayo_repository_1'
+msgstr '1 -> ayo.freshrpms.net,'
+
+msgid 'msg_os_ayo_repository_3'
+msgstr '3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+
+msgid 'msg_os_ayo_repository_5'
+msgstr '5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+
+msgid 'msg_os_ayo_repository_use_existing_yum_config'
+msgstr '4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+
+msgid 'msg_os_ayo_repository_enter_by_yourself'
+msgstr '5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+
+msgid 'msg_drbl_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw. (預設)'
+
+msgid 'msg_drbl_ayo_repository_1'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_drbl_ayo_repository_3'
+msgstr '3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+
+msgid 'msg_drbl_ayo_repository_5'
+msgstr '5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+
+msgid 'msg_drbl_ayo_repository_enter_by_yourself'
+msgstr '5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+
+msgid 'msg_os_ayo_repository_1_mdk'
+msgstr '1 -> mdk.linux.org.tw,'
+
+msgid 'msg_os_ayo_repository_2_mdk'
+msgstr '2 -> distro.ibiblio.org,'
+
+msgid 'msg_drbl_ayo_repository_1_mdk'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2_mdk'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_apt_not_compatible'
+msgstr '警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+
+msgid 'msg_do_u_want_to_remove'
+msgstr '你要移除嗎？'
+
+msgid 'msg_warning_apt_not_compatible_and_fail'
+msgstr '你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+
+msgid 'msg_rm_apt'
+msgstr '正在移除 apt 與 libapt-pkg0...'
+
+msgid 'msg_search_kernel_in_ayo'
+msgstr '在 ayo 資料庫中尋找最新的'
+
+msgid 'msg_latest_kernel_in_ayo'
+msgstr '在 ayo 資料庫中,最新的核心是'
+
+msgid 'msg_install_kernel_might_take_several_minutes'
+msgstr '安裝這個核心可能需要一些時間，請耐心等候... '
+
+msgid 'msg_latest_kernel_is_already_installed'
+msgstr '給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+
+msgid 'msg_error_no_drbl_kernel_in_apt'
+msgstr '在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+
+msgid 'msg_change_opt_from_i386_to_i586'
+msgstr '由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+
+msgid 'msg_change_opt_from_i586_to_i386'
+msgstr '由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+
+msgid 'msg_are_you_sure_run_impatient'
+msgstr '這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+
+msgid 'msg_run_step_by_step'
+msgstr '很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+
+msgid 'msg_run_drbl4imp'
+msgstr '好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+
+msgid 'msg_total_avail_space'
+msgstr '系統可以提供的空間(/tftpboot與/)有'
+
+msgid 'msg_necessary_space_setup_drbl'
+msgstr '估計安裝DRBL需要的空間是'
+
+msgid 'msg_total_client_no'
+msgstr 'DRBL用戶端的總數目是'
+
+msgid 'msg_system_maybe_not_enough_space'
+msgstr '你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+
+msgid 'msg_logout_X_for_thin_client_gdm'
+msgstr '如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+
+msgid 'msg_restart_X_for_thin_client_kdm'
+msgstr '你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+
+msgid 'msg_logout_X_for_modified_gdm_config_work'
+msgstr '如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+
+msgid 'msg_logout_X_for_modified_kdm_config_work'
+msgstr '你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+
+msgid 'msg_restart_graphic_mode_later'
+msgstr '你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+
+msgid 'msg_turn_on_gdm_remote_access'
+msgstr '開放GDM遠端連線...'
+
+msgid 'msg_gdm_remote_access_is_already_on'
+msgstr 'DRBL伺服器中的GDM遠端連線已經開啟!'
+
+msgid 'msg_set_thin_client_mode_for_clients'
+msgstr '正在設定終端機模式給用戶端電腦來使用...'
+
+msgid 'msg_gdm_remote_access_is_already_off'
+msgstr 'DRBL伺服器中的GDM遠端連線已經關閉!'
+
+msgid 'msg_disable_thin_client_mode_for_clients'
+msgstr '關閉用戶端的終端機模式!'
+
+msgid 'msg_turn_off_gdm_remote_access'
+msgstr '關閉GDM遠端連線...'
+
+msgid 'msg_kdm_remote_access_is_already_on'
+msgstr 'DRBL伺服器中的KDM遠端連線已經開啟!'
+
+msgid 'msg_turn_off_kdm_remote_access'
+msgstr '開放KDM遠端連線...'
+
+msgid 'msg_kdm_remote_access_is_already_off'
+msgstr 'DRBL伺服器中的KDM遠端連線已經關閉!'
+
+msgid 'msg_dm_in_DRBL_server'
+msgstr 'DRBL伺服器中的圖形顯示管理程式(display manager)是'
+
+msgid 'msg_hint_for_answer'
+msgstr '提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+
+msgid 'msg_available_kernel'
+msgstr '可用的核心有'
+
+msgid 'msg_which_os_ayo_repository'
+msgstr '請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_which_drbl_ayo_repository'
+msgstr '請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_os_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw,'
+
+msgid 'msg_os_ayo_repository_1'
+msgstr '1 -> ayo.freshrpms.net,'
+
+msgid 'msg_os_ayo_repository_download_fedora_redhat_com'
+msgstr '1 -> download.fedora.redhat.com,'
+
+msgid 'msg_which_drbl_ayo_repository'
+msgstr '請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_drbl_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_1'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_drbl_server_is_ready'
+msgstr 'DRBL伺服器已經就緒!'
+
+msgid 'msg_all_set_you_can_turn_on_clients'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+
+msgid 'msg_etherboot_5_4_is_required'
+msgstr '如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+
+msgid 'msg_win_fail_with_Missing_OS'
+msgstr '如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+msgid 'msg_nchc_title'
+msgstr 'NCHC - 國家高速網路與計算中心 - 台灣'
+
+msgid 'msg_drbl_title'
+msgstr '企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+
+msgid 'msg_switch_client_mode'
+msgstr '切換模式'
+
+msgid 'msg_remote_linux'
+msgstr '用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+
+msgid 'msg_remote_linux_graphic'
+msgstr '用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+
+msgid 'msg_remote_linux_text'
+msgstr '用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+
+msgid 'msg_thin_client'
+msgstr '用戶端遠距開機Linux圖形介面,終端機模式'
+
+msgid 'msg_remote_memtest'
+msgstr '用戶端遠距開機做記憶體測試(Memtest86+)'
+
+msgid 'msg_remote_fdos'
+msgstr '用戶端遠距開機使用自由DOS(FreeDOS)'
+
+msgid 'msg_clonezilla_start'
+msgstr '啟動再生龍(clonezilla)模式'
+
+msgid 'msg_clonezilla_stop'
+msgstr '停止再生龍(clonezilla)模式'
+
+msgid 'msg_netinstall'
+msgstr '用戶端經由網路安裝Linux套件'
+
+msgid 'msg_local'
+msgstr '用戶端使用本機作業系統開機'
+
+msgid 'msg_reboot'
+msgstr '現在重新啟動用戶端電腦'
+
+msgid 'msg_shutdown'
+msgstr '現在關閉用戶端電腦'
+
+msgid 'msg_Wake_on_LAN'
+msgstr '現在利用Wake-on-LAN開啟用戶端電腦'
+
+msgid 'msg_switch_pxe_menu'
+msgstr '切換用戶端電腦開機的選單'
+
+msgid 'msg_title_set_all_clients'
+msgstr '設定所有的用戶端機器?'
+
+msgid 'msg_set_all_clients'
+msgstr '你是否要設定所有的用戶端機器模式?'
+
+msgid 'msg_select_all_clients_or_select_part_them'
+msgstr '你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+
+msgid 'msg_set_all_clients_des'
+msgstr '如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+
+msgid 'msg_select_all_clients'
+msgstr '選擇所有的用戶端'
+
+msgid 'msg_select_clients'
+msgstr '根據IP或是MAC位址選擇部份用戶端'
+
+msgid 'msg_hide_reveal'
+msgstr '隱藏或是顯示PXE用戶端電腦的開機選單'
+
+msgid 'msg_choose_the_action'
+msgstr '選擇動作為'
+
+msgid 'msg_hide_pxe_menus'
+msgstr '隱藏用戶端電腦某些已經被顯示的開機選單'
+
+msgid 'msg_reveal_pxe_menus'
+msgstr '顯示用戶端電腦某些已經被隱藏的開機選單'
+
+msgid 'msg_setdefault_pxe_menu'
+msgstr '設定用戶端電腦的開機預設選單'
+
+msgid 'msg_title_hide'
+msgstr '隱藏用戶端電腦的那一個開機選單?'
+
+msgid 'msg_hide_list_des'
+msgstr '隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+
+msgid 'msg_reveal_title'
+msgstr '顯示用戶端電腦的那一個開機選單?'
+
+msgid 'msg_reveal_list_des'
+msgstr '顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+
+msgid 'msg_setdefault_title'
+msgstr '哪一個是用戶端電腦的開機預設選單?'
+
+msgid 'msg_setdefault_list_des'
+msgstr '選定用戶端電腦開機時的預設選單'
+
+msgid 'msg_choose_netinstall_imag'
+msgstr '選擇要經由網路安裝的Linux套件'
+
+msgid 'msg_nchc_clonezilla'
+msgstr '再生龍(Clonezilla) - 開放原始碼再生還原系統'
+
+msgid 'msg_nchc_drbl'
+msgstr '企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+
+msgid 'msg_nchc_free_software_labs'
+msgstr '再生龍 - 國網中心自由軟體實驗室 - 台灣'
+
+msgid 'msg_specify_hosts'
+msgstr '指定用戶端機器'
+
+msgid 'msg_choose_the_multicast_method'
+msgstr '群播(multicast)還原時選定方式為'
+
+msgid 'msg_by_MAC_address'
+msgstr '經由MAC位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_by_IP_address'
+msgstr '經由IP位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_MAC_address_list'
+msgstr '經由MAC位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_MAC_address_grp'
+msgstr '經由MAC位址群組來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_IP_address_list'
+msgstr '經由IP位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_IP_address_grp'
+msgstr '經由IP位址群組來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_multicast_clonezilla_warning'
+msgstr '再生龍群播模式警告!'
+
+msgid 'msg_multicast_clonezilla_warning_des'
+msgstr '你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+
+msgid 'msg_choose_param_to_set'
+msgstr '設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
+
+msgid 'msg_hint_for_not_fdisk'
+msgstr '*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+
+msgid 'msg_choose_one_compression_param_to_save'
+msgstr '選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+
+msgid 'msg_ocs_param_n'
+msgstr '當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+
+msgid 'msg_ocs_param_u'
+msgstr '在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+
+msgid 'msg_ocs_param_c'
+msgstr '用戶端電腦在開始複製前會再次確認是否要執行'
+
+msgid 'msg_ocs_param_s'
+msgstr '用戶端電腦開機時略去硬體偵測'
+
+msgid 'msg_ocs_param_f'
+msgstr '當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+
+msgid 'msg_ocs_param_j'
+msgstr '使用sfdisk來產生分割區而不用dd'
+
+msgid 'msg_ocs_param_j0'
+msgstr '使用dd來產生分割區而不用sfdisk'
+
+msgid 'msg_ocs_param_k'
+msgstr '不在用戶端電腦硬碟再產生分割區'
+
+msgid 'msg_ocs_param_t'
+msgstr '用戶端電腦不再復原MBR (Mater Boot Record)'
+
+msgid 'msg_ocs_param_e'
+msgstr '用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+
+msgid 'msg_ocs_param_y'
+msgstr '伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+
+msgid 'msg_ocs_param_y0'
+msgstr '伺服器將總是提供再生模式給用戶端-預設本機開機'
+
+msgid 'msg_ocs_param_y1'
+msgstr '伺服器將總是提供再生模式給用戶端-預設是還原'
+
+msgid 'msg_ocs_param_y2'
+msgstr '伺服器將總是提供再生模式給用戶端-預設是DRBL'
+
+msgid 'msg_ocs_param_z0'
+msgstr '不壓縮(最快但是最大的印象檔)'
+
+msgid 'msg_ocs_param_z1'
+msgstr '使用gzip壓縮(快速但是較小的印象檔)'
+
+msgid 'msg_ocs_param_z2'
+msgstr '使用bzip2壓縮(最慢但是最小的印象檔)'
+
+msgid 'msg_ocs_param_z3'
+msgstr '使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+
+msgid 'msg_ocs_param_g_auto'
+msgstr '用戶端電腦重新在它的硬碟的MBR中安裝grub'
+
+msgid 'msg_ocs_param_p_true'
+msgstr '用戶端複製完畢時不做其他任何動作'
+
+msgid 'msg_ocs_param_p_poweroff'
+msgstr '用戶端複製完畢後關機'
+
+msgid 'msg_ocs_param_p_reboot'
+msgstr '用戶端複製完畢後重新開機'
+
+msgid 'msg_ocs_param_p_choose'
+msgstr '在用戶端複製完畢時才選擇模式'
+
+msgid 'msg_choose_post_mode_after_clone'
+msgstr '用戶端複製完畢後的動作'
+
+msgid 'msg_default_pxemenu_for_clone'
+msgstr '開機時候PXE預設的選單是'
+
+msgid 'msg_ocs_param_o0'
+msgstr '用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
+
+msgid 'msg_ocs_param_o1'
+msgstr '用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
+
+msgid 'msg_ocs_param_hn0'
+msgstr '復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
+
+msgid 'msg_ocs_param_hn1'
+msgstr '復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+
+msgid 'msg_ocs_param_q'
+msgstr '使用ntfsclone而不用partimage來存NTFS分割區'
+
+msgid 'msg_ocs_param_a'
+msgstr '不要強迫開啟硬碟的DMA'
+
+msgid 'msg_ocs_param_nogui'
+msgstr 'partimage不使用圖形顯示,只顯示文字'
+
+msgid 'msg_ocs_param_v'
+msgstr '顯示詳細資訊(尤其是udpcast的訊息)'
+
+msgid 'msg_ocs_param_r'
+msgstr '在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+
+msgid 'msg_ocs_param_x'
+msgstr '在群播還原時使用全雙工網路'
+
+msgid 'msg_ocs_param_ns'
+msgstr 'ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+
+msgid 'msg_ocs_param_broadcast'
+msgstr '群播還原時,使用broadcast。適用於交換器不開放multicast'
+
+msgid 'msg_ocs_param_skip'
+msgstr '不選用此選項'
+
+msgid 'msg_ocs_param_notfs_ok'
+msgstr '假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+
+msgid 'msg_clonezilla_advanced_extra_param'
+msgstr '再生龍額外的進階參數'
+
+msgid 'msg_skip_set_advanced_extra_param'
+msgstr '你是否要*略去*設定再生龍額外的進階參數? \n
+
+msgid '可用的參數有: \n''
+msgid 'msg_skip_set_save_compression_extra_param'
+msgstr '你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n
+
+msgid '可用的參數有: \n''
+msgid 'msg_no_network_installation_img'
+msgstr '找不到網路安裝的印象檔!'
+
+msgid 'msg_no_network_installation_img_des'
+msgstr "在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+
+msgid 'msg_start_clonezilla_mode'
+msgstr '啟動再生龍模式'
+
+msgid 'msg_choose_mode'
+msgstr '選定模式'
+
+msgid 'msg_clonezilla_save_disk'
+msgstr '儲存用戶端電腦的整個硬碟'
+
+msgid 'msg_clonezilla_restore_disk'
+msgstr '還原用戶端電腦的整個硬碟'
+
+msgid 'msg_clonezilla_save_parts'
+msgstr '儲存用戶端電腦的硬碟分割區'
+
+msgid 'msg_clonezilla_restore_parts'
+msgstr '還原用戶端電腦的硬碟分割區'
+
+msgid 'msg_clonezilla_save_hda1'
+msgstr '儲存用戶端hda1(即將棄用，請使用上面功能)'
+
+msgid 'msg_clonezilla_restore_hda1'
+msgstr '還原用戶端hda1(即將棄用，請使用上面功能)'
+
+msgid 'msg_clonezilla_selec_in_client'
+msgstr '在用戶端選擇儲或還原(限點播模式)'
+
+msgid 'msg_choose_the_mode_to_restore_disk'
+msgstr '選擇還原用戶端電腦的整個硬碟時的模式'
+
+msgid 'msg_choose_the_mode_to_restore_parts'
+msgstr '選擇還原用戶端電腦的硬碟分割區時的模式'
+
+msgid 'msg_choose_the_mode_to_restore_hda1'
+msgstr '選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+
+msgid 'msg_abandon_hda1'
+msgstr '注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+
+msgid 'msg_unicast_restore'
+msgstr '點播還原(unicast)'
+
+msgid 'msg_multicast_restore'
+msgstr '群播還原(multicast)'
+
+msgid 'msg_choose_the_image_to_restore'
+msgstr '選擇印象檔來做還原'
+
+msgid 'msg_time_to_wait'
+msgstr '設定時間來等待用戶端電腦開始複製'
+
+msgid 'msg_clients_to_wait'
+msgstr '直接設定用戶端電腦的數量來複製'
+
+msgid 'msg_clients_time_to_wait'
+msgstr '設定用戶端數量來複製，並且給定最長等待時間'
+
+msgid 'msg_how_many_clients_to_restore'
+msgstr '多少台用戶端電腦要還原'
+
+msgid 'msg_input_name_to_save_the_img'
+msgstr '輸入一個名稱來存這個印象檔'
+
+msgid 'msg_time_to_wait_sec'
+msgstr '最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+
+msgid 'msg_max_time_to_wait_sec'
+msgstr "最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議>=$SLEEP_TIME_AFTER_PART_CLONED)"
+
+msgid 'msg_you_must_input_filename'
+msgstr '你必須輸入一個名稱'
+
+msgid 'msg_you_must_input_legal_filename'
+msgstr '你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+
+msgid 'msg_you_must_input_partition'
+msgstr '你必須輸入一個分割區'
+
+msgid 'msg_please_do_it_again'
+msgstr '請再做一次'
+
+msgid 'msg_choose_the'
+msgstr '選擇這個'
+
+msgid 'msg_to_save'
+msgstr '來存(只顯示未被掛載的)'
+
+msgid 'msg_the_image'
+msgstr '這個印象檔名稱'
+
+msgid 'msg_was_saved_before'
+msgstr '存在，這個印象檔名稱已經在使用'
+
+msgid 'msg_do_you_want_to_replace'
+msgstr '你是否要覆蓋它'
+
+msgid 'msg_linux_disk_MS_mapping'
+msgstr '硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
+
+msgid 'msg_linux_parts_MS_mapping'
+msgstr '分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
+
+msgid 'msg_choose_disks_to_save'
+msgstr '選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
+
+msgid 'msg_choose_parts_to_save'
+msgstr '選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
+
+msgid 'msg_choose_the_disks_to_restore'
+msgstr '選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
+
+msgid 'msg_choose_the_parts_to_restore'
+msgstr '選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
+
+msgid 'msg_no_umounted_disks_found'
+msgstr '找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
+
+msgid 'msg_no_umounted_parts_found'
+msgstr '找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+
+msgid 'msg_you_can_not_hide_all_pxe_menus'
+msgstr '你不能隱藏所有的選單'
+
+msgid 'msg_no_modification'
+msgstr '略去任何修改'
+
+msgid 'msg_install_via_network'
+msgstr '經由網路安裝'
+
+msgid 'msg_range_found_in_dhcpd_conf'
+msgstr '警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+
+msgid 'msg_you_are_using_multicast_clonezilla'
+msgstr '你正使用群播(multicast)的再生龍環境，你務必確認：'
+
+msgid 'msg_ethernet_port_is_up_confirm'
+msgstr '1. 這張網路卡已經啟動並且有插上網路線'
+
+msgid 'msg_more_NIC_connect_each_other'
+msgstr '2. 如果你的DRBL環境中使用超過1個(>=2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+
+msgid 'msg_switch_drbl_service'
+msgstr '啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+
+msgid 'msg_start_drbl_all_services'
+msgstr '啟動DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_stop_drbl_all_services'
+msgstr '停止DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_restart_drbl_all_services'
+msgstr '重新啟動DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_add_drbl_all_services'
+msgstr '加上DRBL伺服器中的所有DRBL相關服務'
+
+msgid 'msg_del_drbl_all_services'
+msgstr '移除DRBL伺服器中的所有DRBL相關服務'
+
+msgid 'msg_choose_action'
+msgstr '選擇動作為'
+
+msgid 'msg_login_switch'
+msgstr '切換DRBL客戶端機器的圖形介面登入模式'
+
+msgid 'msg_normal_login'
+msgstr '一般登入(要求使用者輸入帳號密碼來登入)'
+
+msgid 'msg_auto_login'
+msgstr '自動登入'
+
+msgid 'msg_timed_login'
+msgstr '限時登入'
+
+msgid 'msg_turn_on_client_to_make_template'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+
+msgid 'msg_turn_on_client_to_clone'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+
+msgid 'msg_turn_on_client_to_select_clone_type'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+
+msgid 'msg_client_job_are_logged_in'
+msgstr '用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+
+msgid 'msg_client_sfdisk_log_are_in'
+msgstr '用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+
+msgid 'msg_set_the_clients_root_passwd'
+msgstr '設定用戶端管理者(root)密碼'
+
+msgid 'msg_new_passwd_prompt'
+msgstr '輸入新的密碼: (螢幕上只會出現星號*)'
+
+msgid 'msg_do_you_want_set_yum_repo'
+msgstr '你要不要自己選yum的儲藏庫?'
+
+msgid 'msg_set_yum_conf_yes_prompt'
+msgstr '如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+
+msgid 'msg_set_yum_conf_no_prompt'
+msgstr '如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+
+msgid 'msg_need_lynx_to_parse_config'
+msgstr '需要lynx來判斷相關的網址，現在安裝lynx...'
+
+msgid 'msg_need_curl_etc_to_parse_config'
+msgstr '需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+
+msgid 'msg_try_to_update_some_pkgs'
+msgstr '如果找到新版的程式，嘗試升級某些需要的程式...'
+
+msgid 'msg_force_to_upgrade_some_pkgs'
+msgstr '嘗試強迫升級某些程式...'
+
+msgid 'msg_install_net_install_images'
+msgstr '安裝某些Linux套件的網路安裝印象檔...'
+
+msgid 'msg_clean_dhcpd_lease'
+msgstr '強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+
+msgid 'msg_client_reautologin'
+msgstr '強迫用戶端重新自動登入' 
+
+msgid 'msg_clean_autologin_account'
+msgstr '移除所有自動登入帳號(全部機器)'
+
+msgid 'msg_reset_autologin_account'
+msgstr '還原所有自動登入的環境為初始預設(全部機器)'
+
+msgid 'msg_re_deploy'
+msgstr '把伺服器的檔案更新到用戶端中(全部機器)'
+
+msgid 'msg_dcs_others'
+msgstr '其他模式或是指令'
+
+msgid 'msg_dcs_more_modes'
+msgstr '更多其他模式或是指令'
+
+msgid 'msg_2_kernel_availables'
+msgstr '有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+
+msgid 'msg_from_this_drbl_server'
+msgstr '來自於這台DRBL伺服器'
+
+msgid 'msg_from_apt_repository'
+msgstr '來自於apt的儲藏庫'
+
+msgid 'msg_from_ayo_repository'
+msgstr '來自於apt或是yum的儲藏庫'
+
+msgid 'msg_install_kernel_for_clients'
+msgstr '安裝用戶端電腦所需的核心'
+
+msgid 'msg_which_kernel_do_you_perfer'
+msgstr '你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+
+msgid 'msg_you_choose'
+msgstr '你選擇'
+
+msgid 'msg_chosen_kernel'
+msgstr '選定的核心為'
+
+msgid 'msg_not_available_enter_again'
+msgstr '找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+
+msgid 'msg_hosts_allow_deny_is_set'
+msgstr '警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+
+msgid 'msg_you_must_make_sure_these_clients'
+msgstr '你必須確認這些用戶端的電腦:'
+
+msgid 'msg_can_access_this_DRBL_server'
+msgstr '可以連接到這台DRBL伺服器!'
+
+msgid 'msg_otherwise_client_fail_to_boot'
+msgstr '否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+
+msgid 'msg_if_you_like_you_can_reboot_to_make_sure_everthing'
+msgstr '如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+
+msgid 'msg_do_not_create_part'
+msgstr '用戶端不再產生硬碟分割表!'
+
+msgid 'msg_do_not_restore_mbr'
+msgstr '用戶端不再復原MBR!'
+
+msgid 'msg_you_have_to_input_image_names_in_client'
+msgstr '在用戶端的電腦選擇還原的印象檔!'
+
+msgid 'msg_title_input_save_image_name_in_server'
+msgstr '現在輸入印象檔與範本裝置名稱 ?'
+
+msgid 'msg_ask_if_input_save_image_name_in_server'
+msgstr '你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+
+msgid 'msg_input_image_name'
+msgstr '輸入一個名稱來存這個印象檔:'
+
+msgid 'msg_input_device_name'
+msgstr '複製範本機中的那個裝置 ?'
+
+msgid 'msg_ocs_param_exclude_multicast'
+msgstr '你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+
+msgid 'msg_run_drbl_ocs_again_cmd'
+msgstr '下次您可以直接下這樣的指令:'
+
+msgid 'msg_is_unknown_HD'
+msgstr '是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+
+msgid 'msg_creating_partition_in_target'
+msgstr '將在目的碟產生分割區...'
+
+msgid 'msg_partition_table_for_target_dev'
+msgstr '要產生的目的碟分割區的表'
+
+msgid 'msg_if_go_on_the_data_will_be_erased_then_confirm'
+msgstr '如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+
+msgid 'msg_should_not_run_ocs_onthefly_in_server'
+msgstr '你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+
+msgid 'msg_ok_we_will_keep_old_partition_table'
+msgstr 'OK, 我們將保留原來的分割表.'
+
+msgid 'msg_fail_to_create_partition_table_in_target_dev'
+msgstr '未能在目的碟中建立分割表' 
+
+msgid 'msg_my_IP_in_drbl_env'
+msgstr '本台機器在DRBL環境中的IP位址'
+
+msgid 'msg_are_u_sure_u_want_to_continue'
+msgstr '你確認要繼續執行'
+
+msgid 'msg_really_dangerous_then_continue'
+msgstr '這是非常危險的!!! 總之,我們將繼續...'
+
+msgid 'msg_src_target_r_same_dev'
+msgstr '來源和目的兩者是同一個裝!!!'
+
+msgid 'msg_is_not_valid_grub_root'
+msgstr '不是一個正確的grub根分割(root partition)!' 
+
+msgid 'msg_different_type_of_input_devs'
+msgstr '你輸入的裝置兩者屬於不同類型'
+
+msgid 'msg_a_partition_table_already_exist'
+msgstr '在目的碟中已經有一個分割表存在'
+
+msgid 'msg_do_u_want_to_duplicate_the_partition_layout_to'
+msgstr '你是否要複製分割表到'
+
+msgid 'msg_do_you_want_to_clone_the_MBR_to'
+msgstr '你是否要複製主要開機磁區(MBR)到'
+
+msgid 'msg_do_you_want_to_clone_the_boot_loader_to'
+msgstr '你是否要複製開機載入程式(boot loader)到'
+
+msgid 'msg_skip_clone_MBR'
+msgstr '略去複製主要開機磁區(MBR)'
+
+msgid 'msg_skip_clone_boot_loader'
+msgstr '略去複製開機載入程式(boot loader)'
+
+msgid 'msg_failed_to_clone_the_MBR'
+msgstr '未能複製主要開機磁區(MBR)到'
+
+msgid 'msg_failed_to_clone_the_boot_loader'
+msgstr '未能複製開機載入程式(boot loader)'
+
+msgid 'msg_now_run_this_cmd_in_target_machine'
+msgstr '現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
+
+msgid 'msg_if_clone_the_partition_to_hda1_in_target_machine'
+msgstr '例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
+
+msgid 'msg_if_clone_the_disk_to_hda_in_target_machine'
+msgstr '例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+
+msgid 'msg_this_is_for_source_machine'
+msgstr '這是在來源機器上執行'
+
+msgid 'msg_this_is_for_target_machine'
+msgstr '這是在目的機器上執行'
+
+msgid 'msg_kernel_2_6_13_15_defaul_is_buggy'
+msgstr '目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+
+msgid 'msg_u_have_to_upgrade_kernel_in_this_machine'
+msgstr '你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+
+msgid 'msg_then_reboot_this_server'
+msgstr '然後把這台電腦重新開機，以便使用新的核心。'
+
+msgid 'msg_make_audio_open'
+msgstr '開放用戶端電腦的聲音裝置給所有使用者使用。'
+
+msgid 'msg_make_audio_close'
+msgstr '不開放用戶端電腦的聲音裝置給所有使用者使用。'
+
+msgid 'msg_make_plugdev_open'
+msgstr '開放用戶端電腦的抽取式裝置給所有使用者使用。'
+
+msgid 'msg_make_plugdev_close'
+msgstr '不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+
+msgid 'msg_restart_prompt_for_audio'
+msgstr '因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+
+msgid 'msg_restart_prompt_for_plugdev'
+msgstr '因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+
+msgid 'msg_restart_prompt_for_dev'
+msgstr '因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+
+msgid 'msg_run_update_plugdev_again'
+msgstr '注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+
+msgid 'msg_run_update_dev_again'
+msgstr '注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+
+msgid 'msg_no_autologin_account'
+msgstr '未找到自動登入帳號'
+
+msgid 'msg_are_you_sure_reset_autologin_home_dir'
+msgstr '你確認你要將自動登入帳號的環境重設為初始預設狀態'
+
+msgid 'msg_warning_home_dir_will_be_deleted'
+msgstr '警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+
+msgid 'msg_these_accounts_are'
+msgstr '這些帳號是'
+
+msgid 'msg_ok_let_do_it'
+msgstr 'OK, 我們繼續做吧!'
+
+msgid 'msg_do_not_reset_autologin_home_dir'
+msgstr '不要重設自動登入帳號的家目錄'
+
+msgid 'msg_created_autologin_ID_passwd_file'
+msgstr "產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+
+msgid 'msg_drbl_clonezilla_switch'
+msgstr '切換企鵝龍單一系統印象檔與再生龍模式'
+
+msgid 'msg_drbl_mode_switch'
+msgstr '切換企鵝龍機制'
+
+msgid 'msg_drbl_mode_switch_long'
+msgstr "有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+
+msgid 'msg_drbl_mode_0'
+msgstr '使用完全企鵝龍模式'
+
+msgid 'msg_drbl_mode_1'
+msgstr '使用企鵝龍單一系統印象檔模式'
+
+msgid 'msg_drbl_mode_2'
+msgstr '不提供無碟GNU/Linux服務'
+
+msgid 'msg_clonezilla_mode_switch'
+msgstr '切換再生龍機制'
+
+msgid 'msg_clonezilla_mode_switch_long'
+msgstr '本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+
+msgid 'msg_clonezilla_mode_0'
+msgstr '使用完全再生龍模式'
+
+msgid 'msg_clonezilla_mode_1'
+msgstr '使用再生龍盒模式'
+
+msgid 'msg_clonezilla_mode_2'
+msgstr '不提供再生龍服務'
+
+msgid 'msg_r_u_sure_want_to_del_autologin_accounts'
+msgstr '你確認要移除這些自動登入帳號?'
+
+msgid 'msg_also_clean_autologin_accounts'
+msgstr '你是否要清除這些自動登入帳號的家目錄?'
+
+msgid 'msg_do_not_del_accounts'
+msgstr '不要移除這些帳號'
+
+msgid 'msg_regenerate_nfs_nis_nat_config'
+msgstr '以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+
+msgid 'msg_not_in_SSI_mode'
+msgstr "這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+
+msgid 'msg_wol_0'
+msgstr '現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+
+msgid 'msg_wol_1'
+msgstr '1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+
+msgid 'msg_wol_2'
+msgstr '2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+
+msgid 'msg_wol_3'
+msgstr '3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+
+msgid 'msg_wol_4'
+msgstr "4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+
+msgid 'msg_no_kernel_rpm_is_available'
+msgstr '無法在這些地方找到核心的RPM檔:'
+
+msgid 'msg_internet_connection'
+msgstr '1. 你的網際網路連線正常。'
+
+msgid 'msg_use_baseurl_in_yum_centos'
+msgstr '2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+
+msgid 'msg_you_must_input_device_name_to_save_image'
+msgstr '你一定要輸入裝置名稱才能存取印象檔'
+
+msgid 'msg_start_detect_MAC_addresse'
+msgstr '開始偵測與收集用戶端的MAC address....'
+
+msgid 'msg_enter_1_or_press_enter_to_view'
+msgstr '輸入'1'或是按'Enter'鍵來看目前收集的狀態。'
+
+msgid 'msg_enter_2_or_press_q_to_quit'
+msgstr '輸入'2'或是'q'來結束收集。'
+
+msgid 'msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them'
+msgstr 'DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+
+msgid 'msg_the_collected_MAC_addr_from'
+msgstr '收集到的用戶端硬體卡號MAC位址(由'
+
+msgid 'msg_are_saved_in_files_separately'
+msgstr ')個別被存在這些檔案中'
+
+msgid 'msg_http_isu_edu_tw_not_compatible'
+msgstr '由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+
+msgid 'msg_prompt_chang_yum_config'
+msgstr '這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+
+msgid 'msg_What_the_win_hostname_prefix'
+msgstr '所還原的MS windows主機名稱的前置名稱是'
+
+msgid 'msg_change_hostname_of_MS_WIN_on_the_fly'
+msgstr '已經開啟-hn0或-hn1'
+
+msgid 'msg_write_MS_WIN_is_necessary'
+msgstr '你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+
+msgid 'msg_necessary_pkgs_from_dists'
+msgstr '這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+
+msgid 'msg_necessary_pkgs_from_drbl'
+msgstr '這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+
+msgid 'msg_recommended_pkgs_from_dists'
+msgstr '這些套件如果可以在儲藏庫中找到，建議您安裝:'
+
+msgid 'msg_install_glibc_etc_arch_by_yourself'
+msgstr '如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+
+msgid 'msg_prepare_kernel_for_clients'
+msgstr '準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+
+msgid 'msg_some_necessary_pkgs_not_installed'
+msgstr '警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+
+msgid 'msg_reset_all_existing_urpmi_setting'
+msgstr '警告! 我們必須重新設定目前系統中的urpmi!'
+
+msgid 'msg_some_required_pkgs_not_installed'
+msgstr '這些必要的程式並沒有安裝'
+
+msgid 'msg_use_drblsrv_instead'
+msgstr "如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+
+msgid 'msg_continue_may_not_work'
+msgstr '如果你繼續的話，這個DRBL系統可能無法正常運作!'
+
+msgid 'msg_switch_pxe_bg_mode'
+msgstr '切換用戶端電腦PXE開機選單模式'
+
+msgid 'msg_pxemenu_text'
+msgstr '用戶端使用文字模式的開機選單'
+
+msgid 'msg_pxemenu_graphic'
+msgstr '用戶端使用圖形模式的開機選單'
+
+msgid 'msg_only_one_kernel_meets_requirement'
+msgstr '只有一個核心符合你設定的條件'
+
+msgid 'msg_drbl_server_is_NOT_NAT_server'
+msgstr '這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+
+msgid 'msg_ask_user_is_reserved_for_save_mode'
+msgstr '"ask_user"是保留來的名稱，請改用其他名字!'
+
+msgid 'msg_all_data_in_dev_will_be_overwritten'
+msgstr '在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+
+msgid 'msg_authentication_pxe_linux_info'
+msgstr "如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+
+msgid 'msg_this_might_take_several_minutes'
+msgstr '這可能會需要一點時間...'
+
+msgid 'msg_run_dcs_clonezilla_start_to_show_pxemenu'
+msgstr "你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+
+msgid 'msg_if_always_provide_clonezilla_srv'
+msgstr '你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+
+msgid 'msg_gen_template_files'
+msgstr '重新產生SSI/Clonezilla box範本檔案'
+
+msgid 'msg_ocs_iso_too_big_for_CD'
+msgstr '要產生的ISO檔太大，無法放到一片CD上.'
+
+msgid 'msg_ocs_iso_too_big_for_DVD'
+msgstr '要產生的ISO檔太大，無法放到一片DVD上.'
+
+msgid 'msg_unable_to_create_clonezilla_img_iso'
+msgstr '無法產生這個再生龍還原專用光碟'
+
+msgid 'msg_mkisofs_unable_process_that'
+msgstr 'mkisofs程式無法處理這個大檔案!'
+
+msgid 'msg_burn_clonezilla_img_iso'
+msgstr '你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+
+msgid 'msg_burn_drbl_live_img_iso'
+msgstr '你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+
+msgid 'msg_burn_drbl_live_img_zip'
+msgstr "你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+
+msgid 'msg_is_mounted_u_must_unmount_it'
+msgstr '這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+
+msgid 'msg_create_live_device_warning'
+msgstr '這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+
+msgid 'msg_unable_to_mount_this_dev'
+msgstr '無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+
+msgid 'msg_format_as_FAT_16_32'
+msgstr '如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+
+msgid 'msg_this_is_disk_usage_status'
+msgstr '這是磁碟的使用狀態'
+
+msgid 'msg_boot_clonezilla_live_dev'
+msgstr '現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+
+msgid 'msg_clone_finished_choose_to'
+msgstr '下一步要'
+
+msgid 'msg_enter_cml'
+msgstr '進入命令列'
+
+msgid 'msg_clonezilla_is_free_and_no_warranty'
+msgstr '**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+
+msgid 'msg_1_6_a_b_is_reserved'
+msgstr '1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+
+msgid 'msg_name_ntfs_dd_img_is_reserved'
+msgstr '.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+
+msgid 'msg_to_use_clonezilla_to_save_image'
+msgstr '要使用再生龍來存印象檔'
+
+msgid 'msg_to_use_clonezilla_to_save_image_again'
+msgstr '要再使用再生龍來存印象檔'
+
+msgid 'msg_run_sudo_su_to_become_root'
+msgstr '執行"sudo su -"來變成管理者(root)'
+
+msgid 'msg_prepare_writable_dev_and_mount_it_as'
+msgstr '你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+
+msgid 'msg_ex_mount_ocsroot_in_ocs_live'
+msgstr "例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+
+msgid 'msg_if_src_part_is_ntfs'
+msgstr '如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+
+msgid 'msg_sshfs_smbfs_are_supported'
+msgstr '本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+
+msgid 'msg_use_zh_TW_bterm'
+msgstr '如果你需要使用支援正體中文的終端機，可以執行'
+
+msgid 'msg_start_ocs_sr_interactive'
+msgstr '然後使用這個指令來使用再生龍'
+
+msgid 'msg_remember_poweroff_reboot_when_ocs_sr_is_done'
+msgstr '當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+
+msgid 'msg_if_you_want_to_use_ocs_again'
+msgstr '如果你要再使用再生龍'
+
+msgid 'msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live'
+msgstr '如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+
+msgid 'msg_remove_existing_link_for_ocsroot'
+msgstr "移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+
+msgid 'msg_to_see_this_ocs_live_help_msg'
+msgstr '注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+
+msgid 'msg_image_source_for_ocs_live'
+msgstr "如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+
+msgid 'msg_modify_grub_config_if_necessary'
+msgstr "你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+
+msgid 'msg_this_script_will_create_SL_diskless'
+msgstr '這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+
+msgid 'msg_RAM_size_for_SL_drbl_client'
+msgstr '建議你的用戶端電腦的記憶體最少要'
+
+msgid 'msg_image_saved_from_dd'
+msgstr '這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+
+msgid 'msg_cons_for_dd_clone'
+msgstr '使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+
+msgid 'msg_will_be_inefficent_and_slow'
+msgstr '這樣將會非常沒有效率，而且可能需要很久的時間'
+
+msgid 'msg_fs_not_supported_by_partimage_ntfsclone'
+msgstr '這個檔案系統partimage或是ntfsclone並不支援'
+
+msgid 'msg_use_this_method_to_save_img'
+msgstr '只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+
+msgid 'msg_status_report_is_very_primitive'
+msgstr '此模式下的狀態回報也會非常陽春'
+
+msgid 'msg_home_partimag_not_home_partimage'
+msgstr '有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+
+msgid 'msg_target_dev_has_this_partition_table'
+msgstr '你要寫入的硬碟有這樣的資訊表'
+
+msgid 'msg_let_me_ask_you_again'
+msgstr '容我再問你一次'
+
+msgid 'msg_unable_to_mnt_ocsroot'
+msgstr "無法掛載到$ocsroot"
+
+msgid 'msg_mount_ocsroot_img_hint_short_des'
+msgstr '掛載再生龍印象檔的目錄'
+
+msgid 'msg_mount_ocsroo_img_hint_long_des'
+msgstr "掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
+
+msgid 'msg_mount_local_dev'
+msgstr '掛載本機的分割區'
+
+msgid 'msg_mount_sshfs'
+msgstr '掛載SSH伺服器的目錄'
+
+msgid 'msg_mount_smbfs'
+msgstr '掛載網路芳鄰伺服器的目錄'
+
+msgid 'msg_mount_nfs'
+msgstr '掛載NFS伺服器的目錄'
+
+msgid 'msg_mount_ftpfs'
+msgstr '掛載FTP伺服器的目錄'
+
+msgid 'msg_do_it_manually'
+msgstr '自行手動調整'
+
+msgid 'msg_skip_this_use_existing_ocsroot'
+msgstr "使用現有的$ocsroot"
+
+msgid 'msg_device_to_mount_as_ocsroot_do_not_mount_target_dev'
+msgstr "掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
+
+msgid 'msg_ip_address_or_FQDN_of_server'
+msgstr '伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
+
+msgid 'msg_smb_domain_in_server'
+msgstr '網路芳鄰伺服器上的網域名稱'
+
+msgid 'msg_if_no_smb_domain_skip_this'
+msgstr '如果伺服器上沒有此設定，你可以略去此選項'
+
+msgid 'msg_account_in_server'
+msgstr '使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
+
+msgid 'msg_sshfs_dir_path'
+msgstr '要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
+
+msgid 'msg_ftpfs_dir_path'
+msgstr '要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
+
+msgid 'msg_now_you_have_to_enter_passwd'
+msgstr '現在你必須輸入對於這個帳號的密碼'
+
+msgid 'msg_confirm_ssh_server_might_be_necessary'
+msgstr '如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
+
+msgid 'msg_ocs_img_dir_path'
+msgstr "要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
+
+msgid 'msg_enter_another_shell_hint'
+msgstr '進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
+
+msgid 'msg_existing_setting_is'
+msgstr '現有的設定是'
+
+msgid 'msg_start_clonezilla'
+msgstr '使用再生龍'
+
+msgid 'msg_start_clonezilla_or_enter_shell'
+msgstr '使用再生龍或是登入(命令列) ?'
+
+msgid 'msg_writable_dev_ex_usb_stick'
+msgstr '可寫裝置如硬碟/隨身碟'
+
+msgid 'msg_writable_fs_ex_nfs_smbfs'
+msgstr '可寫網路磁碟如NFS/SMBFS'
+
+msgid 'msg_readonly_dev_ex_CD'
+msgstr '唯讀裝置如CD'
+
+msgid 'msg_writable_dev_ramdisk'
+msgstr '記憶體，關機後資料就消失。***不建議***'
+
+msgid 'msg_warning_mount_ntfs_writable'
+msgstr '警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
+
+msgid 'msg_df_report'
+msgstr '目前系統的掛載狀態'
+
+msgid 'msg_hint_assign_IP_group'
+msgstr "提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+
+msgid 'msg_hint_assign_MAC_group'
+msgstr "提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+
+msgid 'msg_device_image_device_clone'
+msgstr '兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
+
+msgid 'msg_device_image_clone'
+msgstr '硬碟/分割區[存到/來至]印象檔'
+
+msgid 'msg_device_device_clone'
+msgstr '硬碟/分割區複製到硬碟/分割區'
+
+msgid 'msg_disk_to_local_disk'
+msgstr '複製本機硬碟到本機硬碟'
+
+msgid 'msg_disk_to_remote_disk'
+msgstr '複製本機硬碟到它機硬碟'
+
+msgid 'msg_part_to_local_part'
+msgstr '複製本機分割區到本機分割區'
+
+msgid 'msg_part_to_remote_part'
+msgstr '複製本機分割區到它機分割區'
+
+msgid 'msg_local_source_disk'
+msgstr '選擇本機硬碟當來源母碟'
+
+msgid 'msg_local_target_disk'
+msgstr '選擇本機硬碟當目的碟'
+
+msgid 'msg_local_source_part'
+msgstr '選擇本機分割區當來源分割區'
+
+msgid 'msg_local_target_part'
+msgstr '選擇本機分割區當目的分割區'
+
+msgid 'msg_ocs_onthefly_advanced_extra_param'
+msgstr '直接複製再生龍模式額外的進階參數'
+
+msgid 'msg_ocs_onthefly_param_g'
+msgstr '在目地碟的開機磁區重新安裝grub'
+
+msgid 'msg_ocs_onthefly_param_e'
+msgstr '在目的碟的分割區調整檔案系統大小符合分割區大小'
+
+msgid 'msg_ocs_onthefly_param_nogui'
+msgstr '使用partimage的時候不顯示圖形介面'
+
+msgid 'msg_ocs_onthefly_param_n'
+msgstr '不要在目地碟的開機磁區產生分割區的分配表'
+
+msgid 'msg_ocs_onthefly_param_m'
+msgstr '不要複製開機管理程式(boot loader)'
+
+msgid 'msg_ocs_onthefly_param_o'
+msgstr '強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
+
+msgid 'msg_ocs_onthefly_param_b'
+msgstr '使用批次模式(危險!務必先確認設定正確)'
+
+msgid 'msg_ocs_onthefly_param_v'
+msgstr '印出詳細的資訊'
+
+msgid 'msg_only_i686_kernel_available_in_centos_5'
+msgstr '目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
+
+msgid 'msg_do_you_want_to_clean_all_stale_mac_cfg'
+msgstr "在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
+
+msgid 'msg_something_went_wrong_when_start_drbl_related_srv'
+msgstr '啟動DRBL相關服務的時候出現一些狀況!'
+
+msgid 'msg_you_can_try_to_run_the_following_again'
+msgstr '你可以嘗試再度執行以下指令看看'
+
+msgid 'msg_try_drblsrv_offline'
+msgstr "如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
+
+msgid 'msg_very_unstable'
+msgstr '非常不穩定'
+
+msgid 'msg_not_stable'
+msgstr '不穩定'
+
+msgid 'msg_not_secure'
+msgstr '不安全'
+
+msgid 'msg_no_nic_is_found'
+msgstr "找不到支援的網路卡."
+
+msgid 'msg_choose_nic'
+msgstr "請選擇一個網路卡\n(如果你有兩張或更多)"
+
+msgid 'msg_send_dhcp_request_from'
+msgstr "從網路卡送出 DHCP 要求:"
+
+msgid 'msg_enter_IP_add_for_this_nic'
+msgstr "請指定這張網卡的 IP 位址: "
+
+msgid 'msg_enter_netmask_for_this_nic'
+msgstr "請指定這張網卡的網路遮罩(Netmask): "
+
+msgid 'msg_enter_default_gateway'
+msgstr "請指定通訊閘(Gateway) "
+
+msgid 'msg_enter_dns_server'
+msgstr "請指定網域名稱伺服器(Nameserver) "
+
+msgid 'msg_put_dnsserver_to_resolv_conf'
+msgstr "將 Nameserver 設定至 /etc/resolv.conf "
+
+msgid 'msg_append_dnsserver_to_resolv_conf'
+msgstr "增設 Nameserver 至 /etc/resolv.conf :"
+
+msgid 'msg_Network_config'
+msgstr "網路設定"
+
+msgid 'msg_choose_mode_to_setup_net'
+msgstr "選擇你要的模式來設定這台電腦的網路"
+
+msgid 'msg_use_dhcp_broadcast'
+msgstr "使用DHCP來設定"
+
+msgid 'msg_use_static_ip'
+msgstr "設定固定IP位址"
+
+msgid 'msg_use_pppoe_conf'
+msgstr "使用PPPoE來設定"
+
+msgid 'msg_setup_network_first'
+msgstr '先設定網路'
+
+msgid 'msg_hint_multiple_choice_select_by_space'
+msgstr '///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
+
+msgid 'msg_network_is_not_configured'
+msgstr '網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
+
+msgid 'msg_network_is_already_configured'
+msgstr '發信網路已經設定了! 這台機器可用的IP位址是'
+
+msgid 'msg_text_Enter'
+msgstr '輸入'
+
+msgid 'msg_text_for'
+msgstr '對於'
+
+msgid 'msg_Got_it'
+msgstr '找到了'
+
+msgid 'msg_Warning'
+msgstr '警告'
+
+msgid 'msg_uppercase_Warning'
+msgstr '警告'
+
+msgid 'msg_NOT_found'
+msgstr '未找到'
+
+msgid 'msg_Done'
+msgstr '完成'
+
+msgid 'msg_please'
+msgstr '請'
+
+msgid 'msg_browse'
+msgstr '瀏覽'
+
+msgid 'msg_or'
+msgstr '或是'
+
+msgid 'msg_for_more_details'
+msgstr '更詳細的資料'
+
+msgid 'msg_Failed_to_get'
+msgstr '未能抓取'
+
+msgid 'msg_Failed_to_install'
+msgstr '未能安裝'
+
+msgid 'msg_done'
+msgstr '完成'
+
+msgid 'msg_note'
+msgstr '注意'
+
+msgid 'msg_and'
+msgstr '與'
+
+msgid 'msg_clonezilla'
+msgstr '再生龍'
+
+msgid 'msg_error'
+msgstr '錯誤'
+
+msgid 'msg_restore'
+msgstr '還原'
+
+msgid 'msg_txt_check'
+msgstr '檢查'
+
+msgid 'msg_ex'
+msgstr '例如'
+
+msgid 'msg_exit'
+msgstr '退出'
+
+msgid 'msg_poweroff'
+msgstr '關機'
+
+msgid 'msg_reboot'
+msgstr '重新開機'
+
+msgid 'msg_then'
+msgstr '然後'
+
+msgid 'msg_unknown'
+msgstr '未知'
+
+msgid 'msg_experimental'
+msgstr '實驗性質'
+
+msgid 'msg_failed'
+msgstr "失敗"
+
Index: drbl_ui/backup/old_version/Wizard.py
===================================================================
--- drbl_ui/backup/old_version/Wizard.py	(revision 20)
+++ drbl_ui/backup/old_version/Wizard.py	(revision 20)
@@ -0,0 +1,162 @@
+ #-*- coding: utf-8 -*-
+import	wx
+import	wx.wizard as wiz
+import	lang
+
+LangCH = '中文'
+LangEN = 'English'
+
+#RemoteLinuxGra = 'Boot Remote Linux Machine(s) on Graphic Mode'
+#RemoteLinuxTxt = 'Boot Remote Linux Machine(s) on Txt Mode'
+#ClonezillaStartSave = 'Start Clonezilla on SAVE mode'
+#ClonezillaStartRestore = 'Start Clonezilla on RESTORE mode'
+ToDo = 'What You Want To Do ?'
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class SelectWizardPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        FunctionList = ['lang.msg_remote_linux_graphic', 'lang.msg_remote_linux_text']
+	sizer = wx.BoxSizer(wx.HORIZONTAL)
+        choice = wx.RadioBox(self, -1, ToDo, (35,50), (500,150), LangList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, choice)
+        choice.SetSelection(0)
+        sizer.Add(choice, 0, wx.ALIGN_LEFT|wx.TOP|wx.RIGHT, 40)
+        self.SetSizer(sizer)
+
+    def EvtRadioBox(self, event):
+	if event.Selection() == 0:
+	    
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def	__init__(self, parent, id)
+        wx.Frame.__init__(self, parent, id, 'TEST WIZARD', size=(500,400))
+        panel  = wx.Panel(self)
+
+        LangList = [LangCH, LangEN]
+        sizer = wx.BoxSizer(wx.HORIZONTAL)
+        choice = wx.RadioBox(self, -1, ToDo, (35,50), (500,150), LangList,1,wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, choice)
+        choice.SetSelection(0)
+        sizer.Add(choice, 0, wx.ALIGN_LEFT|wx.TOP|wx.RIGHT, 40)
+        self.SetSizer(sizer)
+        btn = wx.Button(self, -1, 'Run Wizard', pos=(400, 300))
+        self.Bind(wx.EVT_BUTTON, self.RunWizard, btn)
+
+    def EvtRadioBox(self, event):
+        btn = wx.Button(self, -1, 'Run Wizard', pos=(400, 300))
+        if event.GetSelection() == 0:
+	    os.system("rm -rf lang.py")
+	    os.system("cp /home/chris/lang_ch.py /home/chris/lang.py")
+            self.Bind(wx.EVT_BUTTON, self.RunWizard, btn)
+        if event.GetSelection() == 1:
+	    os.system("rm -rf lang.py")
+	    os.system("cp /home/chris/lang_en.py /home/chris/lang.py")
+            self.Bind(wx.EVT_BUTTON, self.RunWizard, btn)
+
+#--------------------------Wizard Module------------------------------
+    def RunWizard(self, evt):
+        wizard = wiz.Wizard(self, -1, lang.msg_remote_linux_graphic ,pos = (500,200))
+
+	page1 = SelectWizardPage(wizard, 'page1')
+	page2 = WizardBasePage(wizard, 'page2')
+	page3 = WizardBasePage(wizard, 'page3')
+	self.page1 = page1
+	wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox('success', "That's all folks!")
+        else:
+            wx.MessageBox('cancel', "That's all folks!")
+
+#----------------------------------------------------------------------
+    def RemoteLinuxTxtWizard(self, evt):
+        wizard = wiz.Wizard(self, -1, lang.msg_remote_linux_text, pos = (500,200))
+
+        page1 = WizardBasePage(wizard, 'page1')
+        page2 = WizardBasePage(wizard, 'page2')
+        page3 = WizardBasePage(wizard, 'page3')
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox('success', "That's all folks!")
+        else:
+            wx.MessageBox('cancel', "That's all folks!")
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    testWin = MainFrame(nb, -1, log)
+    return testWin
+
+#----------------------------------------------------------------------------
+if __name__ == '__main__':
+    import sys,os
+    import run
+    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
+
+
+#class App(wx.App):
+
+#    def OnInit(self):
+#	frame = MainFrame(, id=-1)
+#	frame.Show()
+#	return True
+
+#app = App()
+#app.MainLoop()
+
Index: drbl_ui/backup/old_version/drbl_wizard.py
===================================================================
--- drbl_ui/backup/old_version/drbl_wizard.py	(revision 20)
+++ drbl_ui/backup/old_version/drbl_wizard.py	(revision 20)
@@ -0,0 +1,1620 @@
+import  wx
+import  wx.wizard as wiz
+import	sys
+import	gettext
+from wx.lib.mixins.listctrl import CheckListCtrlMixin
+import  wx.lib.filebrowsebutton as filebrowse
+
+cat = gettext.GNUTranslations(open(sys.argv[1]))
+_ = cat.gettext
+
+global FinalArgs 
+FinalArgs = ['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''] 
+#global selected_hosts, selected_clients, lenghth
+#lenghth = 0
+
+#----------------------------------------------------------------------
+ClonezillaStartSaveArgs = {
+1: ("-q", _('msg_ocs_param_q')),
+2: ("-c", _('msg_ocs_param_c')),
+3: ("-nogui", _('msg_ocs_param_nogui')),
+4: ("-a", _('msg_ocs_param_a')),
+5: ("-f", _('msg_ocs_param_f')),
+6: ("-s", _('msg_ocs_param_s')),
+}
+
+#----------------------------------------------------------------------
+ClonezillaStartRestoreArgs = {
+1: ("-g auto", _('msg_ocs_param_g_auto')),
+2: ("-x", _('msg_ocs_param_x')),
+3: ("-brdcst", _('msg_ocs_param_broadcast')),
+4: ("-v", _('msg_ocs_param_v')),
+5: ("-nogui", _('msg_ocs_param_nogui')),
+6: ("-c", _('msg_ocs_param_c')),
+7: ("-u", _('msg_ocs_param_u')),
+8: ("-t", _('msg_ocs_param_t')),
+9: ("-j0", _('msg_ocs_param_j0')),
+10: ("-ns", _('msg_ocs_param_ns')),
+11: ("-k", _('msg_ocs_param_k')),
+12: ("-r", _('msg_ocs_param_r')),
+13: ("-e", _('msg_ocs_param_e')),
+14: ("-f", _('msg_ocs_param_f')),
+15: ("-s", _('msg_ocs_param_s')),
+16: ("-a", _('msg_ocs_param_a')),
+17: ("-o", _('msg_ocs_param_o')),
+18: ("-hn0", _('msg_ocs_param_hn0')),
+19: ("-hn1", _('msg_ocs_param_hn1')),
+}
+
+#----------------------------------------------------------------------
+class CSSCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartSaveArgs[data][0]
+        if flag:
+	    FinalArgs[index+3] = arg
+        else:
+	    FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+class CSRCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartRestoreArgs[data][0]
+        if flag:
+	    if index == 18:
+		FinalArgs[index+4] = arg
+	    else:
+		FinalArgs[index+3] = arg
+        else:
+	    if index == 18:
+		FinalArgs[index+4] = ''
+	    else:
+		FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SetAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.cb = wx.CheckBox(self, -1, _('msg_title_set_all_clients'))
+        self.cb.SetValue(True)
+        self.sizer.Add(self.cb, 0, wx.ALL, 5)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if self.cb.GetValue():
+	    FinalArgs[1] = ''
+	    next = next.GetNext()
+	else:
+	    #FinalArgs[1] = ''
+	    FinalArgs[1] = '-h'
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SelectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.selected_hosts = []
+	self.selected_clients = ''
+	self.lenghth = 0
+
+        g = open("/tmp/ip_list", "r")
+        ip_list = g.read()
+        tokens = ("%s" % ip_list).split()
+        self.lenghth = len(tokens)
+        for i in range(0,len(tokens)):
+                self.selected_hosts.insert(len(tokens),"")
+                i = i+1
+        g.close()
+
+        lb = wx.CheckListBox(self, -1, (35,50), (290,250), tokens)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, lb)
+        lb.SetSelection(0)
+        counts = lb.GetCount()
+        self.lb = lb
+        pos = lb.GetPosition().x + lb.GetSize().width + 25
+
+    def EvtCheckListBox(self, event):
+	j = 0
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+            del self.selected_hosts[index]
+            self.selected_hosts.insert(index,label)
+        if not (self.lb.IsChecked(index)):
+            self.selected_hosts.remove(label)
+            self.selected_hosts.insert(index,"")
+        self.lb.SetSelection(index)    #so that (un)checking also selects (moves the highlight)
+	self.selected_clients = ''
+	while j < self.lenghth:
+	    if self.selected_hosts[j] != "":
+	        self.selected_clients = self.selected_clients + self.selected_hosts[j] + ' '
+	    j = j+1
+        self.selected_clients = '\"' + self.selected_clients + '\"'
+        FinalArgs[2] = self.selected_clients
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	#print self.selected_clients
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxGraPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_remote_linux_graphic'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/dcs'
+	FinalArgs[3] = 'remote-linux-gra'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxTxtPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_linux_text'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-linux-text'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class TerminalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_thin_client'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-thin-client'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class RemoteMemTestPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_memtest'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-memtest'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class RemotefdosPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_fdos'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-fdos'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_save_disk'), _('msg_clonezilla_save_parts')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,90),
+                ModeList, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[12] = 'startdisk save'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[12] = 'startdisk save'
+        if event.GetInt() == 1:
+                FinalArgs[12] = 'startpart save'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_ask_if_input_save_image_name_in_server'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+
+        self.cb = wx.CheckBox(self, -1, 'YES',(20,130)) # not translated
+        self.cb.SetValue(True)
+        #self.sizer.Add(self.cb, 0, wx.TOP|wx.LEFT, 80)
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if not self.cb.GetValue():
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[13] = self.text_img.GetValue()
+	FinalArgs[14] = self.text_dev.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSSCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))	#not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)	#not translated
+
+        for key, data in ClonezillaStartSaveArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        if self.list.IsChecked(0) == self.list.IsChecked(1) == self.list.IsChecked(2) == self.list.IsChecked(3) == self.list.IsChecked(4) == self.list.IsChecked(5) == 0:
+            next = 0
+        return next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'),
+                      _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150),
+                ArgList, 1, wx.RA_SPECIFY_COLS
+                )
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[9] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[9] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[9] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[9] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[9] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [ _('msg_ocs_param_z0'), _('msg_ocs_param_z1'), _('msg_ocs_param_z2'), _('msg_ocs_param_z3')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (340,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[10] = '-z3'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[10] = '-z0'
+        if event.GetSelection() == 1:
+                FinalArgs[10] = '-z1'
+        if event.GetSelection() == 2:
+                FinalArgs[10] = '-z2'
+        if event.GetSelection() == 3:
+                FinalArgs[10] = '-z3'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_restore_disk'), _('msg_clonezilla_restore_parts')]
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+        FinalArgs[32] = 'startdisk'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[32] = 'startdisk'
+        if event.GetInt() == 1:
+                FinalArgs[32] = 'startpart'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSRCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT) #not translated
+
+        for key, data in ClonezillaStartRestoreArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	j = 0
+	check_sum = 0
+        next = self.next
+	for j in range(0,18):
+	    check_sum = check_sum + self.list.IsChecked(j)
+	if check_sum == 0: # if user didn't check any box, then return NULL.
+            next = 0
+	if (self.list.IsChecked(17) or self.list.IsChecked(18)):
+	    next = self.next
+	else:
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_write_MS_WIN_is_necessary'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+	#if len(_('msg_write_MS_WIN_is_necessary')) <= 517:
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[:60], (10,60))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[60:122], (10,80))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[122:184], (10,100))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[184:253], (10,120))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[253:314], (10,140))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[314:380], (10,160))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[380:440], (10,180))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[440:495], (10,220))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[495:], (10,240))
+	#else:
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[:79], (10,60))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[79:156], (10,80))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[156:248], (10,100))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[248:331], (10,120))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[331:413], (10,140))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[413:449], (10,160))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[449:], (10,200))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_What_the_win_hostname_prefix'), (5, 80))
+        self.text = wx.TextCtrl(self, -1, "PC", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	#print FinalArgs
+	if FinalArgs[20] == '-hn0' and FinalArgs[22] == '-hn1':
+	    FinalArgs[21] = FinalArgs[23] = self.text.GetValue()
+	elif FinalArgs[20] == '-hn0'and FinalArgs[22] != '-hn1':
+	    FinalArgs[21] =  self.text.GetValue()
+	elif FinalArgs[22] == '-hn1' and FinalArgs[20] != '-hn0':
+	    FinalArgs[23] = self.text.GetValue()
+        elif FinalArgs[20] != '-hn0' and FinalArgs[22] != '-hn1':
+            FinalArgs[21] = FinalArgs[23] = ''
+	return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+	wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[24] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[24] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[24] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[24] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        FinalArgs[25] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[25] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[25] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[25] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[25] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[9] == '-u':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_choose_the_image_to_restore'), (5,80))
+        self.fbb = filebrowse.FileBrowseButton(self, -1, pos=(50,150), size=(350, -1), buttonText='browse', toolTip='Type filename or click browse to choose file', fileMask='*.img', changeCallback = self.fbbCallback)
+
+    def fbbCallback(self, evt):
+        FinalArgs[34] = evt.GetString()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        if FinalArgs[32] == 'startdisk':
+            wx.StaticText(self, -1, _('msg_choose_the_disks_to_restore'), (5,80))
+        elif FinalArgs[32] == 'startpart':
+            wx.StaticText(self, -1, _(msg_choose_the_parts_to_restore), (5,80))
+        self.text = wx.TextCtrl(self, -1, "hda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[9] == '-u':
+	    FinalArgs[35] = ''
+	elif FinalArgs[9] == '':
+	    FinalArgs[35] = self.text.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+	if FinalArgs[32] == 'startdisk':
+            rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_disk'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+	elif FinalArgs[32] == 'startpart':
+	    rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_parts'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	if FinalArgs[9] == '-u':
+	    FinalArgs[33] = 'restore'
+	else:
+	    FinalArgs[33] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        if FinalArgs[9] == '-u':
+            FinalArgs[33] = 'restore'
+	if FinalArgs[33] == 'restore':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage10(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_clients_time_to_wait'), _('msg_time_to_wait'), _('msg_clients_to_wait')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35,50), (350, 150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[26] = '--clients-to-wait'
+	FinalArgs[28] = '--max-time-to-wait'
+
+    def EvtRadioBox(self, event):
+	if event.GetInt() == 0:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 1:
+	    FinalArgs[26] = ''
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 2:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = ''
+ 
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[33] == 'restore':
+            FinalArgs[26] = ''
+            FinalArgs[28] = ''
+	    next = self.next
+	if FinalArgs[26] == '' and FinalArgs[28] != '':
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage11(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_how_many_clients_to_restore'), (20, 80))
+	self.text = wx.TextCtrl(self, -1, '5', (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[26] != '':
+	    FinalArgs[27] = self.text.GetValue()
+	    next = self.next
+	if FinalArgs[28] == '': 
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage12(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_max_time_to_wait_sec'), (20, 80))
+        self.text = wx.TextCtrl(self, -1, "300", (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[28] != '':
+	    FinalArgs[29] = self.text.GetValue()
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage13(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	FinalArgs[5] = '-y1'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[5] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[5] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[5] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[5] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        FinalArgs[6] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[6] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[6] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[6] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[6] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[7] = 'select_in_client'
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStopPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LocalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_local'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RebootPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reboot'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ShutdownPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_shutdown'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class WakeOnLanPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_Wake_on_LAN'), (50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'Wake-on-LAN'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class FinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.tc = wx.TextCtrl(self, -1,'', pos=(35,50), size=(350, 350), style=wx.TE_MULTILINE|wx.TE_READONLY)
+	b = wx.Button(self, -1, 'see log', pos=(400,250))
+	self.Bind(wx.EVT_BUTTON, self.OnWriteLog, b)
+	
+    def OnWriteLog(self, evt):
+	i = 0
+	for i in range(0,36):
+	    if FinalArgs[i] != '':
+	        self.tc.WriteText('%s ' % FinalArgs[i])	
+	    FinalArgs[i] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self, parent, id):
+        wx.Frame.__init__(self, parent, id, 'TEST WIZARD', (300,200), (600,400), style=wx.CAPTION)
+	#wx.NO_FULL_REPAINT_ON_RESIZE
+        self.scroll = wx.ScrolledWindow(self, -1)
+	self.scroll.SetScrollbars(1, 1, 550, 500)
+
+        FunctionList = [_('msg_remote_linux_graphic'), _('msg_remote_linux_text'), _('msg_thin_client')
+		        , _('msg_remote_memtest'), _('msg_remote_fdos'), _('msg_clonezilla_start_save')
+			, _('msg_clonezilla_start_restore'), _('msg_clonezilla_selec_in_client'), _('msg_clonezilla_stop')
+			, _('msg_local'), _('msg_reboot'), _('msg_shutdown'), _('msg_Wake_on_LAN')]
+        rb = wx.RadioBox(self.scroll, -1, '', (35,20), (0,0), FunctionList, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.scroll.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+	self.b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))      # not translated
+	self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b)
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    #b = wx.Button(self.scroll, wx.ID_FORWARD,(pos,220))
+	    self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b)
+        if event.GetSelection() == 1:
+	    #b = wx.Button(self.scroll, wx.ID_FORWARD)
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxTxtWizard, self.b)
+        if event.GetSelection() == 2:
+	    #b = wx.Button(self.scroll, wx.ID_FORWARD)
+	    self.scroll.Bind(wx.EVT_BUTTON, self.TerminalWizard, self.b)
+        if event.GetSelection() == 3:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteMemTestWizard, self.b)
+        if event.GetSelection() == 4:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemotefdosWizard, self.b)
+        if event.GetSelection() == 5:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartSaveWizard, self.b)
+        if event.GetSelection() == 6:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartRestoreWizard, self.b)
+        if event.GetSelection() == 7:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaSelectWizard, self.b)
+        if event.GetSelection() == 8:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStopWizard, self.b)
+        if event.GetSelection() == 9:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.LocalWizard, self.b)
+        if event.GetSelection() == 10:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.RebootWizard, self.b)
+        if event.GetSelection() == 11:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.ShutdownWizard, self.b)
+        if event.GetSelection() == 12:
+            #b = wx.Button(self.scroll, wx.ID_FORWARD, pos=(450, 350))
+            self.scroll.Bind(wx.EVT_BUTTON, self.WakeOnLanWizard, self.b)
+
+	
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxGraWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxGraWizard', pos = (500,200))
+
+	page1 = SetAllClientsPage(wizard, '')
+	page2 = SelectClientsPage(wizard, '')
+	page3 = RemoteLinuxGraPage(wizard, '')
+	page4 = FinalPage(wizard, '')
+
+	self.page1 = page1
+	wizard.SetPageSize((500,300))
+
+	page1.SetNext(page2)
+	page2.SetPrev(page1)
+	page2.SetNext(page3)
+	page3.SetPrev(page2)
+	page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+	    
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxTxtWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxTextWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteLinuxTxtPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def TerminalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'TerminalWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = TerminalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteMemTestWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteMemTestWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteMemTestPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RemotefdosWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemotefdosWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemotefdosPage(wizard,'')
+        page4 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartSaveWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartSaveWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+	page3 = ClonezillaStartSavePage1(wizard, '')
+	page4 = ClonezillaStartSavePage2(wizard, '')
+	page5 = ClonezillaStartSavePage3(wizard, '')
+	page6 = ClonezillaStartSavePage4(wizard, '')
+	page7 = ClonezillaStartSavePage5(wizard, '')
+	page8 = ClonezillaStartSavePage6(wizard, '')
+        page9 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+	page6.SetPrev(page5)
+	page6.SetNext(page7)
+	page7.SetPrev(page6)
+	page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartRestoreWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartRestoreWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStartRestorePage1(wizard, '')
+        page4 = ClonezillaStartRestorePage2(wizard, '')
+        page5 = ClonezillaStartRestorePage3(wizard, '')
+        page6 = ClonezillaStartRestorePage4(wizard, '')
+        page7 = ClonezillaStartRestorePage5(wizard, '')
+	page8 = ClonezillaStartRestorePage6(wizard, '')
+        page9 = ClonezillaStartRestorePage7(wizard, '')
+	page10 = ClonezillaStartRestorePage8(wizard, '')
+	page11 = ClonezillaStartRestorePage9(wizard, '')
+	page12 = ClonezillaStartRestorePage10(wizard, '')
+	page13 = ClonezillaStartRestorePage11(wizard, '')
+	page14 = ClonezillaStartRestorePage12(wizard, '')
+	page15 = ClonezillaStartRestorePage13(wizard, '')
+        page16 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+        page4.SetPrev(page3)
+        page4.SetNext(page5)
+        page5.SetPrev(page4)
+        page5.SetNext(page6)
+        page6.SetPrev(page5)
+        page6.SetNext(page7)
+        page7.SetPrev(page6)
+        page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+	page10.SetPrev(page9)
+	page10.SetNext(page11)
+	page11.SetPrev(page9)
+	page11.SetNext(page12)
+	page12.SetPrev(page9)
+	page12.SetNext(page13)
+	page13.SetPrev(page9)
+	page13.SetNext(page14)
+	page14.SetPrev(page9)
+	page14.SetNext(page15)
+	page15.SetPrev(page14)
+	page15.SetNext(page16)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaSelectWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaSelectWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaSelectPage1(wizard, '')
+	page4 = ClonezillaSelectPage2(wizard, '')
+        page5 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStopWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStopWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStopPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def LocalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'LocalWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = LocalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RebootWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RebootWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RebootPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ShutdownWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ShutdownWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ShutdownPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules-----------------------------
+    def WakeOnLanWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'WakeOnLanWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = WakeOnLanPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------------------------------------------------
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame(parent=None, id=-1)
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/backup/old_version/qqWizard.py
===================================================================
--- drbl_ui/backup/old_version/qqWizard.py	(revision 20)
+++ drbl_ui/backup/old_version/qqWizard.py	(revision 20)
@@ -0,0 +1,1605 @@
+import  wx
+import  wx.wizard as wiz
+import	sys
+import	gettext
+from wx.lib.mixins.listctrl import CheckListCtrlMixin
+import  wx.lib.filebrowsebutton as filebrowse
+
+cat = gettext.GNUTranslations(open("utf-8.mo"))
+_ = cat.gettext
+
+global FinalArgs 
+FinalArgs = ['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''] 
+#global selected_hosts, selected_clients, lenghth
+#lenghth = 0
+
+#----------------------------------------------------------------------
+ClonezillaStartSaveArgs = {
+1: ("-q", _('msg_ocs_param_q')),
+2: ("-c", _('msg_ocs_param_c')),
+3: ("-nogui", _('msg_ocs_param_nogui')),
+4: ("-a", _('msg_ocs_param_a')),
+5: ("-f", _('msg_ocs_param_f')),
+6: ("-s", _('msg_ocs_param_s')),
+}
+
+#----------------------------------------------------------------------
+ClonezillaStartRestoreArgs = {
+1: ("-g auto", _('msg_ocs_param_g_auto')),
+2: ("-x", _('msg_ocs_param_x')),
+3: ("-brdcst", _('msg_ocs_param_broadcast')),
+4: ("-v", _('msg_ocs_param_v')),
+5: ("-nogui", _('msg_ocs_param_nogui')),
+6: ("-c", _('msg_ocs_param_c')),
+7: ("-u", _('msg_ocs_param_u')),
+8: ("-t", _('msg_ocs_param_t')),
+9: ("-j0", _('msg_ocs_param_j0')),
+10: ("-ns", _('msg_ocs_param_ns')),
+11: ("-k", _('msg_ocs_param_k')),
+12: ("-r", _('msg_ocs_param_r')),
+13: ("-e", _('msg_ocs_param_e')),
+14: ("-f", _('msg_ocs_param_f')),
+15: ("-s", _('msg_ocs_param_s')),
+16: ("-a", _('msg_ocs_param_a')),
+17: ("-o", _('msg_ocs_param_o')),
+18: ("-hn0", _('msg_ocs_param_hn0')),
+19: ("-hn1", _('msg_ocs_param_hn1')),
+}
+
+#----------------------------------------------------------------------
+class CSSCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartSaveArgs[data][0]
+        if flag:
+	    FinalArgs[index+3] = arg
+        else:
+	    FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+class CSRCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartRestoreArgs[data][0]
+        if flag:
+	    if index == 18:
+		FinalArgs[index+4] = arg
+	    else:
+		FinalArgs[index+3] = arg
+        else:
+	    if index == 18:
+		FinalArgs[index+4] = ''
+	    else:
+		FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SetAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.cb = wx.CheckBox(self, -1, _('msg_title_set_all_clients'))
+        self.cb.SetValue(True)
+        self.sizer.Add(self.cb, 0, wx.ALL, 5)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if self.cb.GetValue():
+	    FinalArgs[1] = ''
+	    next = next.GetNext()
+	else:
+	    FinalArgs[1] = ''
+	    FinalArgs[1] = '-h'
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SelectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.selected_hosts = []
+	self.selected_clients = ''
+	self.lenghth = 0
+
+        g = open("/home/chris/ip_list", "r")
+        ip_list = g.read()
+        tokens = ("%s" % ip_list).split()
+        self.lenghth = len(tokens)
+        for i in range(0,len(tokens)):
+                self.selected_hosts.insert(len(tokens),"")
+                i = i+1
+        g.close()
+
+        lb = wx.CheckListBox(self, -1, (35,50), (290,150), tokens)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, lb)
+        lb.SetSelection(0)
+        counts = lb.GetCount()
+        self.lb = lb
+        pos = lb.GetPosition().x + lb.GetSize().width + 25
+
+    def EvtCheckListBox(self, event):
+	j = 0
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+            del self.selected_hosts[index]
+            self.selected_hosts.insert(index,label)
+        if not (self.lb.IsChecked(index)):
+            self.selected_hosts.remove(label)
+            self.selected_hosts.insert(index,"")
+        self.lb.SetSelection(index)    #so that (un)checking also selects (moves the highlight)
+	self.selected_clients = ''
+	while j < self.lenghth:
+	    if self.selected_hosts[j] != "":
+	        self.selected_clients = self.selected_clients + self.selected_hosts[j] + ' '
+	    j = j+1
+        self.selected_clients = '\"' + self.selected_clients + '\"'
+        FinalArgs[2] = self.selected_clients
+	#print FinalArgs[2]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	#print self.selected_clients
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxGraPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_remote_linux_graphic'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/dcs'
+	FinalArgs[3] = 'remote-linux-gra'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxTxtPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_linux_text'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-linux-text'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class TerminalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_thin_client'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-thin-client'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class RemoteMemTestPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_memtest'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-memtest'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class RemotefdosPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_fdos'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-fdos'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_save_disk'), _('msg_clonezilla_save_parts')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,90),
+                ModeList, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[12] = 'startdisk save'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[12] = 'startdisk save'
+        if event.GetInt() == 1:
+                FinalArgs[12] = 'startpart save'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_ask_if_input_save_image_name_in_server'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+
+        self.cb = wx.CheckBox(self, -1, 'YES',(20,130)) # not translated
+        self.cb.SetValue(True)
+        #self.sizer.Add(self.cb, 0, wx.TOP|wx.LEFT, 80)
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if not self.cb.GetValue():
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[13] = self.text_img.GetValue()
+	FinalArgs[14] = self.text_dev.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSSCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))	#not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)	#not translated
+
+        for key, data in ClonezillaStartSaveArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        if self.list.IsChecked(0) == self.list.IsChecked(1) == self.list.IsChecked(2) == self.list.IsChecked(3) == self.list.IsChecked(4) == self.list.IsChecked(5) == 0:
+            next = 0
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'),
+                      _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150),
+                ArgList, 1, wx.RA_SPECIFY_COLS
+                )
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[9] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[9] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[9] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[9] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[9] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [ _('msg_ocs_param_z0'), _('msg_ocs_param_z1'), _('msg_ocs_param_z2'), _('msg_ocs_param_z3')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (340,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[10] = '-z3'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[10] = '-z0'
+        if event.GetSelection() == 1:
+                FinalArgs[10] = '-z1'
+        if event.GetSelection() == 2:
+                FinalArgs[10] = '-z2'
+        if event.GetSelection() == 3:
+                FinalArgs[10] = '-z3'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_restore_disk'), _('msg_clonezilla_restore_parts')]
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+        FinalArgs[32] = 'startdisk'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[32] = 'startdisk'
+        if event.GetInt() == 1:
+                FinalArgs[32] = 'startpart'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSRCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT) #not translated
+
+        for key, data in ClonezillaStartRestoreArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	j = 0
+	check_sum = 0
+        next = self.next
+	for j in range(0,18):
+	    check_sum = check_sum + self.list.IsChecked(j)
+	if check_sum == 0: # if user didn't check any box, then return NULL.
+            next = 0
+	if (self.list.IsChecked(17) or self.list.IsChecked(18)):
+	    next = self.next
+	else:
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_write_MS_WIN_is_necessary'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+	#if len(_('msg_write_MS_WIN_is_necessary')) <= 517:
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[:60], (10,60))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[60:122], (10,80))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[122:184], (10,100))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[184:253], (10,120))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[253:314], (10,140))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[314:380], (10,160))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[380:440], (10,180))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[440:495], (10,220))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[495:], (10,240))
+	#else:
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[:79], (10,60))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[79:156], (10,80))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[156:248], (10,100))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[248:331], (10,120))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[331:413], (10,140))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[413:449], (10,160))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[449:], (10,200))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_What_the_win_hostname_prefix'), (5, 80))
+        self.text = wx.TextCtrl(self, -1, "PC", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	#print FinalArgs
+	if FinalArgs[20] == '-hn0' and FinalArgs[22] == '-hn1':
+	    FinalArgs[21] = FinalArgs[23] = self.text.GetValue()
+	elif FinalArgs[20] == '-hn0'and FinalArgs[22] != '-hn1':
+	    FinalArgs[21] =  self.text.GetValue()
+	elif FinalArgs[22] == '-hn1' and FinalArgs[20] != '-hn0':
+	    FinalArgs[23] = self.text.GetValue()
+        elif FinalArgs[20] != '-hn0' and FinalArgs[22] != '-hn1':
+            FinalArgs[21] = FinalArgs[23] = ''
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+	wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[24] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[24] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[24] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[24] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        FinalArgs[25] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[25] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[25] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[25] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[25] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[9] == '-u':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_choose_the_image_to_restore'), (5,80))
+        self.fbb = filebrowse.FileBrowseButton(self, -1, pos=(50,150), size=(350, -1), buttonText='browse', toolTip='Type filename or click browse to choose file', fileMask='*.img', changeCallback = self.fbbCallback)
+
+    def fbbCallback(self, evt):
+        FinalArgs[34] = evt.GetString()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        if FinalArgs[32] == 'startdisk':
+            wx.StaticText(self, -1, _('msg_choose_the_disks_to_restore'), (5,80))
+        elif FinalArgs[32] == 'startpart':
+            wx.StaticText(self, -1, _(msg_choose_the_parts_to_restore), (5,80))
+        self.text = wx.TextCtrl(self, -1, "hda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[9] == '-u':
+	    FinalArgs[35] = ''
+	elif FinalArgs[9] == '':
+	    FinalArgs[35] = self.text.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+	if FinalArgs[32] == 'startdisk':
+            rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_disk'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+	elif FinalArgs[32] == 'startpart':
+	    rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_parts'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	if FinalArgs[9] == '-u':
+	    FinalArgs[33] = 'restore'
+	else:
+	    FinalArgs[33] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        if FinalArgs[9] == '-u':
+            FinalArgs[33] = 'restore'
+	if FinalArgs[33] == 'restore':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage10(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_clients_time_to_wait'), _('msg_time_to_wait'), _('msg_clients_to_wait')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[26] = '--clients-to-wait'
+	FinalArgs[28] = '--max-time-to-wait'
+
+    def EvtRadioBox(self, event):
+	if event.GetInt() == 0:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 1:
+	    FinalArgs[26] = ''
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 2:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = ''
+ 
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[33] == 'restore':
+            FinalArgs[26] = ''
+            FinalArgs[28] = ''
+	    next = self.next
+	if FinalArgs[26] == '' and FinalArgs[28] != '':
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage11(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_how_many_clients_to_restore'), (20, 80))
+	self.text = wx.TextCtrl(self, -1, '5', (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[26] != '':
+	    FinalArgs[27] = self.text.GetValue()
+	    next = self.next
+	if FinalArgs[28] == '': 
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage12(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_max_time_to_wait_sec'), (20, 80))
+        self.text = wx.TextCtrl(self, -1, "300", (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[28] != '':
+	    FinalArgs[29] = self.text.GetValue()
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage13(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	FinalArgs[5] = '-y1'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[5] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[5] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[5] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[5] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        FinalArgs[6] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[6] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[6] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[6] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[6] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[7] = 'select_in_client'
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStopPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LocalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_local'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RebootPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reboot'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ShutdownPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_shutdown'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class FinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self, parent, id):
+        wx.Frame.__init__(self, parent, id, 'TEST WIZARD', size=(600,400))
+        self.scroll = wx.ScrolledWindow(self, -1)
+	self.scroll.SetScrollbars(1, 1, 1200, 800)
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 30)) 	# not translated
+        self.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_linux_graphic'), (50, 40))
+        wx.StaticLine(self, -1, (30,47), (550, 47))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 80))
+        self.Bind(wx.EVT_BUTTON, self.RemoteLinuxTxtWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_linux_text'), (50, 90))
+        wx.StaticLine(self, -1, (30,80), (550, 80))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 130))
+        self.Bind(wx.EVT_BUTTON, self.TerminalWizard, b)
+        wx.StaticText(self, -1, _('msg_thin_client'), (50, 140))
+        wx.StaticLine(self, -1, (30,114), (550, 114))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 180))
+        self.Bind(wx.EVT_BUTTON, self.RemoteMemTestWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_memtest'), (50, 190))
+        wx.StaticLine(self, -1, (30,148), (550, 148))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 230))
+        self.Bind(wx.EVT_BUTTON, self.RemotefdosWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_fdos'), (50, 240))
+        wx.StaticLine(self, -1, (30,182), (550, 182))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 280))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaStartSaveWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_start_save'), (50, 290)) # not translated
+        wx.StaticLine(self, -1, (30,216), (550, 216))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 330))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaStartRestoreWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_start_restore'), (50, 340)) # not translated
+        wx.StaticLine(self, -1, (30,250), (550, 250))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 380))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaSelectWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_selec_in_client'), (50, 390))
+        wx.StaticLine(self, -1, (30,284), (550, 284))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 430))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaStopWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'), (50, 440)) 
+        wx.StaticLine(self, -1, (30,318), (550, 318))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 480))
+        self.Bind(wx.EVT_BUTTON, self.LocalWizard, b)
+        wx.StaticText(self, -1, _('msg_local'), (50, 490))
+        wx.StaticLine(self, -1, (30,352), (550, 352))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 530))
+        self.Bind(wx.EVT_BUTTON, self.RebootWizard, b)
+        wx.StaticText(self, -1, _('msg_reboot'), (50, 540))
+        wx.StaticLine(self, -1, (30,386), (550, 386))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 580))
+        self.Bind(wx.EVT_BUTTON, self.ShutdownWizard, b)
+        wx.StaticText(self, -1, _('msg_shutdown'), (50, 590))
+        wx.StaticLine(self, -1, (30,420), (550, 420))
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxGraWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxGraWizard', pos = (500,200))
+	i = 0
+
+	page1 = SetAllClientsPage(wizard, '')
+	page2 = SelectClientsPage(wizard, '')
+	page3 = RemoteLinuxGraPage(wizard, '')
+	page4 = FinalPage(wizard, '')
+
+	self.page1 = page1
+	wizard.SetPageSize((500,300))
+
+	page1.SetNext(page2)
+	page2.SetPrev(page1)
+	page2.SetNext(page3)
+	page3.SetPrev(page2)
+	page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+	    print FinalArgs
+	    for i in range(0,35):
+		FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+	    
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxTxtWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxTextWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteLinuxTxtPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+	    print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def TerminalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'TerminalWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = TerminalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteMemTestWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteMemTestWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteMemTestPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RemotefdosWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemotefdosWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemotefdosPage(wizard,'')
+        page4 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartSaveWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartSaveWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+	page3 = ClonezillaStartSavePage1(wizard, '')
+	page4 = ClonezillaStartSavePage2(wizard, '')
+	page5 = ClonezillaStartSavePage3(wizard, '')
+	page6 = ClonezillaStartSavePage4(wizard, '')
+	page7 = ClonezillaStartSavePage5(wizard, '')
+	page8 = ClonezillaStartSavePage6(wizard, '')
+        page9 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+	#wizard.FitToPage(page4)
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+	page6.SetPrev(page5)
+	page6.SetNext(page7)
+	page7.SetPrev(page6)
+	page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartRestoreWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartRestoreWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStartRestorePage1(wizard, '')
+        page4 = ClonezillaStartRestorePage2(wizard, '')
+        page5 = ClonezillaStartRestorePage3(wizard, '')
+        page6 = ClonezillaStartRestorePage4(wizard, '')
+        page7 = ClonezillaStartRestorePage5(wizard, '')
+	page8 = ClonezillaStartRestorePage6(wizard, '')
+        page9 = ClonezillaStartRestorePage7(wizard, '')
+	page10 = ClonezillaStartRestorePage8(wizard, '')
+	page11 = ClonezillaStartRestorePage9(wizard, '')
+	page12 = ClonezillaStartRestorePage10(wizard, '')
+	page13 = ClonezillaStartRestorePage11(wizard, '')
+	page14 = ClonezillaStartRestorePage12(wizard, '')
+	page15 = ClonezillaStartRestorePage13(wizard, '')
+        page16 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+        page4.SetPrev(page3)
+        page4.SetNext(page5)
+        page5.SetPrev(page4)
+        page5.SetNext(page6)
+        page6.SetPrev(page5)
+        page6.SetNext(page7)
+        page7.SetPrev(page6)
+        page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+	page10.SetPrev(page9)
+	page10.SetNext(page11)
+	page11.SetPrev(page10)
+	page11.SetNext(page12)
+	page12.SetPrev(page11)
+	page12.SetNext(page13)
+	page13.SetPrev(page12)
+	page13.SetNext(page14)
+	page14.SetPrev(page13)
+	page14.SetNext(page15)
+	page15.SetPrev(page14)
+	page15.SetNext(page16)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaSelectWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaSelectWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaSelectPage1(wizard, '')
+	page4 = ClonezillaSelectPage2(wizard, '')
+        page5 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStopWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStopWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStopPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def LocalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'LocalWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = LocalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RebootWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RebootWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RebootPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ShutdownWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ShutdownWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ShutdownPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame(parent=None, id=-1)
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/backup/old_version/qqWizard_v2.py
===================================================================
--- drbl_ui/backup/old_version/qqWizard_v2.py	(revision 20)
+++ drbl_ui/backup/old_version/qqWizard_v2.py	(revision 20)
@@ -0,0 +1,1605 @@
+import  wx
+import  wx.wizard as wiz
+import	sys
+import	gettext
+from wx.lib.mixins.listctrl import CheckListCtrlMixin
+import  wx.lib.filebrowsebutton as filebrowse
+
+cat = gettext.GNUTranslations(open("utf-8.mo"))
+_ = cat.gettext
+
+global FinalArgs 
+FinalArgs = ['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''] 
+#global selected_hosts, selected_clients, lenghth
+#lenghth = 0
+
+#----------------------------------------------------------------------
+ClonezillaStartSaveArgs = {
+1: ("-q", _('msg_ocs_param_q')),
+2: ("-c", _('msg_ocs_param_c')),
+3: ("-nogui", _('msg_ocs_param_nogui')),
+4: ("-a", _('msg_ocs_param_a')),
+5: ("-f", _('msg_ocs_param_f')),
+6: ("-s", _('msg_ocs_param_s')),
+}
+
+#----------------------------------------------------------------------
+ClonezillaStartRestoreArgs = {
+1: ("-g auto", _('msg_ocs_param_g_auto')),
+2: ("-x", _('msg_ocs_param_x')),
+3: ("-brdcst", _('msg_ocs_param_broadcast')),
+4: ("-v", _('msg_ocs_param_v')),
+5: ("-nogui", _('msg_ocs_param_nogui')),
+6: ("-c", _('msg_ocs_param_c')),
+7: ("-u", _('msg_ocs_param_u')),
+8: ("-t", _('msg_ocs_param_t')),
+9: ("-j0", _('msg_ocs_param_j0')),
+10: ("-ns", _('msg_ocs_param_ns')),
+11: ("-k", _('msg_ocs_param_k')),
+12: ("-r", _('msg_ocs_param_r')),
+13: ("-e", _('msg_ocs_param_e')),
+14: ("-f", _('msg_ocs_param_f')),
+15: ("-s", _('msg_ocs_param_s')),
+16: ("-a", _('msg_ocs_param_a')),
+17: ("-o", _('msg_ocs_param_o')),
+18: ("-hn0", _('msg_ocs_param_hn0')),
+19: ("-hn1", _('msg_ocs_param_hn1')),
+}
+
+#----------------------------------------------------------------------
+class CSSCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartSaveArgs[data][0]
+        if flag:
+	    FinalArgs[index+3] = arg
+        else:
+	    FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+class CSRCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartRestoreArgs[data][0]
+        if flag:
+	    if index == 18:
+		FinalArgs[index+4] = arg
+	    else:
+		FinalArgs[index+3] = arg
+        else:
+	    if index == 18:
+		FinalArgs[index+4] = ''
+	    else:
+		FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SetAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.cb = wx.CheckBox(self, -1, _('msg_title_set_all_clients'))
+        self.cb.SetValue(True)
+        self.sizer.Add(self.cb, 0, wx.ALL, 5)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if self.cb.GetValue():
+	    FinalArgs[1] = ''
+	    next = next.GetNext()
+	else:
+	    FinalArgs[1] = ''
+	    FinalArgs[1] = '-h'
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SelectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.selected_hosts = []
+	self.selected_clients = ''
+	self.lenghth = 0
+
+        g = open("/home/chris/ip_list", "r")
+        ip_list = g.read()
+        tokens = ("%s" % ip_list).split()
+        self.lenghth = len(tokens)
+        for i in range(0,len(tokens)):
+                self.selected_hosts.insert(len(tokens),"")
+                i = i+1
+        g.close()
+
+        lb = wx.CheckListBox(self, -1, (35,50), (290,150), tokens)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, lb)
+        lb.SetSelection(0)
+        counts = lb.GetCount()
+        self.lb = lb
+        pos = lb.GetPosition().x + lb.GetSize().width + 25
+
+    def EvtCheckListBox(self, event):
+	j = 0
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+            del self.selected_hosts[index]
+            self.selected_hosts.insert(index,label)
+        if not (self.lb.IsChecked(index)):
+            self.selected_hosts.remove(label)
+            self.selected_hosts.insert(index,"")
+        self.lb.SetSelection(index)    #so that (un)checking also selects (moves the highlight)
+	self.selected_clients = ''
+	while j < self.lenghth:
+	    if self.selected_hosts[j] != "":
+	        self.selected_clients = self.selected_clients + self.selected_hosts[j] + ' '
+	    j = j+1
+        self.selected_clients = '\"' + self.selected_clients + '\"'
+        FinalArgs[2] = self.selected_clients
+	#print FinalArgs[2]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	#print self.selected_clients
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxGraPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_remote_linux_graphic'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/dcs'
+	FinalArgs[3] = 'remote-linux-gra'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxTxtPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_linux_text'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-linux-text'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class TerminalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_thin_client'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-thin-client'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class RemoteMemTestPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_memtest'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-memtest'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class RemotefdosPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_fdos'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-fdos'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_save_disk'), _('msg_clonezilla_save_parts')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,90),
+                ModeList, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[12] = 'startdisk save'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[12] = 'startdisk save'
+        if event.GetInt() == 1:
+                FinalArgs[12] = 'startpart save'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_ask_if_input_save_image_name_in_server'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+
+        self.cb = wx.CheckBox(self, -1, 'YES',(20,130)) # not translated
+        self.cb.SetValue(True)
+        #self.sizer.Add(self.cb, 0, wx.TOP|wx.LEFT, 80)
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if not self.cb.GetValue():
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[13] = self.text_img.GetValue()
+	FinalArgs[14] = self.text_dev.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSSCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))	#not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)	#not translated
+
+        for key, data in ClonezillaStartSaveArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        if self.list.IsChecked(0) == self.list.IsChecked(1) == self.list.IsChecked(2) == self.list.IsChecked(3) == self.list.IsChecked(4) == self.list.IsChecked(5) == 0:
+            next = 0
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'),
+                      _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150),
+                ArgList, 1, wx.RA_SPECIFY_COLS
+                )
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[9] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[9] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[9] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[9] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[9] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [ _('msg_ocs_param_z0'), _('msg_ocs_param_z1'), _('msg_ocs_param_z2'), _('msg_ocs_param_z3')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (340,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[10] = '-z3'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[10] = '-z0'
+        if event.GetSelection() == 1:
+                FinalArgs[10] = '-z1'
+        if event.GetSelection() == 2:
+                FinalArgs[10] = '-z2'
+        if event.GetSelection() == 3:
+                FinalArgs[10] = '-z3'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_restore_disk'), _('msg_clonezilla_restore_parts')]
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+        FinalArgs[32] = 'startdisk'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[32] = 'startdisk'
+        if event.GetInt() == 1:
+                FinalArgs[32] = 'startpart'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSRCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT) #not translated
+
+        for key, data in ClonezillaStartRestoreArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	j = 0
+	check_sum = 0
+        next = self.next
+	for j in range(0,18):
+	    check_sum = check_sum + self.list.IsChecked(j)
+	if check_sum == 0: # if user didn't check any box, then return NULL.
+            next = 0
+	if (self.list.IsChecked(17) or self.list.IsChecked(18)):
+	    next = self.next
+	else:
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_write_MS_WIN_is_necessary'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+	#if len(_('msg_write_MS_WIN_is_necessary')) <= 517:
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[:60], (10,60))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[60:122], (10,80))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[122:184], (10,100))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[184:253], (10,120))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[253:314], (10,140))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[314:380], (10,160))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[380:440], (10,180))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[440:495], (10,220))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[495:], (10,240))
+	#else:
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[:79], (10,60))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[79:156], (10,80))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[156:248], (10,100))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[248:331], (10,120))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[331:413], (10,140))
+            #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[413:449], (10,160))
+	    #wx.StaticText(self, -1, _('msg_write_MS_WIN_is_necessary')[449:], (10,200))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_What_the_win_hostname_prefix'), (5, 80))
+        self.text = wx.TextCtrl(self, -1, "PC", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	#print FinalArgs
+	if FinalArgs[20] == '-hn0' and FinalArgs[22] == '-hn1':
+	    FinalArgs[21] = FinalArgs[23] = self.text.GetValue()
+	elif FinalArgs[20] == '-hn0'and FinalArgs[22] != '-hn1':
+	    FinalArgs[21] =  self.text.GetValue()
+	elif FinalArgs[22] == '-hn1' and FinalArgs[20] != '-hn0':
+	    FinalArgs[23] = self.text.GetValue()
+        elif FinalArgs[20] != '-hn0' and FinalArgs[22] != '-hn1':
+            FinalArgs[21] = FinalArgs[23] = ''
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+	wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[24] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[24] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[24] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[24] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        FinalArgs[25] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[25] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[25] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[25] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[25] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[9] == '-u':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_choose_the_image_to_restore'), (5,80))
+        self.fbb = filebrowse.FileBrowseButton(self, -1, pos=(50,150), size=(350, -1), buttonText='browse', toolTip='Type filename or click browse to choose file', fileMask='*.img', changeCallback = self.fbbCallback)
+
+    def fbbCallback(self, evt):
+        FinalArgs[34] = evt.GetString()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        if FinalArgs[32] == 'startdisk':
+            wx.StaticText(self, -1, _('msg_choose_the_disks_to_restore'), (5,80))
+        elif FinalArgs[32] == 'startpart':
+            wx.StaticText(self, -1, _(msg_choose_the_parts_to_restore), (5,80))
+        self.text = wx.TextCtrl(self, -1, "hda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[9] == '-u':
+	    FinalArgs[35] = ''
+	elif FinalArgs[9] == '':
+	    FinalArgs[35] = self.text.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+	if FinalArgs[32] == 'startdisk':
+            rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_disk'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+	elif FinalArgs[32] == 'startpart':
+	    rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_parts'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	if FinalArgs[9] == '-u':
+	    FinalArgs[33] = 'restore'
+	else:
+	    FinalArgs[33] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        if FinalArgs[9] == '-u':
+            FinalArgs[33] = 'restore'
+	if FinalArgs[33] == 'restore':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage10(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_clients_time_to_wait'), _('msg_time_to_wait'), _('msg_clients_to_wait')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[26] = '--clients-to-wait'
+	FinalArgs[28] = '--max-time-to-wait'
+
+    def EvtRadioBox(self, event):
+	if event.GetInt() == 0:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 1:
+	    FinalArgs[26] = ''
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 2:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = ''
+ 
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[33] == 'restore':
+            FinalArgs[26] = ''
+            FinalArgs[28] = ''
+	    next = self.next
+	if FinalArgs[26] == '' and FinalArgs[28] != '':
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage11(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_how_many_clients_to_restore'), (20, 80))
+	self.text = wx.TextCtrl(self, -1, '5', (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[26] != '':
+	    FinalArgs[27] = self.text.GetValue()
+	    next = self.next
+	if FinalArgs[28] == '': 
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage12(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_max_time_to_wait_sec'), (20, 80))
+        self.text = wx.TextCtrl(self, -1, "300", (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[28] != '':
+	    FinalArgs[29] = self.text.GetValue()
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage13(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 10, 20),wx.DLG_SZE(self, 200, 100),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	FinalArgs[5] = '-y1'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[5] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[5] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[5] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[5] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        FinalArgs[6] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[6] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[6] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[6] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[6] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[7] = 'select_in_client'
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStopPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LocalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_local'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RebootPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reboot'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ShutdownPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_shutdown'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class FinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self, parent, id):
+        wx.Frame.__init__(self, parent, id, 'TEST WIZARD', size=(600,400))
+        self.scroll = wx.ScrolledWindow(self, -1)
+	self.scroll.SetScrollbars(1, 1, 1200, 800)
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 30)) 	# not translated
+        self.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_linux_graphic'), (50, 40))
+        wx.StaticLine(self, -1, (30,47), (550, 47))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 80))
+        self.Bind(wx.EVT_BUTTON, self.RemoteLinuxTxtWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_linux_text'), (50, 90))
+        wx.StaticLine(self, -1, (30,80), (550, 80))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 130))
+        self.Bind(wx.EVT_BUTTON, self.TerminalWizard, b)
+        wx.StaticText(self, -1, _('msg_thin_client'), (50, 140))
+        wx.StaticLine(self, -1, (30,114), (550, 114))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 180))
+        self.Bind(wx.EVT_BUTTON, self.RemoteMemTestWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_memtest'), (50, 190))
+        wx.StaticLine(self, -1, (30,148), (550, 148))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 230))
+        self.Bind(wx.EVT_BUTTON, self.RemotefdosWizard, b)
+        wx.StaticText(self, -1, _('msg_remote_fdos'), (50, 240))
+        wx.StaticLine(self, -1, (30,182), (550, 182))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 280))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaStartSaveWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_start_save'), (50, 290)) # not translated
+        wx.StaticLine(self, -1, (30,216), (550, 216))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 330))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaStartRestoreWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_start_restore'), (50, 340)) # not translated
+        wx.StaticLine(self, -1, (30,250), (550, 250))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 380))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaSelectWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_selec_in_client'), (50, 390))
+        wx.StaticLine(self, -1, (30,284), (550, 284))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 430))
+        self.Bind(wx.EVT_BUTTON, self.ClonezillaStopWizard, b)
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'), (50, 440)) 
+        wx.StaticLine(self, -1, (30,318), (550, 318))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 480))
+        self.Bind(wx.EVT_BUTTON, self.LocalWizard, b)
+        wx.StaticText(self, -1, _('msg_local'), (50, 490))
+        wx.StaticLine(self, -1, (30,352), (550, 352))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 530))
+        self.Bind(wx.EVT_BUTTON, self.RebootWizard, b)
+        wx.StaticText(self, -1, _('msg_reboot'), (50, 540))
+        wx.StaticLine(self, -1, (30,386), (550, 386))
+
+        b = wx.Button(self, -1, _('Run it'), pos=(450, 580))
+        self.Bind(wx.EVT_BUTTON, self.ShutdownWizard, b)
+        wx.StaticText(self, -1, _('msg_shutdown'), (50, 590))
+        wx.StaticLine(self, -1, (30,420), (550, 420))
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxGraWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxGraWizard', pos = (500,200))
+	i = 0
+
+	page1 = SetAllClientsPage(wizard, '')
+	page2 = SelectClientsPage(wizard, '')
+	page3 = RemoteLinuxGraPage(wizard, '')
+	page4 = FinalPage(wizard, '')
+
+	self.page1 = page1
+	wizard.SetPageSize((500,300))
+
+	page1.SetNext(page2)
+	page2.SetPrev(page1)
+	page2.SetNext(page3)
+	page3.SetPrev(page2)
+	page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+	    print FinalArgs
+	    for i in range(0,35):
+		FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+	    
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxTxtWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxTextWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteLinuxTxtPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+	    print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def TerminalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'TerminalWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = TerminalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteMemTestWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteMemTestWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteMemTestPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RemotefdosWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemotefdosWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemotefdosPage(wizard,'')
+        page4 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartSaveWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartSaveWizard', pos = (500,200))
+	i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+	page3 = ClonezillaStartSavePage1(wizard, '')
+	page4 = ClonezillaStartSavePage2(wizard, '')
+	page5 = ClonezillaStartSavePage3(wizard, '')
+	page6 = ClonezillaStartSavePage4(wizard, '')
+	page7 = ClonezillaStartSavePage5(wizard, '')
+	page8 = ClonezillaStartSavePage6(wizard, '')
+        page9 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+	#wizard.FitToPage(page4)
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+	page6.SetPrev(page5)
+	page6.SetNext(page7)
+	page7.SetPrev(page6)
+	page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartRestoreWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartRestoreWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStartRestorePage1(wizard, '')
+        page4 = ClonezillaStartRestorePage2(wizard, '')
+        page5 = ClonezillaStartRestorePage3(wizard, '')
+        page6 = ClonezillaStartRestorePage4(wizard, '')
+        page7 = ClonezillaStartRestorePage5(wizard, '')
+	page8 = ClonezillaStartRestorePage6(wizard, '')
+        page9 = ClonezillaStartRestorePage7(wizard, '')
+	page10 = ClonezillaStartRestorePage8(wizard, '')
+	page11 = ClonezillaStartRestorePage9(wizard, '')
+	page12 = ClonezillaStartRestorePage10(wizard, '')
+	page13 = ClonezillaStartRestorePage11(wizard, '')
+	page14 = ClonezillaStartRestorePage12(wizard, '')
+	page15 = ClonezillaStartRestorePage13(wizard, '')
+        page16 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+        page4.SetPrev(page3)
+        page4.SetNext(page5)
+        page5.SetPrev(page4)
+        page5.SetNext(page6)
+        page6.SetPrev(page5)
+        page6.SetNext(page7)
+        page7.SetPrev(page6)
+        page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+	page10.SetPrev(page9)
+	page10.SetNext(page11)
+	page11.SetPrev(page10)
+	page11.SetNext(page12)
+	page12.SetPrev(page11)
+	page12.SetNext(page13)
+	page13.SetPrev(page12)
+	page13.SetNext(page14)
+	page14.SetPrev(page13)
+	page14.SetNext(page15)
+	page15.SetPrev(page14)
+	page15.SetNext(page16)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaSelectWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaSelectWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaSelectPage1(wizard, '')
+	page4 = ClonezillaSelectPage2(wizard, '')
+        page5 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStopWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStopWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStopPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def LocalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'LocalWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = LocalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def RebootWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RebootWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RebootPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+#------------------------------Wizard Modules--------------------------
+    def ShutdownWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ShutdownWizard', pos = (500,200))
+        i = 0
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ShutdownPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            print FinalArgs
+            for i in range(0,35):
+                FinalArgs[i] = ''
+            wx.MessageBox(_('success'), "That's all folks!")
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!")
+
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame(parent=None, id=-1)
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/backup/orig_langs/en
===================================================================
--- drbl_ui/backup/orig_langs/en	(revision 20)
+++ drbl_ui/backup/orig_langs/en	(revision 20)
@@ -0,0 +1,551 @@
+#!/bin/bash
+msg_delimiter_star_line='*****************************************************'.
+msg_install_RH='Installing DRBL for RedHat/Fedora Linux...'
+msg_install_MDK='Installing DRBL for Mandriva Linux...'
+msg_install_DBN='Installing DRBL for Debian Linux...'
+msg_install_SUSE='Installing DRBL for SuSE Linux...'
+msg_OS_version='The version number for your OS'
+msg_is_not_supported='is not supported version, program stop!.'
+msg_press_ctrl_c_stop='Please press Ctrl-C to stop the program!'
+msg_set_proxy='Do you want to set the proxy server ?'
+msg_http_proxy_server='Proxy server name (FQDN) or IP address for http protocol ?'
+msg_http_proxy_port='Proxy server port for http protocol ?'
+msg_ftp_proxy_server='Proxy server name (FQDN) or IP address for ftp protocol ?'
+msg_ftp_proxy_port='Proxy server port for ftp protocol ?'
+msg_http_proxy_you_set='The http proxy server you set'
+msg_ftp_proxy_you_set='The ftp proxy server you set'
+msg_drbl_test_option='Do you want to use the DRBL "testing" packages which is more powerful, but maybe buggy (If you are brave enough!!!) (If you downloaded the DRBL rpm package from the testing directory, say "yes" here) ?'
+msg_drbl_unstable_option='Do you want to use the DRBL "unstable" packages which is much more powerful, but maybe very unstable (If you are super brave!!!) (If you downloaded the DRBL rpm package from the unstable directory, say "yes" here) ?'
+msg_drbl_extra_option='Do you want to use some extra packages provided by DRBL project ? (It is not necessary, just an option)'
+msg_drbl_netinstall_option='Do you want to install those network installation boot images so that you can let client to install some Linux distribution (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, and OpenSuSE) via network ? (Assume that your client machine has harddisk and it is possible you will install Linux into that, say Y)'
+msg_firefly_option='Do you want to use Asian CJK (Chinese, Japanese, Korean) patched packages (Provided by Firefly) (If you are brave enough) ?'
+msg_serial_console_option='Do you want to use the serial console output for clients ?'
+msg_know_nothing_serial_console='If you do NOT know anything about this, say "N" here, otherwise clients might show NOTHING on the screen !'
+msg_serial_console_only='Use serial console only for clients ? (Suitable for the clients without VGA output).'
+msg_redirect_to_which_port='Redirect to which serial port ?'
+msg_serial_console_speed='What is the speed for the serial console output ?'
+msg_smp_clients='Do you want to use SMP kernel for clients, i.e. your client have two or more CPUs ? Note!!! By choosing SMP kernel, this script will select the optimized kernel automatically!'
+msg_smp_clients_MDK='Do you want to use SMP kernel for clients, i.e. your client have two or more CPUs ?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='Install APT ...'
+msg_no_wget_get_it='No wget ? Trying to install wget...'
+msg_wget_installed_failure='Failed to install wget!!! We need that to automatically install apt! You have to install it by yourself!'
+msg_wget_installed_successful='Package wget installed successfully!'
+msg_no_apt_get_it='No apt ? Trying to install apt...'
+msg_apt_already_installed='apt is already installed. Amazing!!! You are excellent!'  
+msg_backup_apt_sources='Backup apt sources.list ...'
+msg_setup_apt_sources_MDK='Setup apt sources.list for Mandrake'
+msg_serial_console_parameter='The serial console output parameter: '
+msg_enjoy_apt='Now enjoy APT!'
+msg_clean_apt_cache='Cleaning the cache of apt to make some settings effect...'
+msg_check_apt_integrity='Checking rpm packages for apt integrity...'
+msg_upgrade_system_question='Do you want to upgrade operating system ?'
+msg_upgrade_whole_system='1st, we upgrade the whole system...'
+msg_check_installed_kernel='Checking if the installed kernel is the one we want...'
+msg_is_already_installed='is already installed in your system...'
+msg_need_to_install_kernel='We need to install the kernel for DRBL environment...Searching...'
+msg_create_nbi_files='Creating the image files for PXE and Etherboot client, this will take a few minutes ...'
+msg_latest_kernel_for_clients='The latest kernel for DRBL clients is'
+msg_no_drbl_script='You did NOT install drbl-script!!! Program terminated!'
+msg_create_files_for_PXELINUX='Creating config file for PXE clients...'
+msg_prepare_files_for_PXE_client='Preparing config and image files for PXE clients...'
+msg_PXE_NOT_work='PXE boot can NOT work!!!'
+msg_press_enter_to_continue='Press "Enter" to continue...'
+msg_press_enter_to_exit='Press "Enter" to exit...'
+msg_FreeDOS_NOT_work='FreeDOS Remote boot can NOT work!!!'
+msg_no_apt_already_uninstall='No package apt... Did you already uninstall DRBL packages ?'
+msg_program_stop='Program terminated!'
+msg_remove_SmallLinuxs_question='Do you want to remove those Small GNU/Linux Distributions (like DSL, PuppyLinux, INSERT or PLD) installed under DRBL environment if they exist ?'
+msg_remove_drbl_setup_question='Do you want to remove the "drbl" package ?'
+msg_remove_apt_question='Do you want to remove the "apt" package ?'
+msg_remove_yum_repo_question='Do you want to remove the yum repository setting ?'
+msg_remove_urpmi_media_question='Do you want to remove the urpmi source media setting ?'
+msg_cleaning_apt_cache='Cleaning the cache of apt...'
+msg_cleaning_tftpboot_and_misc='Cleaning the files in /tftpboot and other files... This might take several minutes...'
+msg_uninstalling_DRBL_RH='Uninstalling DRBL for RedHat/Fedora Linux...'
+msg_uninstalling_DRBL_MDK='Uninstalling DRBL for Mandriva Linux...'
+msg_uninstalling_DRBL_DBN='Uninstalling DRBL for Debian Linux...'
+msg_uninstalling_DRBL_SUSE='Uninstalling DRBL for SuSE Linux...'
+msg_analyzing_rpm_info='Analyzing the rpm packages info... This might take several minutes...'
+msg_failed_to_install_pkgs='Failed to install necessary packages, we can NOT go on!'
+msg_check_network_and_url='Please check the network connection between your machine and'
+msg_not_determine_OS='Can NOT determine the OS version number you are using!!!'
+msg_enter_OS_ver='Please enter the version (RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='Cleaning the cache of apt to make RPM::Architecture effect...'
+msg_install_DRBL_necesary_files='2nd, installing the necessary files for DRBL...'
+msg_select_url_path='The url and path you selected'
+msg_drbl_driver='Do you want to install the drivers for DRBL client which are not included in the kernel of your distribution, such as bcm4400, bcm5700 ?'
+msg_smp_optimization_kernel='You choose SMP kernel, so we must use the same CPU architecture kernel with this DRBL server!'
+msg_apt_optimization_question='Which CPU architecture kernel do you want to assign for DRBL clients ?'
+msg_optimization_level_0='0 -> i386 level CPU '
+msg_optimization_level_1='1 -> i586 level CPU'
+msg_optimization_level_2='2 -> Use the same CPU level with that of this DRBL server'
+msg_N_note='Note! Note Note!  Note!  Note!  Note!  Note!' 
+msg_different_level_machine_prompt='If your client machine(s) is not the same level with server, please answer "0" or "1", otherwise your client machine(s) will NOT be able to boot.'
+msg_diff_arch_explain='If you use wrong CPU level kernel, the glibc and openssl package might use i686 or i386, the kernel might use i686, i586 or i386, which might be not suitable to all your machines.' 
+msg_not_sure_better_1='If you are not sure, "1" is recommended, this will still have good performance and compatibility.'
+msg_same_optimization='The optimization for your system is on, the level is same as server.'
+msg_i586_optimization='The optimization for your system is set to "i586".'
+msg_no_optimization='No optimization for your system, we will use the "i386" package.'
+msg_glibc_openssl_upgrade_question='If there is new glibc and openssl in updates, do you want to upgrade ?'
+msg_glibc_openssl_keep='"0" to keep the existing glibc and openssl.'
+msg_keep_glibc_upgrade_openssl='"1" to keep the existing glibc, while upgrade openssl,'
+msg_upgrade_glibc_keep_openssl='"2" to keep the existing openssl, while upgrade glibc,'
+msg_upgrade_glibc_openssl='"3" to upgrade glibc and openssl (default),'
+msg_warning_glibc_upgrade='Warning!!!!! glibc is very important, you have to make sure the new glibc will work with this WORKING system (It is seldom that the system hang after upgrading glic, but it did happen in RedHat 9).'
+msg_upgrade_glibc_make_you_cry='Sometimes the new glibc will make you cry (Seldom happened)... If you are not sure, you can keep the old but working one, i.e. answer "0".'
+msg_install_dhcp_tftp_etc='Install dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='The optimization for your system is on, the level is same as server.'
+msg_optimization_is_off='No highest optimization for your system, we will use the "i386/i586" kernel, glibc and other packages.'
+msg_install_i386_of='Install the i386 version of'
+msg_searching_glibc_in_ayo='Searching the glibc in ayo repository'
+msg_searching_openssl_in_ayo='Searching the openssl in ayo repository'
+msg_searching_openssl_perl_in_ayo='Searching the openssl-perl in ayo repository'
+msg_install_mkinitrd_net_etherboot='Install mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='Removing the old'
+msg_creating_dev='Creating device source for clients...'
+msg_get_dev='Get the devices file from RPM repository...'
+msg_clean_tmp_dev='Cleaning the tmp device directory...'
+msg_remove_old_nbi='Remove the old nbi in /tftpboot ...'
+msg_install_extra_driver='Installing the driver which is not included in kernel package ...'
+msg_no_extra_driver='The driver which is not included in kernel package does not exist in the DRBL apt repository, either...So skip the installation of extra drivers...'
+msg_make_client_serial_console='Making the etherboot clients serial console output...'
+#
+msg_kernel_being_used='Warning! The kernel is being used now: '
+msg_warning_not_to_remove='Warning! You had better better not to remove it!!!'
+msg_not_remove='Please say "N" to the following remove option!'
+#
+msg_which_ayo_repository='Which "ayo" repository do you want to use ?'
+msg_which_os_ayo_repository='Which "ayo" repository do you want to use for OS packages ?'
+msg_which_drbl_ayo_repository='Which "ayo" repository do you want to use for DRBL packages ?'
+msg_enter_FQDN_IP_yum_repository='Please enter the hostname (FQDN) or IP address of yum repository with http:// or ftp:// prefix'
+msg_enter_the_path_for_dir_ver_updates='In the above yum repository, the path where these directories exist'
+# RH/FC os
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (default)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> Enter the directory in local HD ,cdrom or NFS directory. (You have to make sure you already got those files in local directory!)'
+msg_os_ayo_repository_5='5 -> Enter ayo repository (with OS packages) by yourself.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> Use the existing yum setting in this server (You must make sure it is working!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> Enter ayo repository (with OS packages) by yourself.'
+
+# RH/FC drbl
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (default)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> Enter the directory in local HD ,cdrom or NFS directory. (You have to make sure you already got those files in local directory!)'
+msg_drbl_ayo_repository_5='5 -> To enter repository (with DRBL packages) by yourself.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> To enter repository (with DRBL packages) by yourself.'
+
+# MDK OS
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+msg_ayo_repository_enter_by_yourself='5 -> Enter ayo repository by yourself.'
+
+# MDK drbl
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+
+msg_apt_not_compatible='Warning! We need to remove apt and libapt-pkg0, then install the apt which is compatible with DRBL.'
+msg_do_u_want_to_remove='Do you want to remove ?'
+msg_warning_apt_not_compatible_and_fail='You will use the apt which is not compatible with DRBL, something will go wrong!!! The installation will fail!!!'
+msg_rm_apt='Removing the package apt and libapt-pkg0...'
+msg_search_kernel_in_ayo='In ayo repository, searching the latest'
+msg_latest_kernel_in_ayo='The latest kernel in the ayo repository is'
+msg_install_kernel_might_take_several_minutes='It will take several minutes to install this kernel, please be patient... '
+msg_latest_kernel_is_already_installed='The latest kernel is already installed for DRBL clients, skip the kernel installation.'
+msg_error_no_drbl_kernel_in_apt='Can NOT find the DRBL kernel in apt repository!!!'
+msg_change_opt_from_i386_to_i586='For the distribution you are using, only i586 and i686 are available, so the optimization level is changed from i386 to i586!!!'
+msg_change_opt_from_i586_to_i386='For the distribution you are using, only i386 and i686 are available, so the optimization level is changed from i586 to i386!!!'
+msg_are_you_sure_run_impatient='This script is for those impatient, it will setup the DRBL server by the default value which might not fit your environment. Are you impatient ?'
+msg_run_step_by_step='Good! You can run the following and answer questions one by one. That should be able to fit your environment better...'
+msg_run_drbl4imp='Ok, Laziness is a virtue! Let us setup DRBL server with the default values!!!'
+msg_total_avail_space='The total available space for /tftpboot and / is:'
+msg_necessary_space_setup_drbl='The estimated necessary space to setup DRBL'
+msg_total_client_no='The total client number is'
+msg_system_maybe_not_enough_space='The system maybe not have enough space to setup DRBL! Note!!! This maybe will damage your system files!!!'
+msg_logout_X_for_thin_client_gdm='If you already logined into X-window, you have to logout X-window to make the modified gdm config work! Note! After that, make sure the gdm is running so that those thin clients can work with this gdm in the DRBL server!'
+msg_restart_X_for_thin_client_kdm='You have to restart X-window to make the modified kdm config work! Note! After that, make sure the kdm is running so that those thin clients can work with this kdm in the DRBL server!'
+msg_logout_X_for_modified_gdm_config_work='If you already logined into X-window, you have to logout X-window to make the modified gdm config work!'
+msg_logout_X_for_modified_kdm_config_work='If you already logined into X-window, you have to logout X-window to make the modified kdm config work!'
+msg_restart_graphic_mode_later='You already turn on the thin client option, now you have to start the graphic mode in this server so that those thin clients can connect to this DRBL server.'
+msg_turn_on_gdm_remote_access='Turn on the GDM remote access...'
+msg_gdm_remote_access_is_already_on='The GDM remote access in the DRBL server is already on!'
+msg_set_thin_client_mode_for_clients='Setting the terminal mode for DRBL clients ...'
+msg_gdm_remote_access_is_already_off='The GDM remote access in the DRBL server is already off!'
+msg_disable_thin_client_mode_for_clients='Disable the terminal mode for DRBL clients ...'
+msg_turn_off_gdm_remote_access='Turn off the GDM remote access...'
+msg_kdm_remote_access_is_already_on='The KDM remote access in the DRBL server is already on!'
+msg_turn_off_kdm_remote_access='Turn off the KDM remote access...'
+msg_kdm_remote_access_is_already_off='The KDM remote access in the DRBL server is already off!'
+msg_dm_in_DRBL_server='The display manager in this DRBL server is'
+msg_hint_for_answer='Hint! When a yes/no option is available, the default value is uppercase, Ex. (y/N), the default is "N", when you press "Enter", it will use "N". If you are not sure which one to choose, you can just press "Enter" key.'
+msg_available_kernel='Available kernel'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL server is ready!'
+msg_all_set_you_can_turn_on_clients='Now set the client machines to boot from PXE or Etherboot (refer to http://drbl.sourceforge.net for more details).'
+msg_etherboot_5_4_is_required='If Etherboot is used in client machine, version 5.4.0 or newer is required!'
+msg_win_fail_with_Missing_OS='If the cloned OS is M$ windows, and it fails to boot with error message like "Missing Operating System" or "Invalid System Disk", then you can try to change the IDE harddrive setting in BIOS to use LBA mode instead of AUTO mode.'
+
+# drbl-script
+msg_nchc_title='NCHC - National Center for High-Performance Computing, Taiwan'
+msg_drbl_title='DRBL - Diskless Remote Boot in Linux'
+msg_switch_client_mode='Switch the mode'
+msg_remote_linux='Client remote Linux, default mode, powerful client'
+# some prompt we have to use _ instead of " " (space) because we need it to be a word for dialog.
+msg_remote_linux_graphic='Client_remote_Linux,_graphic_mode,_powerful_client'
+msg_remote_linux_text='Client_remote_Linux,_text_mode,_powerful_client'
+msg_thin_client='Client_remote_Display_Linux,_terminal_mode'
+msg_remote_memtest='Client remote boot to run Memtest86+'
+msg_remote_fdos='Client remote boot to run FreeDOS'
+msg_clonezilla_start='Start_clonezilla_mode'
+msg_clonezilla_stop='Stop_clonezilla_mode'
+msg_netinstall='Client_install_Linux_via_network'
+msg_local='Client boots its local OS'
+msg_reboot='Reboot client now'
+msg_shutdown='Shutdown client now'
+msg_Wake_on_LAN='Turn on client by Wake-on-LAN now'
+msg_switch_pxe_menu='Switch DRBL client menus'
+msg_title_set_all_clients='Set all clients ?'
+msg_set_all_clients='Do you want to set all clients mode ?'
+msg_set_all_clients_des='If "No", some modes in the following, you can assign the default mode to each DRBL client by IP or MAC addresses (If MAC addresses are shown in dhcpd.conf),'
+msg_hide_reveal='Hide or reveal clients boot menus ?'
+msg_choose_the_action='Choose the action'
+msg_hide_pxe_menus='Hide some revealed clients boot menus'
+msg_reveal_pxe_menus='Reveal some hidden clients boot menus'
+msg_setdefault_pxe_menu='Set default boot menu for clients'
+msg_title_hide='Hide which images for DRBL client ?'
+msg_hide_list_des='Select the image label to be hidden for DRBL client when it boots (multiple choices available)'
+msg_reveal_title='Reveal which images for DRBL client ?'
+msg_reveal_list_des='Select the image label to be shown for DRBL client when it boots (multiple choices available)'
+msg_setdefault_title='Set which image as default menu for DRBL client ?'
+msg_setdefault_list_des='Select the default menu for DRBL client when it boots'
+msg_choose_netinstall_imag='Choose the Linux distribution to install via network'
+msg_nchc_clonezilla='Clonezilla - Opensource Clone System (OCS)'
+msg_nchc_drbl='DRBL, developed by NCHC Free Software Labs'
+msg_nchc_free_software_labs='NCHC Free Software Labs, Taiwan'
+msg_specify_hosts='Specify the hosts'
+msg_choose_the_multicast_method='Choose the method for multicast clone'
+msg_by_MAC_address='Specify the default boot mode by MAC address of client'
+msg_by_IP_address='Specify the default boot mode by IP address of client'
+msg_multicast_clonezilla_warning='Multicast Clonezilla Warning!'
+msg_multicast_clonezilla_warning_des='You are not setting all the clients, so remember the multicast restoring mode ONLY can run 1 (one) type image each time. You will mess them up if different multicast restoring images are assigned. Press the ENTER key to continue...'
+msg_choose_param_to_set='Set the advanced parameters (multiple choices available). If you have no idea, keep the default value, i.e. do NOT change anything'
+msg_choose_one_compression_param_to_save='Choose the compression option. If you have no idea, keep the default value, i.e. do NOT change anything'
+msg_ocs_param_n='Server will NOT restart nfs when start/stop clonezilla'
+msg_ocs_param_u='Select the image to restore in client (only for unicast restoring)'
+msg_ocs_param_c='Client waits for confirmation before cloning'
+msg_ocs_param_s='Client skips the hardware detection when booting'
+msg_ocs_param_f='Server will restart nfs when start/stop clonezilla'
+msg_ocs_param_j='Use sfdisk to create partition in target HD instead of dd'
+msg_ocs_param_j0='Use dd to create partition table instead of sfdisk'
+msg_ocs_param_k='Do NOT create partition in target harddisk in client'
+msg_ocs_param_t='Client does not restore the MBR (Mater Boot Record)'
+msg_ocs_param_e='Client uses the HD CHS value (saved in image) for sfdisk'
+msg_ocs_param_y='Server always provides clone mode - default local boot'
+msg_ocs_param_y0='Server always provides clone mode - default local boot'
+msg_ocs_param_y1='Server always provides clone mode - default clone'
+msg_ocs_param_y2='Server always provides clone mode - default drbl'
+msg_ocs_param_z0='Without compression (fastest but largest image)'
+msg_ocs_param_z1='Use gzip compression (fast but smaller image)'
+msg_ocs_param_z2='Use bzip2 compression (slow but smallest image)'
+msg_ocs_param_z3='Use_lzo_compression_(similar_to_gzip,_but_faster)'
+msg_ocs_param_g_auto='Client will reinstall grub in its HD MBR'
+msg_ocs_param_p_true='Do nothing when clone finishes'
+msg_ocs_param_p_poweroff='Shutdown client when clone finishes'
+msg_ocs_param_p_reboot='Reboot client when clone finishes'
+msg_ocs_param_p_choose='Choose in client as clone finishes'
+msg_choose_post_mode_after_clone='The action when client finishes cloning'
+msg_default_pxemenu_for_clone='The default PXE boot menu when booting is'
+msg_ocs_param_o="Run script in $POST_RUN_DIR as clone finishes"
+msg_ocs_param_hn0='Change M$ Win hostname (based on IP address) after clone'
+msg_ocs_param_hn1='Change M$ Win hostname (based on MAC address) after clone'
+msg_ocs_param_q='Use ntfsclone to save NTFS partition instead of partimage'
+msg_ocs_param_a='Do NOT force to turn on HD DMA'
+msg_ocs_param_nogui='Do NOT show GUI of partimage, use text only'
+msg_ocs_param_v='Prints verbose messages (especially for udpcast)'
+msg_ocs_param_r='Resize the partition when restoration finishes'
+msg_ocs_param_x='Use full-duplex network when multicast clone'
+msg_ocs_param_ns='Put ntfsclone temp file in image dir in server'
+msg_ocs_param_broadcast='When multicast clone, use broadcast. Use this as switch blocks multicast'
+msg_ocs_param_skip='Skip this option'
+msg_clonezilla_advanced_extra_param='Clonezilla advanced extra parameters'
+msg_skip_set_advanced_extra_param='Do you want to *SKIP* setting advanced extra parameters for clonezilla ? \n
+Available parameters: \n'
+msg_skip_set_save_compression_extra_param='Do you want to *SKIP* using other compression method (default is gzip) ?\n
+Available param:\n'
+msg_no_network_installation_img='No network installation image found!'
+msg_no_network_installation_img_des="I can NOT find any network installation image in $PXELINUX_DIR/default! \nMake sure you already install those netinstall RPM packages (like rh-FC3-netinstall) and run $DRBL_SCRIPT_PATH/generate-pxe-menu to generate the PXE menu file ($PXELINUX_DIR/default)."
+msg_start_clonezilla_mode='Start the Clonezilla mode'
+msg_choose_mode='Choose the mode'
+msg_clonezilla_save_disk='Save_client_entire_disk'
+msg_clonezilla_restore_disk='Restore_client_entire_disk'
+msg_clonezilla_save_parts='Save_client_partitions'
+msg_clonezilla_restore_parts='Restore_client_partitions'
+msg_clonezilla_save_hda1='Save client hda1 (Deprecated! Use the above!)'
+msg_clonezilla_restore_hda1='Restore client hda1 (Deprecated! Use the above!)'
+msg_clonezilla_selec_in_client='Choose save/restore in client (unicast only)'
+msg_choose_the_mode_to_restore_disk='Choose the mode to restore client disk'
+msg_choose_the_mode_to_restore_parts='Choose the mode to restore client parts'
+msg_choose_the_mode_to_restore_hda1='Choose the mode to restore client /dev/hda1'
+msg_abandon_hda1='Note! Save and restore client hda1 is no more! Please use save and restore partition instead.'
+msg_unicast_restore='unicast restore'
+msg_multicast_restore='multicast restore'
+msg_choose_the_image_to_restore='Choose the image file to restore'
+msg_time_to_wait='Set the time for clients to start cloning'
+msg_clients_to_wait='Set the no. of clients to clone'
+msg_clients_time_to_wait='Set the no. of clients & maximum time to start cloning'
+msg_how_many_clients_to_restore='How many clients to restore'
+msg_input_name_to_save_the_img='Input a name to save the image'
+msg_time_to_wait_sec='Minimum time to wait (Sec) (The counts start when first client connects)'
+msg_max_time_to_wait_sec="Maximum time to wait (Sec) (The counts start when first client connects), i.e. When  not  enough  clients  have  connected (but at least one), start anyways after [this assigned seconds] since first client connection have passed. (Better >= $SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='You have to input a name'
+msg_you_must_input_legal_filename="You have to input a legal image name (containing only alphabet, digit, _, - and .)"
+msg_you_must_input_partition='You have to input a partition'
+msg_please_do_it_again='Please do it again'
+msg_choose_the='Choose the'
+msg_to_save='to save (only mounted partition is listed)'
+msg_the_image='The image'
+msg_was_saved_before='exists! This image name is already used'
+msg_do_you_want_to_replace='Do you want to overwrite it'
+ms_choose_disks_to_save='Choose the disk(s) to save (only unmounted disk is listed)'
+ms_choose_parts_to_save='Choose the partition(s) to save (only unmounted partition is listed)'
+msg_choose_the_disks_to_restore='Choose the disk(s) to restore'
+msg_choose_the_parts_to_restore='Choose the partition(s) to restore'
+msg_no_umounted_disks_found='No unmounted disk(s) are found! To use Clonezilla to save a disk, the source disk must be unmounted!'
+msg_no_umounted_parts_found='No unmounted partition(s) are found! To use Clonezilla to save a partition, the source partition must be unmounted!'
+msg_you_can_not_hide_all_pxe_menus='You can NOT hide all the menus'
+msg_no_modification='Omit any modification'
+msg_install_via_network='install_via_network'
+msg_range_found_in_dhcpd_conf='Warning!!! "range" option is found in dhcpd.conf, this is not a good way in clonezilla... It is better to let your DRBL client acquire same IP address by setting MAC address in dhcpd.conf so that you will NOT overwrite OS of some unknown machines.'
+msg_you_are_using_multicast_clonezilla='You are using multicast clonezilla, please make sure:'
+msg_ethernet_port_is_up_confirm='1. This ethernet port in server is up and connected'
+msg_more_NIC_connect_each_other='2. If you have more than 1 (>=2) network switches for DRBL environment, make sure all switches are connected to each other, otherwise multicast packets will not send to every clients from the ethernet port mentioned above via all the switches, so the multicast clone might NOT start.'
+msg_switch_drbl_service='Start/stop/restart/add/del DRBL services (To all clients)'
+msg_start_drbl_all_services='Start DRBL-related services in DRBL server'
+msg_stop_drbl_all_services='Stop DRBL-related services in DRBL server'
+msg_restart_drbl_all_services='Restart DRBL-related services in DRBL server'
+msg_add_drbl_all_services='Add all DRBL-related services in DRBL server'
+msg_del_drbl_all_services='Del all DRBL-related services in DRBL server'
+msg_choose_action='The action is'
+msg_login_switch='Switch_client_graphical_(X-window)_login_mode'
+msg_normal_login='Normal login (user must enter name and password)'
+msg_auto_login='Auto login'
+msg_timed_login='Timed login'
+msg_turn_on_client_to_make_template='Now set the client machines to boot from PXE or Etherboot (refer to http://drbl.sourceforge.net for more details). Then boot the client to make the template image! Note: If the partition you want to save is NTFS filesystem, it is recommended to defrag that partition first.'
+msg_turn_on_client_to_clone='Now set the client machines to boot from PXE or Etherboot (refer to http://drbl.sourceforge.net for more details). Then boot those clients, so that the template image can be cloned to them!'
+msg_turn_on_client_to_select_clone_type='Now set the client machines to boot from PXE or Etherboot (refer to http://drbl.sourceforge.net for more details). Then boot those clients and you can choose to save or restore an image!'
+msg_client_job_are_logged_in='Client jobs are logged in'
+msg_client_sfdisk_log_are_in='The sfdisk log when running clonezilla is in client'
+msg_set_the_clients_root_passwd='Set the clients root password.'
+msg_new_passwd_prompt='New password: (It will be shown in star wildcard *)'
+msg_do_you_want_set_yum_repo='Do you want to select yum repository ?'
+msg_set_yum_conf_yes_prompt='If yes, we will list some for you to choose, this maybe good if you know which mirror site is faster in your site.'
+msg_set_yum_conf_no_prompt='If not, we will use the existing config files in this machine (so you have to make sure the yum repository setting works in this machine) and generate some config files of DRBL related packages.'
+msg_need_lynx_to_parse_config='We need lynx to parse config file to get url, try to install it...'
+msg_need_curl_etc_to_parse_config='We need curl, lftp and wget to parse config file to get url, try to install them if not installed...'
+msg_try_to_update_some_pkgs='Trying to upgrade some necessary packages if available...'
+msg_force_to_upgrade_some_pkgs='Force to upgrade some packages if necessary...'
+msg_install_net_install_images='Installing some Linux distribution network installation images...'
+msg_clean_dhcpd_lease='Force to reset DHCP IP address leases (For all clients)'
+msg_client_reautologin='Force_to_restart_client_autologin'_
+msg_clean_autologin_account='Delete_all_autologin_accounts_(For_all_clients)'
+msg_reset_autologin_account='Reset_all_autologin_accounts_environment_(For_all_clients)'
+msg_re_deploy='Update the files of server to clients (For all clients)'
+msg_dcs_others='Other modes or commands'
+msg_dcs_more_modes='More modes or commands'
+msg_2_kernel_availables='There are 2 kernels available for clients, which one do you prefer ?'
+msg_from_this_drbl_server='from this DRBL server'
+msg_from_apt_repository='from apt repository'
+msg_from_ayo_repository='from apt or yum repository'
+msg_install_kernel_for_clients='Install kernel for clients...'
+msg_which_kernel_do_you_perfer='Which kernel do you prefer for DRBL clients ? If you already updated your system, it is better to choose the kernel in updates, if not, better to choose that in release.'
+msg_you_choose='You choose'
+msg_chosen_kernel='Chosen kernel'
+msg_not_available_enter_again='Not available, please enter a number again!'
+msg_hosts_allow_deny_is_set='Warning! You already set the /etc/hosts.allow or /etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='You must MAKE SURE these clients:'
+msg_can_access_this_DRBL_server='can access this DRBL server!'
+msg_otherwise_client_fail_to_boot='Otherwise, your client will fail to boot, and error messages will like:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='If you like, you can reboot the DRBL server now to make sure everything is ready...(This is not necessary, just an option.).' 
+msg_do_not_create_part='Do NOT create partition table in the client harddisk!'
+msg_do_not_restore_mbr='Do NOT restore the MBR in the client!'
+msg_you_have_to_input_image_names_in_client='Select the image to restore in the client machine!'
+msg_title_input_save_image_name_in_server='Input the image and device name now ?'
+msg_ask_if_input_save_image_name_in_server='Do you want to input the image and device name now instead of inputing them later in the client (If you are not sure the device name (Ex. hda or sda), you can choose No, then select them in the template machine later)?'
+msg_input_image_name='The image name is:'
+msg_input_device_name='The device of the template machine to be saved is:'
+msg_ocs_param_exclude_multicast='You assign -u (select image in the client) for clonezilla restoring, so only unicast (no multicast) mode is available!'
+msg_run_drbl_ocs_again_cmd='Next time you can run this command directly:'
+msg_is_unknown_HD='is unknown HD device! Known and supported HD device is like hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='Creating the partition in the target...'
+msg_partition_table_for_target_dev='The partition table for the target device'
+msg_if_go_on_the_data_will_be_erased_then_confirm='If you go on, the original data exist in the target device will be destroyed!!! Be careful!!! Are you sure ?'
+msg_should_not_run_ocs_onthefly_in_server='You should not run this program in DRBL server!!! You should run it in DRBL client!!!'
+msg_ok_we_will_keep_old_partition_table='OK, we will keep the old partition table.'
+msg_fail_to_create_partition_table_in_target_dev='Fail to create the partition table in the target device' 
+msg_my_IP_in_drbl_env='My IP address in DRBL env'
+msg_are_u_sure_u_want_to_continue='Are you sure you want to continue ?'
+msg_really_dangerous_then_continue='It is really dangerous!!! Anyway, we will continue...'
+msg_src_target_r_same_dev='Source and target are same device!!!'
+msg_is_not_valid_grub_root='is NOT a valid grub root partition!' 
+msg_different_type_of_input_devs='Different type of input devices'
+msg_a_partition_table_already_exist='A partition table already exists in the target device'
+msg_do_u_want_to_duplicate_the_partition_layout_to='Do you want to duplicate the partition layout to'
+msg_do_you_want_to_clone_the_MBR_to='Do you want to clone the MBR to'
+msg_skip_clone_MBR='Skip cloning the MBR'
+msg_failed_to_clone_the_MBR='Failed to clone the MBR to'
+msg_now_run_this_cmd_in_target_machine='Now you can run this command in TARGET machine to start the clone like'
+msg_this_is_for_source_machine='This is for source machine'
+msg_this_is_for_target_machine='This is for target machine'
+msg_kernel_2_6_13_15_defaul_is_buggy='The running kernel 2.6.13-15-default in this machine is BUGGY!!! The NFS locking is not working! A lot of programs in DRBL client will NOT work!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='You have to upgrade the kernel in this machine, i.e. do it like:'
+msg_then_reboot_this_server='Then reboot this server to use the new kernel.'
+msg_make_audio_open='Make the audio devices open to all users in DRBL clients.'
+msg_make_audio_close='Do not make the audio devices open to all users in DRBL clients.'
+msg_make_plugdev_open='Make the plugdev devices open to all users in DRBL clients.'
+msg_make_plugdev_close='Do not make the plugdev devices open to all users in DRBL clients.'
+msg_restart_prompt_for_audio='Since you change the audio devices setting of clients, if you already logged in X-window in DRBL clients, then you have to: (1) reboot DRBL client, or (2) restart the service udev and logout and login X-window in DRBL client to make the audio setting take effect.'
+msg_restart_prompt_for_plugdev='Since you change the plugdev devices setting of clients, if you already logged in X-window in DRBL clients, then you have to logout and login X-window in DRBL client to make the plugdev setting take effect.'
+msg_restart_prompt_for_dev='Since you change the devices setting of clients, if you already logged in X-window in DRBL clients, then you have to logout and login X-window in DRBL client to make the devices settings take effect.'
+msg_run_update_plugdev_again='Note! If you add new or remove accounts in the DRBL server in the future, remember to run the following command again, so that the group plugdev will be updated'
+msg_run_update_dev_again='Note! If you add new or remove accounts in the DRBL server in the future, remember to run the following command again, so that some group (EX:plugdev) will be updated'
+msg_no_autologin_account='No autologin account'
+msg_are_you_sure_reset_autologin_home_dir='Are you sure you want to reset home directories of all autologin accounts '
+msg_warning_home_dir_will_be_deleted='Warning!!! The data in their home directories will be deleted'
+msg_these_accounts_are='These accounts are'
+msg_ok_let_do_it='OK, let do it!'
+msg_do_not_reset_autologin_home_dir='Do NOT reset home directories of autologin accounts'
+msg_created_autologin_ID_passwd_file="The created ID and password are listed in $AUTO_LOGIN_ID_PASSWD. It would be a good idea to put that file in other safe place, then delete $AUTO_LOGIN_ID_PASSWD."
+msg_drbl_clonezilla_switch='Switch DRBL and Clonezilla mechanism'
+msg_drbl_mode_switch='Switch DRBL mechanism'
+msg_drbl_mode_switch_long="3 modes for diskless linux services:\n[0] Full DRBL mode, every client has its own NFS based /etc and /var.\n[1] DRBL SSI (Single system image) mode, every client uses tmpfs based /etc and /var. In this mode, the loading and necessary disk space of server will be lighter. NOTE! (a) The client machine memory is recommended at least 256 MB. (b) The setting and config files of client will not be saved to the DRBL server! They are just used once and will vanish after the machine shutdowns! Besides, if you modify any file in the template client (located in $drblroot), you have to run $DRBL_SCRIPT_PATH/sbin/gen_ssi_files to create the template tarball in $drbl_common_root/drbl_ssi/.\n[2] I do NOT want to provide diskless Linux service to client.\nWhich mode do you prefer ?"
+msg_drbl_mode_0='Use Full DRBL mode'
+msg_drbl_mode_1='Use DRBL SSI mode'
+msg_drbl_mode_2='Do not provide diskless linux service'
+msg_clonezilla_mode_switch='Switch Clonezilla mechanism'
+msg_clonezilla_mode_switch_long="3 modes for clonezilla:\n[0] Full clonezilla mode, every client has its own NFS based /etc and /var.\n[1] Clonezilla box mode, every client uses tmpfs based /etc and /var. Note! In Clonezilla box mode, the setting and config files of client will not be saved to the DRBL server! They just use once and will vanish after the machine shutdowns!\n[2] I do NOT want clonezilla.\nWhich mode do you prefer ?"
+msg_clonezilla_mode_0='Use Full Clonezilla mode'
+msg_clonezilla_mode_1='Use Clonezilla box mode'
+msg_clonezilla_mode_2='Do not provide Clonezilla service'
+msg_r_u_sure_want_to_del_autologin_accounts='Are you sure you want to delete autologin accounts ?'
+msg_also_clean_autologin_accounts='Do you also want to clean the home directories of autologin accounts ?'
+msg_do_not_del_accounts='Do NOT delete accounts'
+msg_regenerate_nfs_nis_nat_config='Re-generate the config files of NFS, NIS, and NAT based on DHCP service config.'
+msg_not_in_SSI_mode="This command only works if DRBL SSI mode is set, since the server is not in DRBL SSI mode, we can not continue. You can use $DRBL_SCRIPT_PATH/dcs to switch to DRBL SSI mode."
+msg_wol_0='Now clients should be able to boot, if not, check:'
+msg_wol_1='1. If the BIOS of client is corrected set for Wake on LAN ? Check your BIOS manual for more details.'
+msg_wol_2='2. If the client was software shutdowned ? If not, Wake on LAN will not work.'
+msg_wol_3='3. If the OS of client can NOT keep network card in standby mode ?'
+msg_wol_4="4. If the MAC address of clients are correctly listed in the dhcpd config $DHCPDCONF_DIR/dhcpd.conf ?"
+msg_no_kernel_rpm_is_available='A suitable kernel rpm package is NOT found in these URL:'
+msg_internet_connection='1. Your Internet connection is operating properly.'
+msg_use_baseurl_in_yum_centos='2. Check the OS system files repository settings in /etc/yum.repos.d/ (e.g. /etc/yum.repos.d/CentOS-Base.repo). Try to assign a proper yum repository using baseurl instead of mirrorlist.'
+msg_you_must_input_device_name_to_save_image='You must input a device name to save the image'
+msg_start_detect_MAC_addresse='Start detecting MAC address....'
+msg_enter_1_or_press_enter_to_view='Enter '1' or press 'Enter' to view the collecting status.'
+msg_enter_2_or_press_q_to_quit='Enter '2' or 'q' to finish collecting and quit.'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='The services dhcpd and tftpd-hpa/xinetd are stopped, remember to restart them when you need them!'
+msg_the_collected_MAC_addr_from='The collected MAC addresses from'
+msg_are_saved_in_files_separately='are saved in file(s) separately'
+msg_http_isu_edu_tw_not_compatible='Since http://ftp.isu.edu.tw uses page by page output, it is NOT compatible with DRBL scripts.'
+msg_prompt_chang_yum_config='This yum repository does NOT work with DRBL setup, you have to modify the yum config file in /etc/yum.repos.d/ to avoid using this repository. If you use mirrorlist, change to baseurl and assign other repository instead of this!'
+msg_What_the_win_hostname_prefix='What is the hostname prefix for the clone M$ windows'
+msg_change_hostname_of_MS_WIN_on_the_fly='You use using -hn0 or -hn1'
+msg_write_MS_WIN_is_necessary='You use using -hn0 or -hn1 to change the hostname of M$ Win image directly under GNU/Linux. You have to make sure your GNU/Linux can write or modify files in the image M$ Win. For FAT filesystem, it will be fine. If it is NTFS, you have to install some packages (such as ntfs-3g or ntfsmount from http://www.linux-ntfs.org) in this server and run drblpush again so that in client environment, Clonezilla can modify files in NTFS filesystem.WARNING! ***DO NOT USE THIS OPTION WITH ENCRYPTED FILE SYSTEM IN M$ WIN!!!***'
+msg_necessary_pkgs_from_dists='These packages from your GNU/Linux distribution are necessary (Check your distribution package repository for more details):'
+msg_necessary_pkgs_from_drbl='These packages from DRBL project are necessary [Check http://drbl.sf.net (English) or http://drbl.nchc.org.tw (Chinese) for more details]. rpm or deb packages can be found in http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core:'
+msg_recommended_pkgs_from_dists='These packages are recommended to install if they exist in the distribution repository:'
+msg_install_glibc_etc_arch_by_yourself='If your client CPU arch (say AMD K7) is different from that in the server (say Intel P4), you have to download them and install the packages in this server by the following command, otherwise the client machine will fail to boot:'
+msg_prepare_kernel_for_clients='Prepare the kernel for client, searching available kernel in the repository...'
+msg_some_necessary_pkgs_not_installed='Warning! Some necessary packages are not installed! If you continue, maybe something will go wrong! You had better to exit now and check you /etc/apt/sources.list and internet link!'
+msg_reset_all_existing_urpmi_setting='Warning! We have to reset all the existing urpmi setting!'
+msg_some_required_pkgs_not_installed='These required packages are not installed'
+msg_use_drblsrv_instead="If your Internet access is ok, use $DRBL_SCRIPT_PATH/sbin/drblsrv instead of this script. It will automatically download and install required packages for you, or you can use the installing tools (like apt/yum/urpmi/YaST) to install these required programs."
+msg_continue_may_not_work='If you continue, the DRBL environment may not work!'
+msg_switch_pxe_bg_mode='Switch the mode of PXE boot menu'
+msg_pxemenu_text='Client uses text PXE boot menu'
+msg_pxemenu_graphic='Client uses graphical PXE boot menu'
+msg_only_one_kernel_meets_requirement='Only one kernel meets your requirement'
+msg_drbl_server_is_NOT_NAT_server='This DRBL server does NOT provide NAT service, so your DRBL client will NOT be able to access Internat.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user" is a reserved image name, please use another name!'
+msg_all_data_in_dev_will_be_overwritten='THE EXISTING DATA IN THIS HARDDISK/PARTITION(S) WILL BE OVERWRITTEN! ALL EXISTING DATA WILL BE LOST'
+msg_authentication_pxe_linux_info="If you want to use authentication mechanism for PXE Linux boot in client, use $DRBL_SCRIPT_PATH/drbl-pxelinux-passwd in the server. For more info, run \"$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd -h\"."
+msg_this_might_take_several_minutes='This might take several minutes...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="You have to use \"$DRBL_SCRIPT_PATH/dcs\" -> clonezilla-start to start clonezilla serivce, so that there will be a clonezilla menu when client boots"
+msg_if_always_provide_clonezilla_srv="Do you want to ALWAYS provide clonezilla service for client ?\nNOTE! If you choose anyone -y option, the client won't boot local OS after it finishes clone OS into local harddrive! If you are not sure, do NOT choose anyone -y option!"
+msg_gen_template_files="Regenerate SSI/Clonezilla box template file"
+msg_ocs_iso_too_big_for_CD="The target ISO file is too large to fit in a CD disk."
+msg_ocs_iso_too_big_for_DVD="The target ISO file is too large to fit in a DVD disk."
+msg_unable_to_create_clonezilla_img_iso="Unable to create this clonezilla image live CD"
+msg_mkisofs_unable_process_that="mkisofs is not able to process that!"
+msg_burn_clonezilla_img_iso="You can burn this iso file into CD/DVD, then use it to boot other machine to use clonezilla"
+msg_burn_drbl_live_img_iso="You can burn this iso file into CD/DVD, then use it to boot other machine to use DRBL"
+msg_burn_drbl_live_img_zip="You can unzip this zip file into USB flash drive, then make it bootable by 'makeboot.exe' (in M$ windows) or 'syslinux -s DEVNAME' (in GNU/Linux, DEVNAME is like /dev/sdb1), then use it to boot other machine to use DRBL"
+msg_is_mounted_u_must_unmount_it="This device is mounted! You have to unmount it first"
+msg_create_live_device_warning='This program will write Debian Live and DRBL/Clonezilla programs into this device. The MBR of this device will be overwritten (partition table will be kept)! Be careful when you use it! The device is:'
+msg_unable_to_mount_this_dev='Unable to mount this device! Did you format that partition already ? This device is'
+msg_format_as_FAT_16_32='If you need to format, remember to make it as FAT16 or FAT32, and the partition ID is, for example, "W95 FAT16 (LBA)" (it is "e" shown in fdisk) or "W95 FAT32 (LBA)" (it is "c" shown in fdisk). You can do it in GNU/Linux by'
+msg_this_is_disk_usage_status='This is the disk usage status'
+msg_boot_clonezilla_live_dev='Now you can use this live device to boot other machine, and use clonezilla'
+msg_clone_finished_choose_to='Now you can choose to'
+msg_enter_cml='Enter command line prompt'
+msg_clonezilla_is_free_and_no_warranty='**Clonezilla is free (GPL) software, and comes with ABSOLUTE NO WARRANTY**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, or -b are reserved name, you can not use it as a clonezilla image name.'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img or .dd-img are reserved name, you can not use it as a clonezilla image name'
+msg_to_use_clonezilla_to_save_image='To use clonezilla to save an image'
+msg_run_sudo_su_to_become_root='Run "sudo su -" to become root'
+msg_prepare_writable_dev_and_mount_it_as='You have to prepare another writable device or space, and mount it as'
+msg_ex_mount_ocsroot_in_ocs_live="Ex. If you want to use clonezilla to save /dev/hda, and put the image in /dev/hdb1. Then you have to mount /dev/hdb1 as $ocsroot by:"
+msg_if_src_part_is_ntfs='If that partition is NTFS, to let it be writable, you have to mount it like:'
+msg_sshfs_smbfs_are_supported='Sshfs and smbfs are supported, too. For example, use sshfs, you can mount your remote ssh server or samba server'
+msg_use_zh_TW_bterm='If you wan to use a terminal with Traditional Chinese support, run'
+msg_start_ocs_sr_interactive='Then run this to use clonezilla'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done="When everyting is done, remember to use 'poweroff' or 'reboot' to do a normal poweroff/reboot procedure. Otherwise if the boot media you are using is writable device, such as USB flash drive, it may NOT boot next time!"
+msg_if_you_want_to_use_ocs_again='If you want to use clonezilla again'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='If you need storage space instead of that in this writable device, sshfs and smbfs are supported in clonezilla live. For example, use sshfs, you can mount your remote ssh server'
+msg_remove_existing_link_for_ocsroot="Remove the existing link file $ocsroot, then make a dir $ocsroot for mount point"
+msg_to_see_this_ocs_live_help_msg='NOTE! The above hints might disappear after you press Enter key and terminal ends. To see this message again, run'
+msg_image_source_for_ocs_live="If your clonezilla image is not in this boot media, or you need storage space instead of that in this writable device, you can mount the writable partition as $ocsroot. Remember, sshfs and smbfs are supported in clonezilla live. Here is how to do that"
+msg_modify_grub_config_if_necessary="You might need to modify these two files: /boot/grub/menu.lst and /boot/grub/grub.conf which exist in the device $output_dev. For example, the device name in the following 2 lines to fit your environment when using it to boot clonezilla live"
+msg_this_script_will_create_SL_diskless='This script will create the diskless server in DRBL environment for this small live GNU/Linux'
+msg_RAM_size_for_SL_drbl_client='It is recommended that your client need at least the size of RAM to run it'
+msg_image_saved_from_dd='The image is saved from dd. Use dd to restore the image instead of partimage or ntfsclone'
+msg_cons_for_dd_clone='dd will save and restore all the blocks in the harddrive, no matter the block is used or not.'
+msg_will_be_inefficent_and_slow='THIS WILL BE VERY INEFFICIENT AND MIGHT TAKE VERY LONG TIME'
+msg_fs_not_supported_by_partimage_ntfsclone='This file system is not supported by partimage or ntfsclone'
+msg_use_this_method_to_save_img='Use this method to save the image instead of partimage or ntfsclone'
+msg_status_report_is_very_primitive='The status report in this mode is very primitive'
+msg_home_partimag_not_home_partimage='/home/partimage is found! However, the clonezilla image directory is /home/partimag (without last letter "e"). You have to rename /home/partimage as /home/partimag'
+
+#-----------------------------------------
+# some words
+msg_text_Enter='Enter'
+msg_text_for='for'
+msg_Got_it='Got it'
+msg_Warning='Warning'
+msg_uppercase_Warning='WARNING'
+msg_NOT_found='NOT found'
+msg_Done='Done'
+msg_please='please'
+msg_browse='browse'
+msg_or='or'
+msg_for_more_details='for more details'
+msg_Failed_to_get='Failed to get'
+msg_Failed_to_install='Failed to install'
+msg_done='done'
+msg_note='NOTE'
+msg_and='and'
+msg_clonezilla='Clonezilla'
+msg_error='Error'
+msg_restore='restore'
+msg_txt_check='Check'
+msg_ex='Ex'
+msg_exit='Exit'
+msg_poweroff="Poweroff"
+msg_reboot="Reboot"
+msg_then='then'
Index: drbl_ui/backup/orig_langs/test.patch
===================================================================
--- drbl_ui/backup/orig_langs/test.patch	(revision 20)
+++ drbl_ui/backup/orig_langs/test.patch	(revision 20)
@@ -0,0 +1,392 @@
+--- tw.UTF-8	2007-08-03 04:23:41.000000000 +0800
++++ tw.UTF-8_original	2007-10-26 15:25:47.000000000 +0800
+@@ -1,17 +1,10 @@
+-#!/bin/bash
+-# Written by Steven Shiau <steven@nchc.org.tw> to use in DRBL for RedHat
+-# License: GPL
+-#
+-# Revised by T. C. Lin <tclin@mail.dfes.tpc.edu.tw> on 4/01/2004
+-# Many thanks to Mr. Lin.
+-
+ msg_delimiter_star_line='*****************************************************'
+ msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+ msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+ msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+ msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+ msg_OS_version='你的作業系統版本'
+-msg_is_not_supported='DRBL 不支援這個版本，程式結束!'
++msg_is_not_supported='DRBL 不支援這個版本!'
+ msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+ msg_set_proxy='你要設定代理伺服器嗎?'
+ msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+@@ -23,7 +16,7 @@
+ msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+ msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+ msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+-msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva與OpenSuSE)到本身的硬碟中? (假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y)'
++msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+ msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+ msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+ msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+@@ -57,7 +50,7 @@
+ msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+ msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+ msg_press_enter_to_continue='按 Enter 鍵繼續...'
+-msg_press_enter_to_exit='按 Enter 鍵結束...'
++msg_press_enter_to_exit="按 Enter 鍵離開."
+ msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+ msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+ msg_program_stop='程式停止!'
+@@ -107,6 +100,7 @@
+ msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+ msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+ msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
++msg_searching_pkg_in_ayo='在 ayo 伺服器中尋找可用的程式'
+ msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+ msg_removing_the_old='移除舊的'
+ msg_creating_dev='產生用戶端電腦的設備檔案...'
+@@ -116,38 +110,28 @@
+ msg_install_extra_driver='安裝額外的驅動程式...'
+ msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+ msg_make_client_serial_console='建立用戶端序列終端機設定...'
+-#
+ msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+ msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+ msg_not_remove='請在下個步驟回答"N"!'
+-#
+ msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+ msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+ msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+-# RH/FC os
+ msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+ msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+ msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+ msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+ msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+ msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+-
+-# RH/FC drbl
+ msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+ msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+ msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+ msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+ msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+ msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+-
+-# MDK OS
+ msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+ msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+-
+-# MDK drbl
+ msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+ msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+-
+ msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+ msg_do_u_want_to_remove='你要移除嗎？'
+ msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+@@ -195,7 +179,7 @@
+ msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+ msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+ msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+-msg_win_fail_with_Missing_OS='如果你還原的是M$ Windows系統，還原後使用M$ Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
++msg_win_fail_with_Missing_OS='如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+ 
+ # drbl-script
+ msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+@@ -217,7 +201,10 @@
+ msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+ msg_title_set_all_clients='設定所有的用戶端機器?'
+ msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
++msg_select_all_clients_or_select_part_them='你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+ msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
++msg_select_all_clients='選擇所有的用戶端'
++msg_select_clients='根據IP或是MAC位址選擇部份用戶端'
+ msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+ msg_choose_the_action='選擇動作為'
+ msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+@@ -237,9 +224,14 @@
+ msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+ msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+ msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
++msg_set_by_MAC_address_list='經由MAC位址來指定DRBL用戶端電腦的模式'
++msg_set_by_MAC_address_grp='經由MAC位址群組來指定DRBL用戶端電腦的模式'
++msg_set_by_IP_address_list='經由IP位址來指定DRBL用戶端電腦的模式'
++msg_set_by_IP_address_grp='經由IP位址群組來指定DRBL用戶端電腦的模式'
+ msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+ msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+-msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
++msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
++msg_hint_for_not_fdisk='*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+ msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+ msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+ msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+@@ -266,25 +258,26 @@
+ msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+ msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+ msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+-msg_ocs_param_o="用戶端複製後執行目錄$POST_RUN_DIR下的執行檔"
+-msg_ocs_param_hn0='復原後修改用戶端硬碟中的M$ win主機名稱(基於IP位址)'
+-msg_ocs_param_hn1='復原後修改用戶端硬碟中的M$ win主機名稱(基於MAC位址)'
++# Since drbl.conf is loaded before language file is loaded, we explicitly show it as $POST_RUN_DIR
++msg_ocs_param_o0='用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
++msg_ocs_param_o1='用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
++msg_ocs_param_hn0='復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
++msg_ocs_param_hn1='復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+ msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+ msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+ msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+ msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+-msg_ocs_param_r='還原結束後調整分割區大小(印象檔放到大於原來分割區用)'
++msg_ocs_param_r='在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+ msg_ocs_param_x='在群播還原時使用全雙工網路'
+ msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+ msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+ msg_ocs_param_skip='不選用此選項'
++msg_ocs_param_notfs_ok='假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+ msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+-msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n
+-可用的參數有: \n'
+-msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n
+-可用的參數有: \n'
++msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
++msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n 可用的參數有: \n'
+ msg_no_network_installation_img='找不到網路安裝的印象檔!'
+-msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
++msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+ msg_start_clonezilla_mode='啟動再生龍模式'
+ msg_choose_mode='選定模式'
+ msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+@@ -307,7 +300,7 @@
+ msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+ msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+ msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+-msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議>=$SLEEP_TIME_AFTER_PART_CLONED)"
++msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議大於或等於$SLEEP_TIME_AFTER_PART_CLONED)"
+ msg_you_must_input_filename='你必須輸入一個名稱'
+ msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+ msg_you_must_input_partition='你必須輸入一個分割區'
+@@ -317,19 +310,21 @@
+ msg_the_image='這個印象檔名稱'
+ msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+ msg_do_you_want_to_replace='你是否要覆蓋它'
+-ms_choose_disks_to_save='選擇硬碟來儲存(只顯示未被掛載的分割區)'
+-ms_choose_parts_to_save='選擇分割區來儲存(只顯示未被掛載的硬碟)'
+-msg_choose_the_disks_to_restore='選擇硬碟來還原'
+-msg_choose_the_parts_to_restore='選擇分割區來還原'
+-msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份硬碟,該硬碟必須不能被掛載中!'
+-msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份分割區,該分割區必須不能被掛載中!'
++msg_linux_disk_MS_mapping='硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
++msg_linux_parts_MS_mapping='分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
++msg_choose_disks_to_save='選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
++msg_choose_parts_to_save='選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
++msg_choose_the_disks_to_restore='選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
++msg_choose_the_parts_to_restore='選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
++msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
++msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+ msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+ msg_no_modification='略去任何修改'
+ msg_install_via_network='經由網路安裝'
+ msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+ msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+ msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+-msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(>=2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
++msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(大於或等於2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+ msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+ msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+ msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+@@ -387,14 +382,14 @@
+ msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+ msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+ msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+-msg_creating_partition_in_target='在目的碟產生分割區...'
+-msg_partition_table_for_target_dev='目的碟分割區的表'
++msg_creating_partition_in_target='將在目的碟產生分割區...'
++msg_partition_table_for_target_dev='要產生的目的碟分割區的表'
+ msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+ msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+ msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+ msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+ msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+-msg_are_u_sure_u_want_to_continue='你確認要繼續執行 ?'
++msg_are_u_sure_u_want_to_continue='你確認要繼續執行'
+ msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+ msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+ msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+@@ -402,9 +397,14 @@
+ msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+ msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+ msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
++msg_do_you_want_to_clone_the_boot_loader_to='你是否要複製開機載入程式(boot loader)到'
+ msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
++msg_skip_clone_boot_loader='略去複製開機載入程式(boot loader)'
+ msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+-msg_now_run_this_cmd_in_target_machine='現在你可以在目的機器上執行類似這樣的指令來開始複製'
++msg_failed_to_clone_the_boot_loader='未能複製開機載入程式(boot loader)'
++msg_now_run_this_cmd_in_target_machine='現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
++msg_if_clone_the_partition_to_hda1_in_target_machine='例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
++msg_if_clone_the_disk_to_hda_in_target_machine='例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+ msg_this_is_for_source_machine='這是在來源機器上執行'
+ msg_this_is_for_target_machine='這是在目的機器上執行'
+ msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+@@ -441,7 +441,7 @@
+ msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+ msg_do_not_del_accounts='不要移除這些帳號'
+ msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+-msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/dcs來切換。"
++msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+ msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+ msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+ msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+@@ -452,16 +452,16 @@
+ msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+ msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+ msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+-msg_enter_1_or_press_enter_to_view='輸入'1'或是按'Enter'鍵來看目前收集的狀態。'
+-msg_enter_2_or_press_q_to_quit='輸入'2'或是'q'來結束收集。'
++msg_enter_1_or_press_enter_to_view='輸入<1>或是按<Enter>鍵來看目前收集的狀態。'
++msg_enter_2_or_press_q_to_quit='輸入<2>或是<q>來結束收集。'
+ msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+ msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+ msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+ msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+ msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+-msg_What_the_win_hostname_prefix='所還原的M$ windows主機名稱的前置名稱是'
++msg_What_the_win_hostname_prefix='所還原的MS windows主機名稱的前置名稱是'
+ msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+-msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 M$ Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 M$ Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在M$ WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
++msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+ msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+ msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+ msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+@@ -479,9 +479,9 @@
+ msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+ msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+ msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+-msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd -h\"來得知。"
++msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+ msg_this_might_take_several_minutes='這可能會需要一點時間...'
+-msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
++msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+ msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+ msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+ msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+@@ -490,7 +490,7 @@
+ msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+ msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+ msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+-msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用'makeboot.exe' (在M$ windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，在來就可以用它來開機使用DRBL"
++msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+ msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+ msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+ msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+@@ -503,6 +503,7 @@
+ msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+ msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+ msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
++msg_to_use_clonezilla_to_save_image_again='要再使用再生龍來存印象檔'
+ msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+ msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+ msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+@@ -510,7 +511,7 @@
+ msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+ msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+ msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+-msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你存完印象檔，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的，例如USB隨身碟，有可能該裝置下次會無法開機!'
++msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+ msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+ msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+ msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+@@ -526,6 +527,86 @@
+ msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+ msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+ msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
++msg_target_dev_has_this_partition_table='你要寫入的硬碟有這樣的資訊表'
++msg_let_me_ask_you_again='容我再問你一次'
++msg_unable_to_mnt_ocsroot="無法掛載到$ocsroot"
++msg_mount_ocsroot_img_hint_short_des='掛載再生龍印象檔的目錄'
++msg_mount_ocsroo_img_hint_long_des="掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
++msg_mount_local_dev='掛載本機的分割區'
++msg_mount_sshfs='掛載SSH伺服器的目錄'
++msg_mount_smbfs='掛載網路芳鄰伺服器的目錄'
++msg_mount_nfs='掛載NFS伺服器的目錄'
++msg_mount_ftpfs='掛載FTP伺服器的目錄'
++msg_do_it_manually='自行手動調整'
++msg_skip_this_use_existing_ocsroot="使用現有的$ocsroot"
++msg_device_to_mount_as_ocsroot_do_not_mount_target_dev="掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
++msg_ip_address_or_FQDN_of_server='伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
++msg_smb_domain_in_server='網路芳鄰伺服器上的網域名稱'
++msg_if_no_smb_domain_skip_this='如果伺服器上沒有此設定，你可以略去此選項'
++msg_account_in_server='使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
++msg_sshfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
++msg_ftpfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
++msg_now_you_have_to_enter_passwd='現在你必須輸入對於這個帳號的密碼'
++msg_confirm_ssh_server_might_be_necessary='如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
++msg_ocs_img_dir_path="要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
++msg_enter_another_shell_hint='進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
++msg_existing_setting_is='現有的設定是'
++msg_start_clonezilla='使用再生龍'
++msg_start_clonezilla_or_enter_shell='使用再生龍或是登入(命令列) ?'
++msg_writable_dev_ex_usb_stick='可寫裝置如硬碟/隨身碟'
++msg_writable_fs_ex_nfs_smbfs='可寫網路磁碟如NFS/SMBFS'
++msg_readonly_dev_ex_CD='唯讀裝置如CD'
++msg_writable_dev_ramdisk='記憶體，關機後資料就消失。***不建議***'
++msg_warning_mount_ntfs_writable='警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
++msg_df_report='目前系統的掛載狀態'
++msg_hint_assign_IP_group="提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
++msg_hint_assign_MAC_group="提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
++msg_device_image_device_clone='兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
++msg_device_image_clone='硬碟/分割區[存到/來至]印象檔'
++msg_device_device_clone='硬碟/分割區複製到硬碟/分割區'
++msg_disk_to_local_disk='複製本機硬碟到本機硬碟'
++msg_disk_to_remote_disk='複製本機硬碟到它機硬碟'
++msg_part_to_local_part='複製本機分割區到本機分割區'
++msg_part_to_remote_part='複製本機分割區到它機分割區'
++msg_local_source_disk='選擇本機硬碟當來源母碟'
++msg_local_target_disk='選擇本機硬碟當目的碟'
++msg_local_source_part='選擇本機分割區當來源分割區'
++msg_local_target_part='選擇本機分割區當目的分割區'
++msg_ocs_onthefly_advanced_extra_param='直接複製再生龍模式額外的進階參數'
++msg_ocs_onthefly_param_g='在目地碟的開機磁區重新安裝grub'
++msg_ocs_onthefly_param_e='在目的碟的分割區調整檔案系統大小符合分割區大小'
++msg_ocs_onthefly_param_nogui='使用partimage的時候不顯示圖形介面'
++msg_ocs_onthefly_param_n='不要在目地碟的開機磁區產生分割區的分配表'
++msg_ocs_onthefly_param_m='不要複製開機管理程式(boot loader)'
++msg_ocs_onthefly_param_o='強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
++msg_ocs_onthefly_param_b='使用批次模式(危險!務必先確認設定正確)'
++msg_ocs_onthefly_param_v='印出詳細的資訊'
++msg_only_i686_kernel_available_in_centos_5='目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
++msg_do_you_want_to_clean_all_stale_mac_cfg="在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
++msg_something_went_wrong_when_start_drbl_related_srv='啟動DRBL相關服務的時候出現一些狀況!'
++msg_you_can_try_to_run_the_following_again='你可以嘗試再度執行以下指令看看'
++msg_try_drblsrv_offline="如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
++msg_very_unstable='非常不穩定'
++msg_not_stable='不穩定'
++msg_not_secure='不安全'
++msg_no_nic_is_found="找不到支援的網路卡."
++msg_choose_nic="請選擇一個網路卡\n(如果你有兩張或更多)"
++msg_send_dhcp_request_from="從網路卡送出 DHCP 要求:"
++msg_enter_IP_add_for_this_nic="請指定這張網卡的 IP 位址: "
++msg_enter_netmask_for_this_nic="請指定這張網卡的網路遮罩(Netmask): "
++msg_enter_default_gateway="請指定通訊閘(Gateway) "
++msg_enter_dns_server="請指定網域名稱伺服器(Nameserver) "
++msg_put_dnsserver_to_resolv_conf="將 Nameserver 設定至 /etc/resolv.conf "
++msg_append_dnsserver_to_resolv_conf="增設 Nameserver 至 /etc/resolv.conf :"
++msg_Network_config="網路設定"
++msg_choose_mode_to_setup_net="選擇你要的模式來設定這台電腦的網路"
++msg_use_dhcp_broadcast="使用DHCP來設定"
++msg_use_static_ip="設定固定IP位址"
++msg_use_pppoe_conf="使用PPPoE來設定"
++msg_setup_network_first='先設定網路'
++msg_hint_multiple_choice_select_by_space='///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
++msg_network_is_not_configured='網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
++msg_network_is_already_configured='發信網路已經設定了! 這台機器可用的IP位址是'
+ 
+ #-----------------------------------------
+ # some words
+@@ -554,3 +635,6 @@
+ msg_poweroff='關機'
+ msg_reboot='重新開機'
+ msg_then='然後'
++msg_unknown='未知'
++msg_experimental='實驗性質'
++msg_failed="失敗"
Index: drbl_ui/backup/orig_langs/tw.UTF-8
===================================================================
--- drbl_ui/backup/orig_langs/tw.UTF-8	(revision 20)
+++ drbl_ui/backup/orig_langs/tw.UTF-8	(revision 20)
@@ -0,0 +1,556 @@
+#!/bin/bash
+# Written by Steven Shiau <steven@nchc.org.tw> to use in DRBL for RedHat
+# License: GPL
+#
+# Revised by T. C. Lin <tclin@mail.dfes.tpc.edu.tw> on 4/01/2004
+# Many thanks to Mr. Lin.
+
+msg_delimiter_star_line='*****************************************************'
+msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+msg_OS_version='你的作業系統版本'
+msg_is_not_supported='DRBL 不支援這個版本，程式結束!'
+msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+msg_set_proxy='你要設定代理伺服器嗎?'
+msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+msg_http_proxy_port='請輸入 HTTP 代理伺服器的連接埠: '
+msg_ftp_proxy_server='請輸入 FTP 代理伺服器的位址: '
+msg_ftp_proxy_port='請輸入 FTP 代理伺服器的連接埠: '
+msg_http_proxy_you_set='你設定的 HTTP 代理伺服器是: '
+msg_ftp_proxy_you_set='你設定的 FTP 代理伺服器是: '
+msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva與OpenSuSE)到本身的硬碟中? (假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y)'
+msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+msg_serial_console_only='用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+msg_redirect_to_which_port='請輸入要使用的序列埠(Serial Port)?'
+msg_serial_console_speed='您的序列終端機速度是多少?'
+msg_serial_console_parameter='請輸入序列終端機的參數'
+msg_smp_clients='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+msg_smp_clients_MDK='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='安裝 APT ...'
+msg_no_wget_get_it='沒有 wget 程式? 嘗試安裝 wget 程式...'
+msg_no_apt_get_it='沒有 apt 程式? 嘗試安裝 apt 程式...'
+msg_wget_installed_failure='未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+msg_wget_installed_successful='wget程式安裝成功!'
+msg_apt_already_installed='apt 已經安裝了. 神奇!!! 你真是優秀!'
+msg_backup_apt_sources='備份原來的 apt 來源檔(sources.list) ...'
+msg_setup_apt_sources_MDK='為 MDK 設定 apt 的來源檔(sources.list)'
+msg_enjoy_apt='現在開始享用 APT!'
+msg_clean_apt_cache='清除apt的快取檔案...'
+msg_check_apt_integrity='套件完整性檢查...'
+msg_upgrade_system_question='你是否要升級你的作業系統?'
+msg_upgrade_whole_system='升級作業系統中...'
+msg_check_installed_kernel='檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+msg_is_already_installed='已經被安裝在您的系統中...'
+msg_need_to_install_kernel='我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+msg_create_nbi_files='產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+msg_latest_kernel_for_clients='用戶端電腦使用的最新核心是'
+msg_no_drbl_script='你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+msg_create_files_for_PXELINUX='建立PXE網路開機的設定檔...'
+msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+msg_press_enter_to_continue='按 Enter 鍵繼續...'
+msg_press_enter_to_exit='按 Enter 鍵結束...'
+msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+msg_program_stop='程式停止!'
+msg_remove_SmallLinuxs_question='如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+msg_remove_drbl_setup_question='你是否要移除DRBL這個程式?'
+msg_remove_apt_question='你是否要移除 apt ?'
+msg_remove_yum_repo_question='你是否要清除yum的來源設定檔?'
+msg_remove_urpmi_media_question='你是否要清除 urpmi的來源設定檔?'
+msg_cleaning_apt_cache='正在清除 apt 的快取檔案...'
+msg_cleaning_tftpboot_and_misc='移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+msg_uninstalling_DRBL_RH='移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_MDK='移除 Mandrake Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_DBN='移除 Debian Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_SUSE='移除 SuSE Linux 上的 DRBL 套件中...'
+msg_analyzing_rpm_info='分析已安裝套件資訊中... 這可能需要幾分鐘...'
+msg_failed_to_install_pkgs='安裝程式失敗，無法繼續執行!'
+msg_check_network_and_url='請檢查您的電腦和這個網址(URL)間的連線狀況：'
+msg_not_determine_OS='無法判斷 Linux 作業系統的種類與版本!!!'
+msg_enter_OS_ver='請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='正在清除 apt 的快取檔案...'
+msg_install_DRBL_necesary_files='安裝 DRBL 所需之相關程式...'
+msg_select_url_path='你選擇的伺服器網址(URL)與路徑'
+msg_drbl_driver='您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+msg_smp_optimization_kernel='您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+msg_apt_optimization_question='您用戶端的電腦要使用哪個等級CPU的核心?'
+msg_optimization_level_0='0 -> 使用i386 CPU等級架構'
+msg_optimization_level_1='1 -> 使用i586 CPU等級架構'
+msg_optimization_level_2='2 -> 使用與此DRBL伺服器同等級CPU的核心'
+msg_N_note='注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+msg_different_level_machine_prompt='如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+msg_diff_arch_explain='如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+msg_not_sure_better_1='如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+msg_same_optimization='您選用與伺服器同等級的 CPU 最佳化.'
+msg_i586_optimization='你選用 i586 架構的 CPU 最佳化.'
+msg_no_optimization='你未選用 CPU 最佳化，預設使用 i386 架構.'
+msg_glibc_openssl_upgrade_question='如果 glibc 與 openssl 有較新版本，是否要升級?'
+msg_glibc_openssl_keep='0 -> 不升級 glibc 與 openssl.'
+msg_keep_glibc_upgrade_openssl='1 -> 只升級 openssl,'
+msg_upgrade_glibc_keep_openssl='2 -> 只升級 glibc,'
+msg_upgrade_glibc_openssl='3 -> 升級 glibc 與 openssl (預設),'
+msg_warning_glibc_upgrade='警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+msg_upgrade_glibc_make_you_cry='為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+msg_install_dhcp_tftp_etc='正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='啟用與伺服器同等級 CPU 最佳化.'
+msg_optimization_is_off='未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+msg_install_i386_of='安裝 i386 架構的'
+msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
+msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='移除舊的'
+msg_creating_dev='產生用戶端電腦的設備檔案...'
+msg_get_dev='擷取設備檔案...'
+msg_clean_tmp_dev='清除設備檔案的暫存目錄...'
+msg_remove_old_nbi='移除 /tftpboot 中舊的 nbi 檔案...'
+msg_install_extra_driver='安裝額外的驅動程式...'
+msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+msg_make_client_serial_console='建立用戶端序列終端機設定...'
+#
+msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+msg_not_remove='請在下個步驟回答"N"!'
+#
+msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+# RH/FC os
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+
+# RH/FC drbl
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+
+# MDK OS
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+
+# MDK drbl
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+
+msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+msg_do_u_want_to_remove='你要移除嗎？'
+msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+msg_rm_apt='正在移除 apt 與 libapt-pkg0...'
+msg_search_kernel_in_ayo='在 ayo 資料庫中尋找最新的'
+msg_latest_kernel_in_ayo='在 ayo 資料庫中,最新的核心是'
+msg_install_kernel_might_take_several_minutes='安裝這個核心可能需要一些時間，請耐心等候... '
+msg_latest_kernel_is_already_installed='給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+msg_error_no_drbl_kernel_in_apt='在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+msg_change_opt_from_i386_to_i586='由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+msg_change_opt_from_i586_to_i386='由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+msg_are_you_sure_run_impatient='這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+msg_run_step_by_step='很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+msg_run_drbl4imp='好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+msg_total_avail_space='系統可以提供的空間(/tftpboot與/)有'
+msg_necessary_space_setup_drbl='估計安裝DRBL需要的空間是'
+msg_total_client_no='DRBL用戶端的總數目是'
+msg_system_maybe_not_enough_space='你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+msg_logout_X_for_thin_client_gdm='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+msg_restart_X_for_thin_client_kdm='你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+msg_logout_X_for_modified_gdm_config_work='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+msg_logout_X_for_modified_kdm_config_work='你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+msg_restart_graphic_mode_later='你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+msg_turn_on_gdm_remote_access='開放GDM遠端連線...'
+msg_gdm_remote_access_is_already_on='DRBL伺服器中的GDM遠端連線已經開啟!'
+msg_set_thin_client_mode_for_clients='正在設定終端機模式給用戶端電腦來使用...'
+msg_gdm_remote_access_is_already_off='DRBL伺服器中的GDM遠端連線已經關閉!'
+msg_disable_thin_client_mode_for_clients='關閉用戶端的終端機模式!'
+msg_turn_off_gdm_remote_access='關閉GDM遠端連線...'
+msg_kdm_remote_access_is_already_on='DRBL伺服器中的KDM遠端連線已經開啟!'
+msg_turn_off_kdm_remote_access='開放KDM遠端連線...'
+msg_kdm_remote_access_is_already_off='DRBL伺服器中的KDM遠端連線已經關閉!'
+msg_dm_in_DRBL_server='DRBL伺服器中的圖形顯示管理程式(display manager)是'
+msg_hint_for_answer='提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+msg_available_kernel='可用的核心有'
+msg_which_os_ayo_repository='請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+msg_win_fail_with_Missing_OS='如果你還原的是M$ Windows系統，還原後使用M$ Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+# drbl-script
+msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+msg_drbl_title='企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+msg_switch_client_mode='切換模式'
+msg_remote_linux='用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+msg_remote_linux_graphic='用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+msg_remote_linux_text='用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+msg_thin_client='用戶端遠距開機Linux圖形介面,終端機模式'
+msg_remote_memtest='用戶端遠距開機做記憶體測試(Memtest86+)'
+msg_remote_fdos='用戶端遠距開機使用自由DOS(FreeDOS)'
+msg_clonezilla_start='啟動再生龍(clonezilla)模式'
+msg_clonezilla_stop='停止再生龍(clonezilla)模式'
+msg_netinstall='用戶端經由網路安裝Linux套件'
+msg_local='用戶端使用本機作業系統開機'
+msg_reboot='現在重新啟動用戶端電腦'
+msg_shutdown='現在關閉用戶端電腦'
+msg_Wake_on_LAN='現在利用Wake-on-LAN開啟用戶端電腦'
+msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+msg_title_set_all_clients='設定所有的用戶端機器?'
+msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
+msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+msg_choose_the_action='選擇動作為'
+msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+msg_reveal_pxe_menus='顯示用戶端電腦某些已經被隱藏的開機選單'
+msg_setdefault_pxe_menu='設定用戶端電腦的開機預設選單'
+msg_title_hide='隱藏用戶端電腦的那一個開機選單?'
+msg_hide_list_des='隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+msg_reveal_title='顯示用戶端電腦的那一個開機選單?'
+msg_reveal_list_des='顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+msg_setdefault_title='哪一個是用戶端電腦的開機預設選單?'
+msg_setdefault_list_des='選定用戶端電腦開機時的預設選單'
+msg_choose_netinstall_imag='選擇要經由網路安裝的Linux套件'
+msg_nchc_clonezilla='再生龍(Clonezilla) - 開放原始碼再生還原系統'
+msg_nchc_drbl='企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+msg_nchc_free_software_labs='再生龍 - 國網中心自由軟體實驗室 - 台灣'
+msg_specify_hosts='指定用戶端機器'
+msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+msg_ocs_param_c='用戶端電腦在開始複製前會再次確認是否要執行'
+msg_ocs_param_s='用戶端電腦開機時略去硬體偵測'
+msg_ocs_param_f='當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+msg_ocs_param_j='使用sfdisk來產生分割區而不用dd'
+msg_ocs_param_j0='使用dd來產生分割區而不用sfdisk'
+msg_ocs_param_k='不在用戶端電腦硬碟再產生分割區'
+msg_ocs_param_t='用戶端電腦不再復原MBR (Mater Boot Record)'
+msg_ocs_param_e='用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+msg_ocs_param_y='伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+msg_ocs_param_y0='伺服器將總是提供再生模式給用戶端-預設本機開機'
+msg_ocs_param_y1='伺服器將總是提供再生模式給用戶端-預設是還原'
+msg_ocs_param_y2='伺服器將總是提供再生模式給用戶端-預設是DRBL'
+msg_ocs_param_z0='不壓縮(最快但是最大的印象檔)'
+msg_ocs_param_z1='使用gzip壓縮(快速但是較小的印象檔)'
+msg_ocs_param_z2='使用bzip2壓縮(最慢但是最小的印象檔)'
+msg_ocs_param_z3='使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+msg_ocs_param_g_auto='用戶端電腦重新在它的硬碟的MBR中安裝grub'
+msg_ocs_param_p_true='用戶端複製完畢時不做其他任何動作'
+msg_ocs_param_p_poweroff='用戶端複製完畢後關機'
+msg_ocs_param_p_reboot='用戶端複製完畢後重新開機'
+msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+msg_ocs_param_o="用戶端複製後執行目錄$POST_RUN_DIR下的執行檔"
+msg_ocs_param_hn0='復原後修改用戶端硬碟中的M$ win主機名稱(基於IP位址)'
+msg_ocs_param_hn1='復原後修改用戶端硬碟中的M$ win主機名稱(基於MAC位址)'
+msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+msg_ocs_param_r='還原結束後調整分割區大小(印象檔放到大於原來分割區用)'
+msg_ocs_param_x='在群播還原時使用全雙工網路'
+msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+msg_ocs_param_skip='不選用此選項'
+msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n
+可用的參數有: \n'
+msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n
+可用的參數有: \n'
+msg_no_network_installation_img='找不到網路安裝的印象檔!'
+msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+msg_start_clonezilla_mode='啟動再生龍模式'
+msg_choose_mode='選定模式'
+msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+msg_clonezilla_restore_disk='還原用戶端電腦的整個硬碟'
+msg_clonezilla_save_parts='儲存用戶端電腦的硬碟分割區'
+msg_clonezilla_restore_parts='還原用戶端電腦的硬碟分割區'
+msg_clonezilla_save_hda1='儲存用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_restore_hda1='還原用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_selec_in_client='在用戶端選擇儲或還原(限點播模式)'
+msg_choose_the_mode_to_restore_disk='選擇還原用戶端電腦的整個硬碟時的模式'
+msg_choose_the_mode_to_restore_parts='選擇還原用戶端電腦的硬碟分割區時的模式'
+msg_choose_the_mode_to_restore_hda1='選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+msg_abandon_hda1='注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+msg_unicast_restore='點播還原(unicast)'
+msg_multicast_restore='群播還原(multicast)'
+msg_choose_the_image_to_restore='選擇印象檔來做還原'
+msg_time_to_wait='設定時間來等待用戶端電腦開始複製'
+msg_clients_to_wait='直接設定用戶端電腦的數量來複製'
+msg_clients_time_to_wait='設定用戶端數量來複製，並且給定最長等待時間'
+msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議>=$SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='你必須輸入一個名稱'
+msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+msg_you_must_input_partition='你必須輸入一個分割區'
+msg_please_do_it_again='請再做一次'
+msg_choose_the='選擇這個'
+msg_to_save='來存(只顯示未被掛載的)'
+msg_the_image='這個印象檔名稱'
+msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+msg_do_you_want_to_replace='你是否要覆蓋它'
+ms_choose_disks_to_save='選擇硬碟來儲存(只顯示未被掛載的分割區)'
+ms_choose_parts_to_save='選擇分割區來儲存(只顯示未被掛載的硬碟)'
+msg_choose_the_disks_to_restore='選擇硬碟來還原'
+msg_choose_the_parts_to_restore='選擇分割區來還原'
+msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份硬碟,該硬碟必須不能被掛載中!'
+msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份分割區,該分割區必須不能被掛載中!'
+msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+msg_no_modification='略去任何修改'
+msg_install_via_network='經由網路安裝'
+msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(>=2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+msg_restart_drbl_all_services='重新啟動DRBL伺服器中的DRBL相關服務'
+msg_add_drbl_all_services='加上DRBL伺服器中的所有DRBL相關服務'
+msg_del_drbl_all_services='移除DRBL伺服器中的所有DRBL相關服務'
+msg_choose_action='選擇動作為'
+msg_login_switch='切換DRBL客戶端機器的圖形介面登入模式'
+msg_normal_login='一般登入(要求使用者輸入帳號密碼來登入)'
+msg_auto_login='自動登入'
+msg_timed_login='限時登入'
+msg_turn_on_client_to_make_template='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+msg_turn_on_client_to_clone='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+msg_turn_on_client_to_select_clone_type='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+msg_client_job_are_logged_in='用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+msg_client_sfdisk_log_are_in='用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+msg_set_the_clients_root_passwd='設定用戶端管理者(root)密碼'
+msg_new_passwd_prompt='輸入新的密碼: (螢幕上只會出現星號*)'
+msg_do_you_want_set_yum_repo='你要不要自己選yum的儲藏庫?'
+msg_set_yum_conf_yes_prompt='如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+msg_set_yum_conf_no_prompt='如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+msg_need_lynx_to_parse_config='需要lynx來判斷相關的網址，現在安裝lynx...'
+msg_need_curl_etc_to_parse_config='需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+msg_try_to_update_some_pkgs='如果找到新版的程式，嘗試升級某些需要的程式...'
+msg_force_to_upgrade_some_pkgs='嘗試強迫升級某些程式...'
+msg_install_net_install_images='安裝某些Linux套件的網路安裝印象檔...'
+msg_clean_dhcpd_lease='強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+msg_client_reautologin='強迫用戶端重新自動登入' 
+msg_clean_autologin_account='移除所有自動登入帳號(全部機器)'
+msg_reset_autologin_account='還原所有自動登入的環境為初始預設(全部機器)'
+msg_re_deploy='把伺服器的檔案更新到用戶端中(全部機器)'
+msg_dcs_others='其他模式或是指令'
+msg_dcs_more_modes='更多其他模式或是指令'
+msg_2_kernel_availables='有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+msg_from_this_drbl_server='來自於這台DRBL伺服器'
+msg_from_apt_repository='來自於apt的儲藏庫'
+msg_from_ayo_repository='來自於apt或是yum的儲藏庫'
+msg_install_kernel_for_clients='安裝用戶端電腦所需的核心'
+msg_which_kernel_do_you_perfer='你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+msg_you_choose='你選擇'
+msg_chosen_kernel='選定的核心為'
+msg_not_available_enter_again='找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+msg_hosts_allow_deny_is_set='警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='你必須確認這些用戶端的電腦:'
+msg_can_access_this_DRBL_server='可以連接到這台DRBL伺服器!'
+msg_otherwise_client_fail_to_boot='否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+msg_do_not_create_part='用戶端不再產生硬碟分割表!'
+msg_do_not_restore_mbr='用戶端不再復原MBR!'
+msg_you_have_to_input_image_names_in_client='在用戶端的電腦選擇還原的印象檔!'
+msg_title_input_save_image_name_in_server='現在輸入印象檔與範本裝置名稱 ?'
+msg_ask_if_input_save_image_name_in_server='你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+msg_input_image_name='輸入一個名稱來存這個印象檔:'
+msg_input_device_name='複製範本機中的那個裝置 ?'
+msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='在目的碟產生分割區...'
+msg_partition_table_for_target_dev='目的碟分割區的表'
+msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+msg_are_u_sure_u_want_to_continue='你確認要繼續執行 ?'
+msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+msg_different_type_of_input_devs='你輸入的裝置兩者屬於不同類型'
+msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
+msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
+msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+msg_now_run_this_cmd_in_target_machine='現在你可以在目的機器上執行類似這樣的指令來開始複製'
+msg_this_is_for_source_machine='這是在來源機器上執行'
+msg_this_is_for_target_machine='這是在目的機器上執行'
+msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+msg_then_reboot_this_server='然後把這台電腦重新開機，以便使用新的核心。'
+msg_make_audio_open='開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_audio_close='不開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_plugdev_open='開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_make_plugdev_close='不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_restart_prompt_for_audio='因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+msg_restart_prompt_for_plugdev='因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+msg_restart_prompt_for_dev='因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+msg_run_update_plugdev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+msg_run_update_dev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+msg_no_autologin_account='未找到自動登入帳號'
+msg_are_you_sure_reset_autologin_home_dir='你確認你要將自動登入帳號的環境重設為初始預設狀態'
+msg_warning_home_dir_will_be_deleted='警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+msg_these_accounts_are='這些帳號是'
+msg_ok_let_do_it='OK, 我們繼續做吧!'
+msg_do_not_reset_autologin_home_dir='不要重設自動登入帳號的家目錄'
+msg_created_autologin_ID_passwd_file="產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+msg_drbl_clonezilla_switch='切換企鵝龍單一系統印象檔與再生龍模式'
+msg_drbl_mode_switch='切換企鵝龍機制'
+msg_drbl_mode_switch_long="有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+msg_drbl_mode_0='使用完全企鵝龍模式'
+msg_drbl_mode_1='使用企鵝龍單一系統印象檔模式'
+msg_drbl_mode_2='不提供無碟GNU/Linux服務'
+msg_clonezilla_mode_switch='切換再生龍機制'
+msg_clonezilla_mode_switch_long='本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+msg_clonezilla_mode_0='使用完全再生龍模式'
+msg_clonezilla_mode_1='使用再生龍盒模式'
+msg_clonezilla_mode_2='不提供再生龍服務'
+msg_r_u_sure_want_to_del_autologin_accounts='你確認要移除這些自動登入帳號?'
+msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+msg_do_not_del_accounts='不要移除這些帳號'
+msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/dcs來切換。"
+msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+msg_wol_3='3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+msg_wol_4="4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+msg_no_kernel_rpm_is_available='無法在這些地方找到核心的RPM檔:'
+msg_internet_connection='1. 你的網際網路連線正常。'
+msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+msg_enter_1_or_press_enter_to_view='輸入'1'或是按'Enter'鍵來看目前收集的狀態。'
+msg_enter_2_or_press_q_to_quit='輸入'2'或是'q'來結束收集。'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+msg_What_the_win_hostname_prefix='所還原的M$ windows主機名稱的前置名稱是'
+msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 M$ Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 M$ Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在M$ WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+msg_install_glibc_etc_arch_by_yourself='如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+msg_prepare_kernel_for_clients='準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+msg_some_necessary_pkgs_not_installed='警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+msg_reset_all_existing_urpmi_setting='警告! 我們必須重新設定目前系統中的urpmi!'
+msg_some_required_pkgs_not_installed='這些必要的程式並沒有安裝'
+msg_use_drblsrv_instead="如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+msg_continue_may_not_work='如果你繼續的話，這個DRBL系統可能無法正常運作!'
+msg_switch_pxe_bg_mode='切換用戶端電腦PXE開機選單模式'
+msg_pxemenu_text='用戶端使用文字模式的開機選單'
+msg_pxemenu_graphic='用戶端使用圖形模式的開機選單'
+msg_only_one_kernel_meets_requirement='只有一個核心符合你設定的條件'
+msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/drbl-pxelinux-passwd -h\"來得知。"
+msg_this_might_take_several_minutes='這可能會需要一點時間...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+msg_ocs_iso_too_big_for_DVD='要產生的ISO檔太大，無法放到一片DVD上.'
+msg_unable_to_create_clonezilla_img_iso='無法產生這個再生龍還原專用光碟'
+msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用'makeboot.exe' (在M$ windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，在來就可以用它來開機使用DRBL"
+msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+msg_format_as_FAT_16_32='如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+msg_this_is_disk_usage_status='這是磁碟的使用狀態'
+msg_boot_clonezilla_live_dev='現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+msg_clone_finished_choose_to='下一步要'
+msg_enter_cml='進入命令列'
+msg_clonezilla_is_free_and_no_warranty='**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
+msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+msg_if_src_part_is_ntfs='如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你存完印象檔，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的，例如USB隨身碟，有可能該裝置下次會無法開機!'
+msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+msg_to_see_this_ocs_live_help_msg='注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+msg_image_source_for_ocs_live="如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+msg_modify_grub_config_if_necessary="你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+msg_this_script_will_create_SL_diskless='這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+msg_RAM_size_for_SL_drbl_client='建議你的用戶端電腦的記憶體最少要'
+msg_image_saved_from_dd='這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+msg_cons_for_dd_clone='使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+msg_will_be_inefficent_and_slow='這樣將會非常沒有效率，而且可能需要很久的時間'
+msg_fs_not_supported_by_partimage_ntfsclone='這個檔案系統partimage或是ntfsclone並不支援'
+msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+
+#-----------------------------------------
+# some words
+msg_text_Enter='輸入'
+msg_text_for='對於'
+msg_Got_it='找到了'
+msg_Warning='警告'
+msg_uppercase_Warning='警告'
+msg_NOT_found='未找到'
+msg_Done='完成'
+msg_please='請'
+msg_browse='瀏覽'
+msg_or='或是'
+msg_for_more_details='更詳細的資料'
+msg_Failed_to_get='未能抓取'
+msg_Failed_to_install='未能安裝'
+msg_done='完成'
+msg_note='注意'
+msg_and='與'
+msg_clonezilla='再生龍'
+msg_error='錯誤'
+msg_restore='還原'
+msg_txt_check='檢查'
+msg_ex='例如'
+msg_exit='退出'
+msg_poweroff='關機'
+msg_reboot='重新開機'
+msg_then='然後'
Index: drbl_ui/backup/orig_langs/tw.UTF-8_original
===================================================================
--- drbl_ui/backup/orig_langs/tw.UTF-8_original	(revision 20)
+++ drbl_ui/backup/orig_langs/tw.UTF-8_original	(revision 20)
@@ -0,0 +1,640 @@
+msg_delimiter_star_line='*****************************************************'
+msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+msg_OS_version='你的作業系統版本'
+msg_is_not_supported='DRBL 不支援這個版本!'
+msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+msg_set_proxy='你要設定代理伺服器嗎?'
+msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+msg_http_proxy_port='請輸入 HTTP 代理伺服器的連接埠: '
+msg_ftp_proxy_server='請輸入 FTP 代理伺服器的位址: '
+msg_ftp_proxy_port='請輸入 FTP 代理伺服器的連接埠: '
+msg_http_proxy_you_set='你設定的 HTTP 代理伺服器是: '
+msg_ftp_proxy_you_set='你設定的 FTP 代理伺服器是: '
+msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+msg_serial_console_only='用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+msg_redirect_to_which_port='請輸入要使用的序列埠(Serial Port)?'
+msg_serial_console_speed='您的序列終端機速度是多少?'
+msg_serial_console_parameter='請輸入序列終端機的參數'
+msg_smp_clients='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+msg_smp_clients_MDK='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='安裝 APT ...'
+msg_no_wget_get_it='沒有 wget 程式? 嘗試安裝 wget 程式...'
+msg_no_apt_get_it='沒有 apt 程式? 嘗試安裝 apt 程式...'
+msg_wget_installed_failure='未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+msg_wget_installed_successful='wget程式安裝成功!'
+msg_apt_already_installed='apt 已經安裝了. 神奇!!! 你真是優秀!'
+msg_backup_apt_sources='備份原來的 apt 來源檔(sources.list) ...'
+msg_setup_apt_sources_MDK='為 MDK 設定 apt 的來源檔(sources.list)'
+msg_enjoy_apt='現在開始享用 APT!'
+msg_clean_apt_cache='清除apt的快取檔案...'
+msg_check_apt_integrity='套件完整性檢查...'
+msg_upgrade_system_question='你是否要升級你的作業系統?'
+msg_upgrade_whole_system='升級作業系統中...'
+msg_check_installed_kernel='檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+msg_is_already_installed='已經被安裝在您的系統中...'
+msg_need_to_install_kernel='我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+msg_create_nbi_files='產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+msg_latest_kernel_for_clients='用戶端電腦使用的最新核心是'
+msg_no_drbl_script='你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+msg_create_files_for_PXELINUX='建立PXE網路開機的設定檔...'
+msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+msg_press_enter_to_continue='按 Enter 鍵繼續...'
+msg_press_enter_to_exit="按 Enter 鍵離開."
+msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+msg_program_stop='程式停止!'
+msg_remove_SmallLinuxs_question='如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+msg_remove_drbl_setup_question='你是否要移除DRBL這個程式?'
+msg_remove_apt_question='你是否要移除 apt ?'
+msg_remove_yum_repo_question='你是否要清除yum的來源設定檔?'
+msg_remove_urpmi_media_question='你是否要清除 urpmi的來源設定檔?'
+msg_cleaning_apt_cache='正在清除 apt 的快取檔案...'
+msg_cleaning_tftpboot_and_misc='移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+msg_uninstalling_DRBL_RH='移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_MDK='移除 Mandrake Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_DBN='移除 Debian Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_SUSE='移除 SuSE Linux 上的 DRBL 套件中...'
+msg_analyzing_rpm_info='分析已安裝套件資訊中... 這可能需要幾分鐘...'
+msg_failed_to_install_pkgs='安裝程式失敗，無法繼續執行!'
+msg_check_network_and_url='請檢查您的電腦和這個網址(URL)間的連線狀況：'
+msg_not_determine_OS='無法判斷 Linux 作業系統的種類與版本!!!'
+msg_enter_OS_ver='請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='正在清除 apt 的快取檔案...'
+msg_install_DRBL_necesary_files='安裝 DRBL 所需之相關程式...'
+msg_select_url_path='你選擇的伺服器網址(URL)與路徑'
+msg_drbl_driver='您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+msg_smp_optimization_kernel='您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+msg_apt_optimization_question='您用戶端的電腦要使用哪個等級CPU的核心?'
+msg_optimization_level_0='0 -> 使用i386 CPU等級架構'
+msg_optimization_level_1='1 -> 使用i586 CPU等級架構'
+msg_optimization_level_2='2 -> 使用與此DRBL伺服器同等級CPU的核心'
+msg_N_note='注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+msg_different_level_machine_prompt='如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+msg_diff_arch_explain='如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+msg_not_sure_better_1='如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+msg_same_optimization='您選用與伺服器同等級的 CPU 最佳化.'
+msg_i586_optimization='你選用 i586 架構的 CPU 最佳化.'
+msg_no_optimization='你未選用 CPU 最佳化，預設使用 i386 架構.'
+msg_glibc_openssl_upgrade_question='如果 glibc 與 openssl 有較新版本，是否要升級?'
+msg_glibc_openssl_keep='0 -> 不升級 glibc 與 openssl.'
+msg_keep_glibc_upgrade_openssl='1 -> 只升級 openssl,'
+msg_upgrade_glibc_keep_openssl='2 -> 只升級 glibc,'
+msg_upgrade_glibc_openssl='3 -> 升級 glibc 與 openssl (預設),'
+msg_warning_glibc_upgrade='警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+msg_upgrade_glibc_make_you_cry='為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+msg_install_dhcp_tftp_etc='正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='啟用與伺服器同等級 CPU 最佳化.'
+msg_optimization_is_off='未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+msg_install_i386_of='安裝 i386 架構的'
+msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
+msg_searching_pkg_in_ayo='在 ayo 伺服器中尋找可用的程式'
+msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='移除舊的'
+msg_creating_dev='產生用戶端電腦的設備檔案...'
+msg_get_dev='擷取設備檔案...'
+msg_clean_tmp_dev='清除設備檔案的暫存目錄...'
+msg_remove_old_nbi='移除 /tftpboot 中舊的 nbi 檔案...'
+msg_install_extra_driver='安裝額外的驅動程式...'
+msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+msg_make_client_serial_console='建立用戶端序列終端機設定...'
+msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+msg_not_remove='請在下個步驟回答"N"!'
+msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+msg_do_u_want_to_remove='你要移除嗎？'
+msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+msg_rm_apt='正在移除 apt 與 libapt-pkg0...'
+msg_search_kernel_in_ayo='在 ayo 資料庫中尋找最新的'
+msg_latest_kernel_in_ayo='在 ayo 資料庫中,最新的核心是'
+msg_install_kernel_might_take_several_minutes='安裝這個核心可能需要一些時間，請耐心等候... '
+msg_latest_kernel_is_already_installed='給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+msg_error_no_drbl_kernel_in_apt='在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+msg_change_opt_from_i386_to_i586='由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+msg_change_opt_from_i586_to_i386='由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+msg_are_you_sure_run_impatient='這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+msg_run_step_by_step='很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+msg_run_drbl4imp='好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+msg_total_avail_space='系統可以提供的空間(/tftpboot與/)有'
+msg_necessary_space_setup_drbl='估計安裝DRBL需要的空間是'
+msg_total_client_no='DRBL用戶端的總數目是'
+msg_system_maybe_not_enough_space='你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+msg_logout_X_for_thin_client_gdm='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+msg_restart_X_for_thin_client_kdm='你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+msg_logout_X_for_modified_gdm_config_work='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+msg_logout_X_for_modified_kdm_config_work='你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+msg_restart_graphic_mode_later='你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+msg_turn_on_gdm_remote_access='開放GDM遠端連線...'
+msg_gdm_remote_access_is_already_on='DRBL伺服器中的GDM遠端連線已經開啟!'
+msg_set_thin_client_mode_for_clients='正在設定終端機模式給用戶端電腦來使用...'
+msg_gdm_remote_access_is_already_off='DRBL伺服器中的GDM遠端連線已經關閉!'
+msg_disable_thin_client_mode_for_clients='關閉用戶端的終端機模式!'
+msg_turn_off_gdm_remote_access='關閉GDM遠端連線...'
+msg_kdm_remote_access_is_already_on='DRBL伺服器中的KDM遠端連線已經開啟!'
+msg_turn_off_kdm_remote_access='開放KDM遠端連線...'
+msg_kdm_remote_access_is_already_off='DRBL伺服器中的KDM遠端連線已經關閉!'
+msg_dm_in_DRBL_server='DRBL伺服器中的圖形顯示管理程式(display manager)是'
+msg_hint_for_answer='提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+msg_available_kernel='可用的核心有'
+msg_which_os_ayo_repository='請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+msg_win_fail_with_Missing_OS='如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+# drbl-script
+msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+msg_drbl_title='企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+msg_switch_client_mode='切換模式'
+msg_remote_linux='用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+msg_remote_linux_graphic='用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+msg_remote_linux_text='用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+msg_thin_client='用戶端遠距開機Linux圖形介面,終端機模式'
+msg_remote_memtest='用戶端遠距開機做記憶體測試(Memtest86+)'
+msg_remote_fdos='用戶端遠距開機使用自由DOS(FreeDOS)'
+msg_clonezilla_start='啟動再生龍(clonezilla)模式'
+msg_clonezilla_stop='停止再生龍(clonezilla)模式'
+msg_netinstall='用戶端經由網路安裝Linux套件'
+msg_local='用戶端使用本機作業系統開機'
+msg_reboot='現在重新啟動用戶端電腦'
+msg_shutdown='現在關閉用戶端電腦'
+msg_Wake_on_LAN='現在利用Wake-on-LAN開啟用戶端電腦'
+msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+msg_title_set_all_clients='設定所有的用戶端機器?'
+msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
+msg_select_all_clients_or_select_part_them='你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+msg_select_all_clients='選擇所有的用戶端'
+msg_select_clients='根據IP或是MAC位址選擇部份用戶端'
+msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+msg_choose_the_action='選擇動作為'
+msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+msg_reveal_pxe_menus='顯示用戶端電腦某些已經被隱藏的開機選單'
+msg_setdefault_pxe_menu='設定用戶端電腦的開機預設選單'
+msg_title_hide='隱藏用戶端電腦的那一個開機選單?'
+msg_hide_list_des='隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+msg_reveal_title='顯示用戶端電腦的那一個開機選單?'
+msg_reveal_list_des='顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+msg_setdefault_title='哪一個是用戶端電腦的開機預設選單?'
+msg_setdefault_list_des='選定用戶端電腦開機時的預設選單'
+msg_choose_netinstall_imag='選擇要經由網路安裝的Linux套件'
+msg_nchc_clonezilla='再生龍(Clonezilla) - 開放原始碼再生還原系統'
+msg_nchc_drbl='企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+msg_nchc_free_software_labs='再生龍 - 國網中心自由軟體實驗室 - 台灣'
+msg_specify_hosts='指定用戶端機器'
+msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_list='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_grp='經由MAC位址群組來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_list='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_grp='經由IP位址群組來指定DRBL用戶端電腦的模式'
+msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
+msg_hint_for_not_fdisk='*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+msg_ocs_param_c='用戶端電腦在開始複製前會再次確認是否要執行'
+msg_ocs_param_s='用戶端電腦開機時略去硬體偵測'
+msg_ocs_param_f='當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+msg_ocs_param_j='使用sfdisk來產生分割區而不用dd'
+msg_ocs_param_j0='使用dd來產生分割區而不用sfdisk'
+msg_ocs_param_k='不在用戶端電腦硬碟再產生分割區'
+msg_ocs_param_t='用戶端電腦不再復原MBR (Mater Boot Record)'
+msg_ocs_param_e='用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+msg_ocs_param_y='伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+msg_ocs_param_y0='伺服器將總是提供再生模式給用戶端-預設本機開機'
+msg_ocs_param_y1='伺服器將總是提供再生模式給用戶端-預設是還原'
+msg_ocs_param_y2='伺服器將總是提供再生模式給用戶端-預設是DRBL'
+msg_ocs_param_z0='不壓縮(最快但是最大的印象檔)'
+msg_ocs_param_z1='使用gzip壓縮(快速但是較小的印象檔)'
+msg_ocs_param_z2='使用bzip2壓縮(最慢但是最小的印象檔)'
+msg_ocs_param_z3='使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+msg_ocs_param_g_auto='用戶端電腦重新在它的硬碟的MBR中安裝grub'
+msg_ocs_param_p_true='用戶端複製完畢時不做其他任何動作'
+msg_ocs_param_p_poweroff='用戶端複製完畢後關機'
+msg_ocs_param_p_reboot='用戶端複製完畢後重新開機'
+msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+# Since drbl.conf is loaded before language file is loaded, we explicitly show it as $POST_RUN_DIR
+msg_ocs_param_o0='用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
+msg_ocs_param_o1='用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
+msg_ocs_param_hn0='復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
+msg_ocs_param_hn1='復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+msg_ocs_param_r='在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+msg_ocs_param_x='在群播還原時使用全雙工網路'
+msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+msg_ocs_param_skip='不選用此選項'
+msg_ocs_param_notfs_ok='假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
+msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n 可用的參數有: \n'
+msg_no_network_installation_img='找不到網路安裝的印象檔!'
+msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+msg_start_clonezilla_mode='啟動再生龍模式'
+msg_choose_mode='選定模式'
+msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+msg_clonezilla_restore_disk='還原用戶端電腦的整個硬碟'
+msg_clonezilla_save_parts='儲存用戶端電腦的硬碟分割區'
+msg_clonezilla_restore_parts='還原用戶端電腦的硬碟分割區'
+msg_clonezilla_save_hda1='儲存用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_restore_hda1='還原用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_selec_in_client='在用戶端選擇儲或還原(限點播模式)'
+msg_choose_the_mode_to_restore_disk='選擇還原用戶端電腦的整個硬碟時的模式'
+msg_choose_the_mode_to_restore_parts='選擇還原用戶端電腦的硬碟分割區時的模式'
+msg_choose_the_mode_to_restore_hda1='選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+msg_abandon_hda1='注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+msg_unicast_restore='點播還原(unicast)'
+msg_multicast_restore='群播還原(multicast)'
+msg_choose_the_image_to_restore='選擇印象檔來做還原'
+msg_time_to_wait='設定時間來等待用戶端電腦開始複製'
+msg_clients_to_wait='直接設定用戶端電腦的數量來複製'
+msg_clients_time_to_wait='設定用戶端數量來複製，並且給定最長等待時間'
+msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議大於或等於$SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='你必須輸入一個名稱'
+msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+msg_you_must_input_partition='你必須輸入一個分割區'
+msg_please_do_it_again='請再做一次'
+msg_choose_the='選擇這個'
+msg_to_save='來存(只顯示未被掛載的)'
+msg_the_image='這個印象檔名稱'
+msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+msg_do_you_want_to_replace='你是否要覆蓋它'
+msg_linux_disk_MS_mapping='硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
+msg_linux_parts_MS_mapping='分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
+msg_choose_disks_to_save='選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
+msg_choose_parts_to_save='選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
+msg_choose_the_disks_to_restore='選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
+msg_choose_the_parts_to_restore='選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
+msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
+msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+msg_no_modification='略去任何修改'
+msg_install_via_network='經由網路安裝'
+msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(大於或等於2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+msg_restart_drbl_all_services='重新啟動DRBL伺服器中的DRBL相關服務'
+msg_add_drbl_all_services='加上DRBL伺服器中的所有DRBL相關服務'
+msg_del_drbl_all_services='移除DRBL伺服器中的所有DRBL相關服務'
+msg_choose_action='選擇動作為'
+msg_login_switch='切換DRBL客戶端機器的圖形介面登入模式'
+msg_normal_login='一般登入(要求使用者輸入帳號密碼來登入)'
+msg_auto_login='自動登入'
+msg_timed_login='限時登入'
+msg_turn_on_client_to_make_template='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+msg_turn_on_client_to_clone='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+msg_turn_on_client_to_select_clone_type='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+msg_client_job_are_logged_in='用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+msg_client_sfdisk_log_are_in='用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+msg_set_the_clients_root_passwd='設定用戶端管理者(root)密碼'
+msg_new_passwd_prompt='輸入新的密碼: (螢幕上只會出現星號*)'
+msg_do_you_want_set_yum_repo='你要不要自己選yum的儲藏庫?'
+msg_set_yum_conf_yes_prompt='如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+msg_set_yum_conf_no_prompt='如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+msg_need_lynx_to_parse_config='需要lynx來判斷相關的網址，現在安裝lynx...'
+msg_need_curl_etc_to_parse_config='需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+msg_try_to_update_some_pkgs='如果找到新版的程式，嘗試升級某些需要的程式...'
+msg_force_to_upgrade_some_pkgs='嘗試強迫升級某些程式...'
+msg_install_net_install_images='安裝某些Linux套件的網路安裝印象檔...'
+msg_clean_dhcpd_lease='強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+msg_client_reautologin='強迫用戶端重新自動登入' 
+msg_clean_autologin_account='移除所有自動登入帳號(全部機器)'
+msg_reset_autologin_account='還原所有自動登入的環境為初始預設(全部機器)'
+msg_re_deploy='把伺服器的檔案更新到用戶端中(全部機器)'
+msg_dcs_others='其他模式或是指令'
+msg_dcs_more_modes='更多其他模式或是指令'
+msg_2_kernel_availables='有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+msg_from_this_drbl_server='來自於這台DRBL伺服器'
+msg_from_apt_repository='來自於apt的儲藏庫'
+msg_from_ayo_repository='來自於apt或是yum的儲藏庫'
+msg_install_kernel_for_clients='安裝用戶端電腦所需的核心'
+msg_which_kernel_do_you_perfer='你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+msg_you_choose='你選擇'
+msg_chosen_kernel='選定的核心為'
+msg_not_available_enter_again='找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+msg_hosts_allow_deny_is_set='警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='你必須確認這些用戶端的電腦:'
+msg_can_access_this_DRBL_server='可以連接到這台DRBL伺服器!'
+msg_otherwise_client_fail_to_boot='否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+msg_do_not_create_part='用戶端不再產生硬碟分割表!'
+msg_do_not_restore_mbr='用戶端不再復原MBR!'
+msg_you_have_to_input_image_names_in_client='在用戶端的電腦選擇還原的印象檔!'
+msg_title_input_save_image_name_in_server='現在輸入印象檔與範本裝置名稱 ?'
+msg_ask_if_input_save_image_name_in_server='你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+msg_input_image_name='輸入一個名稱來存這個印象檔:'
+msg_input_device_name='複製範本機中的那個裝置 ?'
+msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='將在目的碟產生分割區...'
+msg_partition_table_for_target_dev='要產生的目的碟分割區的表'
+msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+msg_are_u_sure_u_want_to_continue='你確認要繼續執行'
+msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+msg_different_type_of_input_devs='你輸入的裝置兩者屬於不同類型'
+msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
+msg_do_you_want_to_clone_the_boot_loader_to='你是否要複製開機載入程式(boot loader)到'
+msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
+msg_skip_clone_boot_loader='略去複製開機載入程式(boot loader)'
+msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+msg_failed_to_clone_the_boot_loader='未能複製開機載入程式(boot loader)'
+msg_now_run_this_cmd_in_target_machine='現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
+msg_if_clone_the_partition_to_hda1_in_target_machine='例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
+msg_if_clone_the_disk_to_hda_in_target_machine='例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+msg_this_is_for_source_machine='這是在來源機器上執行'
+msg_this_is_for_target_machine='這是在目的機器上執行'
+msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+msg_then_reboot_this_server='然後把這台電腦重新開機，以便使用新的核心。'
+msg_make_audio_open='開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_audio_close='不開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_plugdev_open='開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_make_plugdev_close='不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_restart_prompt_for_audio='因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+msg_restart_prompt_for_plugdev='因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+msg_restart_prompt_for_dev='因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+msg_run_update_plugdev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+msg_run_update_dev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+msg_no_autologin_account='未找到自動登入帳號'
+msg_are_you_sure_reset_autologin_home_dir='你確認你要將自動登入帳號的環境重設為初始預設狀態'
+msg_warning_home_dir_will_be_deleted='警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+msg_these_accounts_are='這些帳號是'
+msg_ok_let_do_it='OK, 我們繼續做吧!'
+msg_do_not_reset_autologin_home_dir='不要重設自動登入帳號的家目錄'
+msg_created_autologin_ID_passwd_file="產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+msg_drbl_clonezilla_switch='切換企鵝龍單一系統印象檔與再生龍模式'
+msg_drbl_mode_switch='切換企鵝龍機制'
+msg_drbl_mode_switch_long="有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+msg_drbl_mode_0='使用完全企鵝龍模式'
+msg_drbl_mode_1='使用企鵝龍單一系統印象檔模式'
+msg_drbl_mode_2='不提供無碟GNU/Linux服務'
+msg_clonezilla_mode_switch='切換再生龍機制'
+msg_clonezilla_mode_switch_long='本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+msg_clonezilla_mode_0='使用完全再生龍模式'
+msg_clonezilla_mode_1='使用再生龍盒模式'
+msg_clonezilla_mode_2='不提供再生龍服務'
+msg_r_u_sure_want_to_del_autologin_accounts='你確認要移除這些自動登入帳號?'
+msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+msg_do_not_del_accounts='不要移除這些帳號'
+msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+msg_wol_3='3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+msg_wol_4="4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+msg_no_kernel_rpm_is_available='無法在這些地方找到核心的RPM檔:'
+msg_internet_connection='1. 你的網際網路連線正常。'
+msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+msg_enter_1_or_press_enter_to_view='輸入<1>或是按<Enter>鍵來看目前收集的狀態。'
+msg_enter_2_or_press_q_to_quit='輸入<2>或是<q>來結束收集。'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+msg_What_the_win_hostname_prefix='所還原的MS windows主機名稱的前置名稱是'
+msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+msg_install_glibc_etc_arch_by_yourself='如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+msg_prepare_kernel_for_clients='準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+msg_some_necessary_pkgs_not_installed='警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+msg_reset_all_existing_urpmi_setting='警告! 我們必須重新設定目前系統中的urpmi!'
+msg_some_required_pkgs_not_installed='這些必要的程式並沒有安裝'
+msg_use_drblsrv_instead="如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+msg_continue_may_not_work='如果你繼續的話，這個DRBL系統可能無法正常運作!'
+msg_switch_pxe_bg_mode='切換用戶端電腦PXE開機選單模式'
+msg_pxemenu_text='用戶端使用文字模式的開機選單'
+msg_pxemenu_graphic='用戶端使用圖形模式的開機選單'
+msg_only_one_kernel_meets_requirement='只有一個核心符合你設定的條件'
+msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+msg_this_might_take_several_minutes='這可能會需要一點時間...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+msg_ocs_iso_too_big_for_DVD='要產生的ISO檔太大，無法放到一片DVD上.'
+msg_unable_to_create_clonezilla_img_iso='無法產生這個再生龍還原專用光碟'
+msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+msg_format_as_FAT_16_32='如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+msg_this_is_disk_usage_status='這是磁碟的使用狀態'
+msg_boot_clonezilla_live_dev='現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+msg_clone_finished_choose_to='下一步要'
+msg_enter_cml='進入命令列'
+msg_clonezilla_is_free_and_no_warranty='**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
+msg_to_use_clonezilla_to_save_image_again='要再使用再生龍來存印象檔'
+msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+msg_if_src_part_is_ntfs='如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+msg_to_see_this_ocs_live_help_msg='注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+msg_image_source_for_ocs_live="如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+msg_modify_grub_config_if_necessary="你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+msg_this_script_will_create_SL_diskless='這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+msg_RAM_size_for_SL_drbl_client='建議你的用戶端電腦的記憶體最少要'
+msg_image_saved_from_dd='這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+msg_cons_for_dd_clone='使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+msg_will_be_inefficent_and_slow='這樣將會非常沒有效率，而且可能需要很久的時間'
+msg_fs_not_supported_by_partimage_ntfsclone='這個檔案系統partimage或是ntfsclone並不支援'
+msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+msg_target_dev_has_this_partition_table='你要寫入的硬碟有這樣的資訊表'
+msg_let_me_ask_you_again='容我再問你一次'
+msg_unable_to_mnt_ocsroot="無法掛載到$ocsroot"
+msg_mount_ocsroot_img_hint_short_des='掛載再生龍印象檔的目錄'
+msg_mount_ocsroo_img_hint_long_des="掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
+msg_mount_local_dev='掛載本機的分割區'
+msg_mount_sshfs='掛載SSH伺服器的目錄'
+msg_mount_smbfs='掛載網路芳鄰伺服器的目錄'
+msg_mount_nfs='掛載NFS伺服器的目錄'
+msg_mount_ftpfs='掛載FTP伺服器的目錄'
+msg_do_it_manually='自行手動調整'
+msg_skip_this_use_existing_ocsroot="使用現有的$ocsroot"
+msg_device_to_mount_as_ocsroot_do_not_mount_target_dev="掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
+msg_ip_address_or_FQDN_of_server='伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
+msg_smb_domain_in_server='網路芳鄰伺服器上的網域名稱'
+msg_if_no_smb_domain_skip_this='如果伺服器上沒有此設定，你可以略去此選項'
+msg_account_in_server='使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
+msg_sshfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
+msg_ftpfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
+msg_now_you_have_to_enter_passwd='現在你必須輸入對於這個帳號的密碼'
+msg_confirm_ssh_server_might_be_necessary='如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
+msg_ocs_img_dir_path="要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
+msg_enter_another_shell_hint='進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
+msg_existing_setting_is='現有的設定是'
+msg_start_clonezilla='使用再生龍'
+msg_start_clonezilla_or_enter_shell='使用再生龍或是登入(命令列) ?'
+msg_writable_dev_ex_usb_stick='可寫裝置如硬碟/隨身碟'
+msg_writable_fs_ex_nfs_smbfs='可寫網路磁碟如NFS/SMBFS'
+msg_readonly_dev_ex_CD='唯讀裝置如CD'
+msg_writable_dev_ramdisk='記憶體，關機後資料就消失。***不建議***'
+msg_warning_mount_ntfs_writable='警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
+msg_df_report='目前系統的掛載狀態'
+msg_hint_assign_IP_group="提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_hint_assign_MAC_group="提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_device_image_device_clone='兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
+msg_device_image_clone='硬碟/分割區[存到/來至]印象檔'
+msg_device_device_clone='硬碟/分割區複製到硬碟/分割區'
+msg_disk_to_local_disk='複製本機硬碟到本機硬碟'
+msg_disk_to_remote_disk='複製本機硬碟到它機硬碟'
+msg_part_to_local_part='複製本機分割區到本機分割區'
+msg_part_to_remote_part='複製本機分割區到它機分割區'
+msg_local_source_disk='選擇本機硬碟當來源母碟'
+msg_local_target_disk='選擇本機硬碟當目的碟'
+msg_local_source_part='選擇本機分割區當來源分割區'
+msg_local_target_part='選擇本機分割區當目的分割區'
+msg_ocs_onthefly_advanced_extra_param='直接複製再生龍模式額外的進階參數'
+msg_ocs_onthefly_param_g='在目地碟的開機磁區重新安裝grub'
+msg_ocs_onthefly_param_e='在目的碟的分割區調整檔案系統大小符合分割區大小'
+msg_ocs_onthefly_param_nogui='使用partimage的時候不顯示圖形介面'
+msg_ocs_onthefly_param_n='不要在目地碟的開機磁區產生分割區的分配表'
+msg_ocs_onthefly_param_m='不要複製開機管理程式(boot loader)'
+msg_ocs_onthefly_param_o='強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
+msg_ocs_onthefly_param_b='使用批次模式(危險!務必先確認設定正確)'
+msg_ocs_onthefly_param_v='印出詳細的資訊'
+msg_only_i686_kernel_available_in_centos_5='目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
+msg_do_you_want_to_clean_all_stale_mac_cfg="在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
+msg_something_went_wrong_when_start_drbl_related_srv='啟動DRBL相關服務的時候出現一些狀況!'
+msg_you_can_try_to_run_the_following_again='你可以嘗試再度執行以下指令看看'
+msg_try_drblsrv_offline="如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
+msg_very_unstable='非常不穩定'
+msg_not_stable='不穩定'
+msg_not_secure='不安全'
+msg_no_nic_is_found="找不到支援的網路卡."
+msg_choose_nic="請選擇一個網路卡\n(如果你有兩張或更多)"
+msg_send_dhcp_request_from="從網路卡送出 DHCP 要求:"
+msg_enter_IP_add_for_this_nic="請指定這張網卡的 IP 位址: "
+msg_enter_netmask_for_this_nic="請指定這張網卡的網路遮罩(Netmask): "
+msg_enter_default_gateway="請指定通訊閘(Gateway) "
+msg_enter_dns_server="請指定網域名稱伺服器(Nameserver) "
+msg_put_dnsserver_to_resolv_conf="將 Nameserver 設定至 /etc/resolv.conf "
+msg_append_dnsserver_to_resolv_conf="增設 Nameserver 至 /etc/resolv.conf :"
+msg_Network_config="網路設定"
+msg_choose_mode_to_setup_net="選擇你要的模式來設定這台電腦的網路"
+msg_use_dhcp_broadcast="使用DHCP來設定"
+msg_use_static_ip="設定固定IP位址"
+msg_use_pppoe_conf="使用PPPoE來設定"
+msg_setup_network_first='先設定網路'
+msg_hint_multiple_choice_select_by_space='///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
+msg_network_is_not_configured='網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
+msg_network_is_already_configured='發信網路已經設定了! 這台機器可用的IP位址是'
+
+#-----------------------------------------
+# some words
+msg_text_Enter='輸入'
+msg_text_for='對於'
+msg_Got_it='找到了'
+msg_Warning='警告'
+msg_uppercase_Warning='警告'
+msg_NOT_found='未找到'
+msg_Done='完成'
+msg_please='請'
+msg_browse='瀏覽'
+msg_or='或是'
+msg_for_more_details='更詳細的資料'
+msg_Failed_to_get='未能抓取'
+msg_Failed_to_install='未能安裝'
+msg_done='完成'
+msg_note='注意'
+msg_and='與'
+msg_clonezilla='再生龍'
+msg_error='錯誤'
+msg_restore='還原'
+msg_txt_check='檢查'
+msg_ex='例如'
+msg_exit='退出'
+msg_poweroff='關機'
+msg_reboot='重新開機'
+msg_then='然後'
+msg_unknown='未知'
+msg_experimental='實驗性質'
+msg_failed="失敗"
Index: drbl_ui/backup/orig_langs/tw.UTF-8_test
===================================================================
--- drbl_ui/backup/orig_langs/tw.UTF-8_test	(revision 20)
+++ drbl_ui/backup/orig_langs/tw.UTF-8_test	(revision 20)
@@ -0,0 +1,640 @@
+msg_delimiter_star_line='*****************************************************'
+msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+msg_OS_version='你的作業系統版本'
+msg_is_not_supported='DRBL 不支援這個版本!'
+msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+msg_set_proxy='你要設定代理伺服器嗎?'
+msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+msg_http_proxy_port='請輸入 HTTP 代理伺服器的連接埠: '
+msg_ftp_proxy_server='請輸入 FTP 代理伺服器的位址: '
+msg_ftp_proxy_port='請輸入 FTP 代理伺服器的連接埠: '
+msg_http_proxy_you_set='你設定的 HTTP 代理伺服器是: '
+msg_ftp_proxy_you_set='你設定的 FTP 代理伺服器是: '
+msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+msg_serial_console_only='用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+msg_redirect_to_which_port='請輸入要使用的序列埠(Serial Port)?'
+msg_serial_console_speed='您的序列終端機速度是多少?'
+msg_serial_console_parameter='請輸入序列終端機的參數'
+msg_smp_clients='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+msg_smp_clients_MDK='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='安裝 APT ...'
+msg_no_wget_get_it='沒有 wget 程式? 嘗試安裝 wget 程式...'
+msg_no_apt_get_it='沒有 apt 程式? 嘗試安裝 apt 程式...'
+msg_wget_installed_failure='未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+msg_wget_installed_successful='wget程式安裝成功!'
+msg_apt_already_installed='apt 已經安裝了. 神奇!!! 你真是優秀!'
+msg_backup_apt_sources='備份原來的 apt 來源檔(sources.list) ...'
+msg_setup_apt_sources_MDK='為 MDK 設定 apt 的來源檔(sources.list)'
+msg_enjoy_apt='現在開始享用 APT!'
+msg_clean_apt_cache='清除apt的快取檔案...'
+msg_check_apt_integrity='套件完整性檢查...'
+msg_upgrade_system_question='你是否要升級你的作業系統?'
+msg_upgrade_whole_system='升級作業系統中...'
+msg_check_installed_kernel='檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+msg_is_already_installed='已經被安裝在您的系統中...'
+msg_need_to_install_kernel='我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+msg_create_nbi_files='產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+msg_latest_kernel_for_clients='用戶端電腦使用的最新核心是'
+msg_no_drbl_script='你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+msg_create_files_for_PXELINUX='建立PXE網路開機的設定檔...'
+msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+msg_press_enter_to_continue='按 Enter 鍵繼續...'
+msg_press_enter_to_exit="按 Enter 鍵離開."
+msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+msg_program_stop='程式停止!'
+msg_remove_SmallLinuxs_question='如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+msg_remove_drbl_setup_question='你是否要移除DRBL這個程式?'
+msg_remove_apt_question='你是否要移除 apt ?'
+msg_remove_yum_repo_question='你是否要清除yum的來源設定檔?'
+msg_remove_urpmi_media_question='你是否要清除 urpmi的來源設定檔?'
+msg_cleaning_apt_cache='正在清除 apt 的快取檔案...'
+msg_cleaning_tftpboot_and_misc='移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+msg_uninstalling_DRBL_RH='移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_MDK='移除 Mandrake Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_DBN='移除 Debian Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_SUSE='移除 SuSE Linux 上的 DRBL 套件中...'
+msg_analyzing_rpm_info='分析已安裝套件資訊中... 這可能需要幾分鐘...'
+msg_failed_to_install_pkgs='安裝程式失敗，無法繼續執行!'
+msg_check_network_and_url='請檢查您的電腦和這個網址(URL)間的連線狀況：'
+msg_not_determine_OS='無法判斷 Linux 作業系統的種類與版本!!!'
+msg_enter_OS_ver='請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='正在清除 apt 的快取檔案...'
+msg_install_DRBL_necesary_files='安裝 DRBL 所需之相關程式...'
+msg_select_url_path='你選擇的伺服器網址(URL)與路徑'
+msg_drbl_driver='您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+msg_smp_optimization_kernel='您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+msg_apt_optimization_question='您用戶端的電腦要使用哪個等級CPU的核心?'
+msg_optimization_level_0='0 -> 使用i386 CPU等級架構'
+msg_optimization_level_1='1 -> 使用i586 CPU等級架構'
+msg_optimization_level_2='2 -> 使用與此DRBL伺服器同等級CPU的核心'
+msg_N_note='注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+msg_different_level_machine_prompt='如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+msg_diff_arch_explain='如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+msg_not_sure_better_1='如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+msg_same_optimization='您選用與伺服器同等級的 CPU 最佳化.'
+msg_i586_optimization='你選用 i586 架構的 CPU 最佳化.'
+msg_no_optimization='你未選用 CPU 最佳化，預設使用 i386 架構.'
+msg_glibc_openssl_upgrade_question='如果 glibc 與 openssl 有較新版本，是否要升級?'
+msg_glibc_openssl_keep='0 -> 不升級 glibc 與 openssl.'
+msg_keep_glibc_upgrade_openssl='1 -> 只升級 openssl,'
+msg_upgrade_glibc_keep_openssl='2 -> 只升級 glibc,'
+msg_upgrade_glibc_openssl='3 -> 升級 glibc 與 openssl (預設),'
+msg_warning_glibc_upgrade='警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+msg_upgrade_glibc_make_you_cry='為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+msg_install_dhcp_tftp_etc='正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='啟用與伺服器同等級 CPU 最佳化.'
+msg_optimization_is_off='未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+msg_install_i386_of='安裝 i386 架構的'
+msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
+msg_searching_pkg_in_ayo='在 ayo 伺服器中尋找可用的程式'
+msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='移除舊的'
+msg_creating_dev='產生用戶端電腦的設備檔案...'
+msg_get_dev='擷取設備檔案...'
+msg_clean_tmp_dev='清除設備檔案的暫存目錄...'
+msg_remove_old_nbi='移除 /tftpboot 中舊的 nbi 檔案...'
+msg_install_extra_driver='安裝額外的驅動程式...'
+msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+msg_make_client_serial_console='建立用戶端序列終端機設定...'
+msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+msg_not_remove='請在下個步驟回答"N"!'
+msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+msg_do_u_want_to_remove='你要移除嗎？'
+msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+msg_rm_apt='正在移除 apt 與 libapt-pkg0...'
+msg_search_kernel_in_ayo='在 ayo 資料庫中尋找最新的'
+msg_latest_kernel_in_ayo='在 ayo 資料庫中,最新的核心是'
+msg_install_kernel_might_take_several_minutes='安裝這個核心可能需要一些時間，請耐心等候... '
+msg_latest_kernel_is_already_installed='給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+msg_error_no_drbl_kernel_in_apt='在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+msg_change_opt_from_i386_to_i586='由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+msg_change_opt_from_i586_to_i386='由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+msg_are_you_sure_run_impatient='這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+msg_run_step_by_step='很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+msg_run_drbl4imp='好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+msg_total_avail_space='系統可以提供的空間(/tftpboot與/)有'
+msg_necessary_space_setup_drbl='估計安裝DRBL需要的空間是'
+msg_total_client_no='DRBL用戶端的總數目是'
+msg_system_maybe_not_enough_space='你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+msg_logout_X_for_thin_client_gdm='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+msg_restart_X_for_thin_client_kdm='你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+msg_logout_X_for_modified_gdm_config_work='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+msg_logout_X_for_modified_kdm_config_work='你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+msg_restart_graphic_mode_later='你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+msg_turn_on_gdm_remote_access='開放GDM遠端連線...'
+msg_gdm_remote_access_is_already_on='DRBL伺服器中的GDM遠端連線已經開啟!'
+msg_set_thin_client_mode_for_clients='正在設定終端機模式給用戶端電腦來使用...'
+msg_gdm_remote_access_is_already_off='DRBL伺服器中的GDM遠端連線已經關閉!'
+msg_disable_thin_client_mode_for_clients='關閉用戶端的終端機模式!'
+msg_turn_off_gdm_remote_access='關閉GDM遠端連線...'
+msg_kdm_remote_access_is_already_on='DRBL伺服器中的KDM遠端連線已經開啟!'
+msg_turn_off_kdm_remote_access='開放KDM遠端連線...'
+msg_kdm_remote_access_is_already_off='DRBL伺服器中的KDM遠端連線已經關閉!'
+msg_dm_in_DRBL_server='DRBL伺服器中的圖形顯示管理程式(display manager)是'
+msg_hint_for_answer='提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+msg_available_kernel='可用的核心有'
+msg_which_os_ayo_repository='請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+msg_win_fail_with_Missing_OS='如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+# drbl-script
+msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+msg_drbl_title='企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+msg_switch_client_mode='切換模式'
+msg_remote_linux='用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+msg_remote_linux_graphic='用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+msg_remote_linux_text='用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+msg_thin_client='用戶端遠距開機Linux圖形介面,終端機模式'
+msg_remote_memtest='用戶端遠距開機做記憶體測試(Memtest86+)'
+msg_remote_fdos='用戶端遠距開機使用自由DOS(FreeDOS)'
+msg_clonezilla_start='啟動再生龍(clonezilla)模式'
+msg_clonezilla_stop='停止再生龍(clonezilla)模式'
+msg_netinstall='用戶端經由網路安裝Linux套件'
+msg_local='用戶端使用本機作業系統開機'
+msg_reboot='現在重新啟動用戶端電腦'
+msg_shutdown='現在關閉用戶端電腦'
+msg_Wake_on_LAN='現在利用Wake-on-LAN開啟用戶端電腦'
+msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+msg_title_set_all_clients='設定所有的用戶端機器?'
+msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
+msg_select_all_clients_or_select_part_them='你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+msg_select_all_clients='選擇所有的用戶端'
+msg_select_clients='根據IP或是MAC位址選擇部份用戶端'
+msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+msg_choose_the_action='選擇動作為'
+msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+msg_reveal_pxe_menus='顯示用戶端電腦某些已經被隱藏的開機選單'
+msg_setdefault_pxe_menu='設定用戶端電腦的開機預設選單'
+msg_title_hide='隱藏用戶端電腦的那一個開機選單?'
+msg_hide_list_des='隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+msg_reveal_title='顯示用戶端電腦的那一個開機選單?'
+msg_reveal_list_des='顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+msg_setdefault_title='哪一個是用戶端電腦的開機預設選單?'
+msg_setdefault_list_des='選定用戶端電腦開機時的預設選單'
+msg_choose_netinstall_imag='選擇要經由網路安裝的Linux套件'
+msg_nchc_clonezilla='再生龍(Clonezilla) - 開放原始碼再生還原系統'
+msg_nchc_drbl='企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+msg_nchc_free_software_labs='再生龍 - 國網中心自由軟體實驗室 - 台灣'
+msg_specify_hosts='指定用戶端機器'
+msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_list='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_grp='經由MAC位址群組來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_list='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_grp='經由IP位址群組來指定DRBL用戶端電腦的模式'
+msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
+msg_hint_for_not_fdisk='*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+msg_ocs_param_c='用戶端電腦在開始複製前會再次確認是否要執行'
+msg_ocs_param_s='用戶端電腦開機時略去硬體偵測'
+msg_ocs_param_f='當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+msg_ocs_param_j='使用sfdisk來產生分割區而不用dd'
+msg_ocs_param_j0='使用dd來產生分割區而不用sfdisk'
+msg_ocs_param_k='不在用戶端電腦硬碟再產生分割區'
+msg_ocs_param_t='用戶端電腦不再復原MBR (Mater Boot Record)'
+msg_ocs_param_e='用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+msg_ocs_param_y='伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+msg_ocs_param_y0='伺服器將總是提供再生模式給用戶端-預設本機開機'
+msg_ocs_param_y1='伺服器將總是提供再生模式給用戶端-預設是還原'
+msg_ocs_param_y2='伺服器將總是提供再生模式給用戶端-預設是DRBL'
+msg_ocs_param_z0='不壓縮(最快但是最大的印象檔)'
+msg_ocs_param_z1='使用gzip壓縮(快速但是較小的印象檔)'
+msg_ocs_param_z2='使用bzip2壓縮(最慢但是最小的印象檔)'
+msg_ocs_param_z3='使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+msg_ocs_param_g_auto='用戶端電腦重新在它的硬碟的MBR中安裝grub'
+msg_ocs_param_p_true='用戶端複製完畢時不做其他任何動作'
+msg_ocs_param_p_poweroff='用戶端複製完畢後關機'
+msg_ocs_param_p_reboot='用戶端複製完畢後重新開機'
+msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+# Since drbl.conf is loaded before language file is loaded, we explicitly show it as $POST_RUN_DIR
+msg_ocs_param_o0='用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
+msg_ocs_param_o1='用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
+msg_ocs_param_hn0='復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
+msg_ocs_param_hn1='復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+msg_ocs_param_r='在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+msg_ocs_param_x='在群播還原時使用全雙工網路'
+msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+msg_ocs_param_skip='不選用此選項'
+msg_ocs_param_notfs_ok='假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
+msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n 可用的參數有: \n'
+msg_no_network_installation_img='找不到網路安裝的印象檔!'
+msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+msg_start_clonezilla_mode='啟動再生龍模式'
+msg_choose_mode='選定模式'
+msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+msg_clonezilla_restore_disk='還原用戶端電腦的整個硬碟'
+msg_clonezilla_save_parts='儲存用戶端電腦的硬碟分割區'
+msg_clonezilla_restore_parts='還原用戶端電腦的硬碟分割區'
+msg_clonezilla_save_hda1='儲存用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_restore_hda1='還原用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_selec_in_client='在用戶端選擇儲或還原(限點播模式)'
+msg_choose_the_mode_to_restore_disk='選擇還原用戶端電腦的整個硬碟時的模式'
+msg_choose_the_mode_to_restore_parts='選擇還原用戶端電腦的硬碟分割區時的模式'
+msg_choose_the_mode_to_restore_hda1='選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+msg_abandon_hda1='注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+msg_unicast_restore='點播還原(unicast)'
+msg_multicast_restore='群播還原(multicast)'
+msg_choose_the_image_to_restore='選擇印象檔來做還原'
+msg_time_to_wait='設定時間來等待用戶端電腦開始複製'
+msg_clients_to_wait='直接設定用戶端電腦的數量來複製'
+msg_clients_time_to_wait='設定用戶端數量來複製，並且給定最長等待時間'
+msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議大於或等於$SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='你必須輸入一個名稱'
+msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+msg_you_must_input_partition='你必須輸入一個分割區'
+msg_please_do_it_again='請再做一次'
+msg_choose_the='選擇這個'
+msg_to_save='來存(只顯示未被掛載的)'
+msg_the_image='這個印象檔名稱'
+msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+msg_do_you_want_to_replace='你是否要覆蓋它'
+msg_linux_disk_MS_mapping='硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
+msg_linux_parts_MS_mapping='分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
+msg_choose_disks_to_save='選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
+msg_choose_parts_to_save='選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
+msg_choose_the_disks_to_restore='選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
+msg_choose_the_parts_to_restore='選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
+msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
+msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+msg_no_modification='略去任何修改'
+msg_install_via_network='經由網路安裝'
+msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(大於或等於2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+msg_restart_drbl_all_services='重新啟動DRBL伺服器中的DRBL相關服務'
+msg_add_drbl_all_services='加上DRBL伺服器中的所有DRBL相關服務'
+msg_del_drbl_all_services='移除DRBL伺服器中的所有DRBL相關服務'
+msg_choose_action='選擇動作為'
+msg_login_switch='切換DRBL客戶端機器的圖形介面登入模式'
+msg_normal_login='一般登入(要求使用者輸入帳號密碼來登入)'
+msg_auto_login='自動登入'
+msg_timed_login='限時登入'
+msg_turn_on_client_to_make_template='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+msg_turn_on_client_to_clone='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+msg_turn_on_client_to_select_clone_type='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+msg_client_job_are_logged_in='用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+msg_client_sfdisk_log_are_in='用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+msg_set_the_clients_root_passwd='設定用戶端管理者(root)密碼'
+msg_new_passwd_prompt='輸入新的密碼: (螢幕上只會出現星號*)'
+msg_do_you_want_set_yum_repo='你要不要自己選yum的儲藏庫?'
+msg_set_yum_conf_yes_prompt='如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+msg_set_yum_conf_no_prompt='如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+msg_need_lynx_to_parse_config='需要lynx來判斷相關的網址，現在安裝lynx...'
+msg_need_curl_etc_to_parse_config='需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+msg_try_to_update_some_pkgs='如果找到新版的程式，嘗試升級某些需要的程式...'
+msg_force_to_upgrade_some_pkgs='嘗試強迫升級某些程式...'
+msg_install_net_install_images='安裝某些Linux套件的網路安裝印象檔...'
+msg_clean_dhcpd_lease='強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+msg_client_reautologin='強迫用戶端重新自動登入' 
+msg_clean_autologin_account='移除所有自動登入帳號(全部機器)'
+msg_reset_autologin_account='還原所有自動登入的環境為初始預設(全部機器)'
+msg_re_deploy='把伺服器的檔案更新到用戶端中(全部機器)'
+msg_dcs_others='其他模式或是指令'
+msg_dcs_more_modes='更多其他模式或是指令'
+msg_2_kernel_availables='有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+msg_from_this_drbl_server='來自於這台DRBL伺服器'
+msg_from_apt_repository='來自於apt的儲藏庫'
+msg_from_ayo_repository='來自於apt或是yum的儲藏庫'
+msg_install_kernel_for_clients='安裝用戶端電腦所需的核心'
+msg_which_kernel_do_you_perfer='你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+msg_you_choose='你選擇'
+msg_chosen_kernel='選定的核心為'
+msg_not_available_enter_again='找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+msg_hosts_allow_deny_is_set='警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='你必須確認這些用戶端的電腦:'
+msg_can_access_this_DRBL_server='可以連接到這台DRBL伺服器!'
+msg_otherwise_client_fail_to_boot='否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+msg_do_not_create_part='用戶端不再產生硬碟分割表!'
+msg_do_not_restore_mbr='用戶端不再復原MBR!'
+msg_you_have_to_input_image_names_in_client='在用戶端的電腦選擇還原的印象檔!'
+msg_title_input_save_image_name_in_server='現在輸入印象檔與範本裝置名稱 ?'
+msg_ask_if_input_save_image_name_in_server='你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+msg_input_image_name='輸入一個名稱來存這個印象檔:'
+msg_input_device_name='複製範本機中的那個裝置 ?'
+msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='將在目的碟產生分割區...'
+msg_partition_table_for_target_dev='要產生的目的碟分割區的表'
+msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+msg_are_u_sure_u_want_to_continue='你確認要繼續執行'
+msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+msg_different_type_of_input_devs='你輸入的裝置兩者屬於不同類型'
+msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
+msg_do_you_want_to_clone_the_boot_loader_to='你是否要複製開機載入程式(boot loader)到'
+msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
+msg_skip_clone_boot_loader='略去複製開機載入程式(boot loader)'
+msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+msg_failed_to_clone_the_boot_loader='未能複製開機載入程式(boot loader)'
+msg_now_run_this_cmd_in_target_machine='現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
+msg_if_clone_the_partition_to_hda1_in_target_machine='例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
+msg_if_clone_the_disk_to_hda_in_target_machine='例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+msg_this_is_for_source_machine='這是在來源機器上執行'
+msg_this_is_for_target_machine='這是在目的機器上執行'
+msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+msg_then_reboot_this_server='然後把這台電腦重新開機，以便使用新的核心。'
+msg_make_audio_open='開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_audio_close='不開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_plugdev_open='開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_make_plugdev_close='不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_restart_prompt_for_audio='因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+msg_restart_prompt_for_plugdev='因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+msg_restart_prompt_for_dev='因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+msg_run_update_plugdev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+msg_run_update_dev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+msg_no_autologin_account='未找到自動登入帳號'
+msg_are_you_sure_reset_autologin_home_dir='你確認你要將自動登入帳號的環境重設為初始預設狀態'
+msg_warning_home_dir_will_be_deleted='警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+msg_these_accounts_are='這些帳號是'
+msg_ok_let_do_it='OK, 我們繼續做吧!'
+msg_do_not_reset_autologin_home_dir='不要重設自動登入帳號的家目錄'
+msg_created_autologin_ID_passwd_file="產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+msg_drbl_clonezilla_switch='切換企鵝龍單一系統印象檔與再生龍模式'
+msg_drbl_mode_switch='切換企鵝龍機制'
+msg_drbl_mode_switch_long="有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+msg_drbl_mode_0='使用完全企鵝龍模式'
+msg_drbl_mode_1='使用企鵝龍單一系統印象檔模式'
+msg_drbl_mode_2='不提供無碟GNU/Linux服務'
+msg_clonezilla_mode_switch='切換再生龍機制'
+msg_clonezilla_mode_switch_long='本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+msg_clonezilla_mode_0='使用完全再生龍模式'
+msg_clonezilla_mode_1='使用再生龍盒模式'
+msg_clonezilla_mode_2='不提供再生龍服務'
+msg_r_u_sure_want_to_del_autologin_accounts='你確認要移除這些自動登入帳號?'
+msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+msg_do_not_del_accounts='不要移除這些帳號'
+msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+msg_wol_3='3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+msg_wol_4="4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+msg_no_kernel_rpm_is_available='無法在這些地方找到核心的RPM檔:'
+msg_internet_connection='1. 你的網際網路連線正常。'
+msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+msg_enter_1_or_press_enter_to_view='輸入<1>或是按<Enter>鍵來看目前收集的狀態。'
+msg_enter_2_or_press_q_to_quit='輸入<2>或是<q>來結束收集。'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+msg_What_the_win_hostname_prefix='所還原的MS windows主機名稱的前置名稱是'
+msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+msg_install_glibc_etc_arch_by_yourself='如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+msg_prepare_kernel_for_clients='準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+msg_some_necessary_pkgs_not_installed='警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+msg_reset_all_existing_urpmi_setting='警告! 我們必須重新設定目前系統中的urpmi!'
+msg_some_required_pkgs_not_installed='這些必要的程式並沒有安裝'
+msg_use_drblsrv_instead="如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+msg_continue_may_not_work='如果你繼續的話，這個DRBL系統可能無法正常運作!'
+msg_switch_pxe_bg_mode='切換用戶端電腦PXE開機選單模式'
+msg_pxemenu_text='用戶端使用文字模式的開機選單'
+msg_pxemenu_graphic='用戶端使用圖形模式的開機選單'
+msg_only_one_kernel_meets_requirement='只有一個核心符合你設定的條件'
+msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+msg_this_might_take_several_minutes='這可能會需要一點時間...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+msg_ocs_iso_too_big_for_DVD='要產生的ISO檔太大，無法放到一片DVD上.'
+msg_unable_to_create_clonezilla_img_iso='無法產生這個再生龍還原專用光碟'
+msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+msg_format_as_FAT_16_32='如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+msg_this_is_disk_usage_status='這是磁碟的使用狀態'
+msg_boot_clonezilla_live_dev='現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+msg_clone_finished_choose_to='下一步要'
+msg_enter_cml='進入命令列'
+msg_clonezilla_is_free_and_no_warranty='**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
+msg_to_use_clonezilla_to_save_image_again='要再使用再生龍來存印象檔'
+msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+msg_if_src_part_is_ntfs='如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+msg_to_see_this_ocs_live_help_msg='注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+msg_image_source_for_ocs_live="如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+msg_modify_grub_config_if_necessary="你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+msg_this_script_will_create_SL_diskless='這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+msg_RAM_size_for_SL_drbl_client='建議你的用戶端電腦的記憶體最少要'
+msg_image_saved_from_dd='這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+msg_cons_for_dd_clone='使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+msg_will_be_inefficent_and_slow='這樣將會非常沒有效率，而且可能需要很久的時間'
+msg_fs_not_supported_by_partimage_ntfsclone='這個檔案系統partimage或是ntfsclone並不支援'
+msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+msg_target_dev_has_this_partition_table='你要寫入的硬碟有這樣的資訊表'
+msg_let_me_ask_you_again='容我再問你一次'
+msg_unable_to_mnt_ocsroot="無法掛載到$ocsroot"
+msg_mount_ocsroot_img_hint_short_des='掛載再生龍印象檔的目錄'
+msg_mount_ocsroo_img_hint_long_des="掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
+msg_mount_local_dev='掛載本機的分割區'
+msg_mount_sshfs='掛載SSH伺服器的目錄'
+msg_mount_smbfs='掛載網路芳鄰伺服器的目錄'
+msg_mount_nfs='掛載NFS伺服器的目錄'
+msg_mount_ftpfs='掛載FTP伺服器的目錄'
+msg_do_it_manually='自行手動調整'
+msg_skip_this_use_existing_ocsroot="使用現有的$ocsroot"
+msg_device_to_mount_as_ocsroot_do_not_mount_target_dev="掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
+msg_ip_address_or_FQDN_of_server='伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
+msg_smb_domain_in_server='網路芳鄰伺服器上的網域名稱'
+msg_if_no_smb_domain_skip_this='如果伺服器上沒有此設定，你可以略去此選項'
+msg_account_in_server='使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
+msg_sshfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
+msg_ftpfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
+msg_now_you_have_to_enter_passwd='現在你必須輸入對於這個帳號的密碼'
+msg_confirm_ssh_server_might_be_necessary='如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
+msg_ocs_img_dir_path="要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
+msg_enter_another_shell_hint='進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
+msg_existing_setting_is='現有的設定是'
+msg_start_clonezilla='使用再生龍'
+msg_start_clonezilla_or_enter_shell='使用再生龍或是登入(命令列) ?'
+msg_writable_dev_ex_usb_stick='可寫裝置如硬碟/隨身碟'
+msg_writable_fs_ex_nfs_smbfs='可寫網路磁碟如NFS/SMBFS'
+msg_readonly_dev_ex_CD='唯讀裝置如CD'
+msg_writable_dev_ramdisk='記憶體，關機後資料就消失。***不建議***'
+msg_warning_mount_ntfs_writable='警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
+msg_df_report='目前系統的掛載狀態'
+msg_hint_assign_IP_group="提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_hint_assign_MAC_group="提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_device_image_device_clone='兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
+msg_device_image_clone='硬碟/分割區[存到/來至]印象檔'
+msg_device_device_clone='硬碟/分割區複製到硬碟/分割區'
+msg_disk_to_local_disk='複製本機硬碟到本機硬碟'
+msg_disk_to_remote_disk='複製本機硬碟到它機硬碟'
+msg_part_to_local_part='複製本機分割區到本機分割區'
+msg_part_to_remote_part='複製本機分割區到它機分割區'
+msg_local_source_disk='選擇本機硬碟當來源母碟'
+msg_local_target_disk='選擇本機硬碟當目的碟'
+msg_local_source_part='選擇本機分割區當來源分割區'
+msg_local_target_part='選擇本機分割區當目的分割區'
+msg_ocs_onthefly_advanced_extra_param='直接複製再生龍模式額外的進階參數'
+msg_ocs_onthefly_param_g='在目地碟的開機磁區重新安裝grub'
+msg_ocs_onthefly_param_e='在目的碟的分割區調整檔案系統大小符合分割區大小'
+msg_ocs_onthefly_param_nogui='使用partimage的時候不顯示圖形介面'
+msg_ocs_onthefly_param_n='不要在目地碟的開機磁區產生分割區的分配表'
+msg_ocs_onthefly_param_m='不要複製開機管理程式(boot loader)'
+msg_ocs_onthefly_param_o='強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
+msg_ocs_onthefly_param_b='使用批次模式(危險!務必先確認設定正確)'
+msg_ocs_onthefly_param_v='印出詳細的資訊'
+msg_only_i686_kernel_available_in_centos_5='目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
+msg_do_you_want_to_clean_all_stale_mac_cfg="在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
+msg_something_went_wrong_when_start_drbl_related_srv='啟動DRBL相關服務的時候出現一些狀況!'
+msg_you_can_try_to_run_the_following_again='你可以嘗試再度執行以下指令看看'
+msg_try_drblsrv_offline="如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
+msg_very_unstable='非常不穩定'
+msg_not_stable='不穩定'
+msg_not_secure='不安全'
+msg_no_nic_is_found="找不到支援的網路卡."
+msg_choose_nic="請選擇一個網路卡\n(如果你有兩張或更多)"
+msg_send_dhcp_request_from="從網路卡送出 DHCP 要求:"
+msg_enter_IP_add_for_this_nic="請指定這張網卡的 IP 位址: "
+msg_enter_netmask_for_this_nic="請指定這張網卡的網路遮罩(Netmask): "
+msg_enter_default_gateway="請指定通訊閘(Gateway) "
+msg_enter_dns_server="請指定網域名稱伺服器(Nameserver) "
+msg_put_dnsserver_to_resolv_conf="將 Nameserver 設定至 /etc/resolv.conf "
+msg_append_dnsserver_to_resolv_conf="增設 Nameserver 至 /etc/resolv.conf :"
+msg_Network_config="網路設定"
+msg_choose_mode_to_setup_net="選擇你要的模式來設定這台電腦的網路"
+msg_use_dhcp_broadcast="使用DHCP來設定"
+msg_use_static_ip="設定固定IP位址"
+msg_use_pppoe_conf="使用PPPoE來設定"
+msg_setup_network_first='先設定網路'
+msg_hint_multiple_choice_select_by_space='///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
+msg_network_is_not_configured='網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
+msg_network_is_already_configured='發信網路已經設定了! 這台機器可用的IP位址是'
+
+#-----------------------------------------
+# some words
+msg_text_Enter='輸入'
+msg_text_for='對於'
+msg_Got_it='找到了'
+msg_Warning='警告'
+msg_uppercase_Warning='警告'
+msg_NOT_found='未找到'
+msg_Done='完成'
+msg_please='請'
+msg_browse='瀏覽'
+msg_or='或是'
+msg_for_more_details='更詳細的資料'
+msg_Failed_to_get='未能抓取'
+msg_Failed_to_install='未能安裝'
+msg_done='完成'
+msg_note='注意'
+msg_and='與'
+msg_clonezilla='再生龍'
+msg_error='錯誤'
+msg_restore='還原'
+msg_txt_check='檢查'
+msg_ex='例如'
+msg_exit='退出'
+msg_poweroff='關機'
+msg_reboot='重新開機'
+msg_then='然後'
+msg_unknown='未知'
+msg_experimental='實驗性質'
+msg_failed="失敗"
Index: drbl_ui/backup/qqWizard.py
===================================================================
--- drbl_ui/backup/qqWizard.py	(revision 20)
+++ drbl_ui/backup/qqWizard.py	(revision 20)
@@ -0,0 +1,2823 @@
+import  wx
+import  wx.wizard as wiz
+import	sys
+import	os
+import	gettext
+import	string
+import	subprocess
+import	time
+from subprocess import Popen
+import	commands
+from wx.lib.mixins.listctrl import CheckListCtrlMixin
+import  wx.lib.filebrowsebutton as filebrowse
+
+cat = gettext.GNUTranslations(open(sys.argv[1]))
+_ = cat.gettext
+
+global command_log
+command_log = ''
+global FinalArgs 
+FinalArgs = ['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''] 
+#global client_pxe_cfg_filename
+#client_pxe_cfg_filename = ''
+global PXE_CFG_Files
+PXE_CFG_Files = []
+global Labels
+Labels = []
+#global selected_hosts, selected_clients, lenghth
+
+#----------------------------------------------------------------------
+ClonezillaStartSaveArgs = {
+1: ("-q", _('msg_ocs_param_q')),
+2: ("-c", _('msg_ocs_param_c')),
+3: ("-nogui", _('msg_ocs_param_nogui')),
+4: ("-a", _('msg_ocs_param_a')),
+5: ("-f", _('msg_ocs_param_f')),
+6: ("-s", _('msg_ocs_param_s')),
+7: ("-ntfs-ok", _('msg_ocs_param_notfs_ok')),
+}
+
+#----------------------------------------------------------------------
+ClonezillaStartRestoreArgs = {
+1: ("-g auto", _('msg_ocs_param_g_auto')),
+2: ("-x", _('msg_ocs_param_x')),
+3: ("-brdcst", _('msg_ocs_param_broadcast')),
+4: ("-v", _('msg_ocs_param_v')),
+5: ("-nogui", _('msg_ocs_param_nogui')),
+6: ("-c", _('msg_ocs_param_c')),
+7: ("-u", _('msg_ocs_param_u')),
+8: ("-t", _('msg_ocs_param_t')),
+9: ("-j0", _('msg_ocs_param_j0')),
+10: ("-ns", _('msg_ocs_param_ns')),
+11: ("-k", _('msg_ocs_param_k')),
+12: ("-r", _('msg_ocs_param_r')),
+13: ("-e", _('msg_ocs_param_e')),
+14: ("-f", _('msg_ocs_param_f')),
+15: ("-s", _('msg_ocs_param_s')),
+16: ("-a", _('msg_ocs_param_a')),
+17: ("-o", _('msg_ocs_param_o')),
+18: ("-hn0", _('msg_ocs_param_hn0')),
+19: ("-hn1", _('msg_ocs_param_hn1')),
+}
+
+#----------------------------------------------------------------------
+class CSSCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartSaveArgs[data][0]
+        if flag:
+	    FinalArgs[index+3] = arg
+        else:
+	    FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+class CSRCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartRestoreArgs[data][0]
+        if flag:
+	    if index == 18:
+		FinalArgs[index+4] = arg
+	    else:
+		FinalArgs[index+3] = arg
+        else:
+	    if index == 18:
+		FinalArgs[index+4] = ''
+	    else:
+		FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SetAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.cb = wx.CheckBox(self, -1, _('msg_title_set_all_clients'))
+        self.cb.SetValue(True)
+        self.sizer.Add(self.cb, 0, wx.ALL, 5)
+	FinalArgs[1] = '-nl'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if self.cb.GetValue():
+	    FinalArgs[1] = '-nl'
+	    next = next.GetNext()
+	else:
+	    FinalArgs[1] = '-h'
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SelectOneClientPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.selected_hosts = []
+        self.selected_clients = ''
+        self.lenghth = 0
+        self.filename_temp = []
+
+        file = open("/home/chris/ip_list", "r")
+        ip_list = file.read()
+        tokens = ("%s" % ip_list).split()
+        self.lenghth = len(tokens)
+        for i in range(0,len(tokens)):
+                self.selected_hosts.insert(len(tokens),"")
+                i = i+1
+        file.close()
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,590),
+                tokens, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[1] = '-h'
+	FinalArgs[2] = "\"" + tokens[0] + "\""
+
+    def EvtRadioBox(self, event):
+	FinalArgs[2] = ""
+	FinalArgs[2] = "\"" + event.GetString() + "\""
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        return next
+
+    def GetPrev(self):
+	FinalArgs[1] = ""
+	FinalArgs[2] = ""
+        return self.prev
+
+#----------------------------------------------------------------------
+class SelectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.selected_hosts = []
+	self.selected_clients = ''
+	self.lenghth = 0
+	self.filename_temp = []
+	
+        g = open("/home/chris/ip_list", "r")
+        ip_list = g.read()
+        tokens = ("%s" % ip_list).split()
+        self.lenghth = len(tokens)
+        for i in range(0,len(tokens)):
+                self.selected_hosts.insert(len(tokens),"")
+                i = i+1
+        g.close()
+
+        lb = wx.CheckListBox(self, -1, (35,50), (290,250), tokens)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, lb)
+        lb.SetSelection(0)
+        counts = lb.GetCount()
+        self.lb = lb
+        pos = lb.GetPosition().x + lb.GetSize().width + 25
+
+    def EvtCheckListBox(self, event):
+	j = 0
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+            del self.selected_hosts[index]
+            self.selected_hosts.insert(index,label)
+        if not (self.lb.IsChecked(index)):
+            self.selected_hosts.remove(label)
+            self.selected_hosts.insert(index,'')
+        self.lb.SetSelection(index)    #so that (un)checking also selects (moves the highlight)
+	self.selected_clients = ''
+	clients_pxe_cfg_filename = ''
+	self.filename_temp = []
+	while j < self.lenghth:
+	    if self.selected_hosts[j] != '':
+	        self.selected_clients = self.selected_clients + self.selected_hosts[j] + ' '
+		ip = self.selected_hosts[j]
+		ip_divide = ("%s" % ip).split(".")
+		clients_pxe_cfg_filename = string.upper("%x" % int(ip_divide[0],10) + "%x" % int(ip_divide[1],10) + "%x" % int(ip_divide[2],10) + "%x" % int(ip_divide[3],10))
+		self.filename_temp.append(clients_pxe_cfg_filename)
+	    j = j+1
+        self.selected_clients = '\"' + self.selected_clients + '\"'
+        FinalArgs[2] = self.selected_clients
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global PXE_CFG_Files
+	if self.selected_clients == '\"\"' or self.selected_clients == '':
+	    FinalArgs[1] = '-nl'
+	    FinalArgs[2] = ''
+	else:
+	    FinalArgs[1] = '-h'
+	    PXE_CFG_Files[:] = self.filename_temp[:]
+        return self.next
+
+    def GetPrev(self):
+        self.selected_clients = ''
+        clients_pxe_cfg_filename = ''
+        self.filename_temp = []
+        return self.prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxGraPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_remote_linux_graphic'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/dcs'
+	FinalArgs[3] = 'remote-linux-gra'
+	self.j = 0
+	self.command = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log
+	self.j = self.j + 1
+	for i in range(0,36):
+	    if FinalArgs[i] != '' and self.j == 2:
+		self.command = self.command + FinalArgs[i] + ' '
+	if self.j == 2:
+	    command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class RemoteLinuxTxtPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_linux_text'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-linux-txt'
+        self.j = 0
+        self.command = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class TerminalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_thin_client'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'terminal'
+	self.j = 0
+	self.command = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class RemoteMemTestPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_memtest'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-memtest'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class RemotefdosPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_remote_fdos'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-fdos'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_save_disk'), _('msg_clonezilla_save_parts')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,90),
+                ModeList, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[12] = 'startdisk'
+	FinalArgs[13] = 'save'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[12] = 'startdisk'
+		FinalArgs[13] = 'save'
+        if event.GetInt() == 1:
+                FinalArgs[12] = 'startpart'
+		FinalArgs[13] = 'save'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_ask_if_input_save_image_name_in_server'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+
+        self.cb = wx.CheckBox(self, -1, 'YES',(20,130)) # not translated
+        self.cb.SetValue(True)
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if not self.cb.GetValue():
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[14] = self.text_img.GetValue()
+	FinalArgs[15] = self.text_dev.GetValue()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSSCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))	#not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)	#not translated
+
+        for key, data in ClonezillaStartSaveArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        if self.list.IsChecked(0) == self.list.IsChecked(1) == self.list.IsChecked(2) == self.list.IsChecked(3) == self.list.IsChecked(4) == self.list.IsChecked(5) == 0:
+            next = 0
+        return next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'),
+                      _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150),
+                ArgList, 1, wx.RA_SPECIFY_COLS
+                )
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[9] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[9] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[9] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[9] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[9] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [ _('msg_ocs_param_z0'), _('msg_ocs_param_z1'), _('msg_ocs_param_z2'), _('msg_ocs_param_z3')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (340,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[10] = '-z3'
+	self.j = 0
+	self.command = ''
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[10] = '-z0'
+        if event.GetSelection() == 1:
+                FinalArgs[10] = '-z1'
+        if event.GetSelection() == 2:
+                FinalArgs[10] = '-z2'
+        if event.GetSelection() == 3:
+                FinalArgs[10] = '-z3'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+	if FinalArgs[1] == '-nl':
+	    FinalArgs[1] = ''
+        if self.j == 2:
+            for i in range(0,36):
+                if FinalArgs[i] != '':
+                    self.command = self.command + FinalArgs[i] + ' '
+	    #print 'popen starts'
+	    #fo = os.popen('sudo %s' % self.command)
+	    #print '3 seconds..'
+	    #time.sleep(3)
+	    #print ('this is fo: %s' % fo)
+            #command_log = command_log + fo.readline()
+	    #-------------------------------------------------------------------------------------------------------------------------
+	    #test = Popen(['sudo', '%s'.strip() % self.command], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+	    #time.sleep(5)
+	    #print self.command
+	    #print test.stdout.read()
+	    #while :
+		#time.sleep(1)
+		#print test.readline()
+	    #-------------------------------------------------------
+	    file = open('tmp.log','w')
+	    os.system('sudo %s > tmp.log' % self.command)
+	    time.sleep(6)
+	    file.close()
+	    file = open('tmp.log')
+	    while True:
+		line = file.readline()
+		if len(line) == 0: # Zero length indicates EOF
+        	    break
+		command_log = command_log + line
+	    file.close()
+	    os.remove('tmp.log')
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        ModeList = [_('msg_clonezilla_restore_disk'), _('msg_clonezilla_restore_parts')]
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+        FinalArgs[32] = 'startdisk'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[32] = 'startdisk'
+        if event.GetInt() == 1:
+                FinalArgs[32] = 'startpart'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.list = CSRCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT) #not translated
+
+        for key, data in ClonezillaStartRestoreArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	j = 0
+	check_sum = 0
+        next = self.next
+	for j in range(0,18):
+	    check_sum = check_sum + self.list.IsChecked(j)
+	if check_sum == 0: # if user didn't check any box, then return NULL.
+            next = 0
+	if (self.list.IsChecked(17) or self.list.IsChecked(18)):
+	    next = self.next
+	else:
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self,-1,_('msg_write_MS_WIN_is_necessary'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_What_the_win_hostname_prefix'), (5, 80))
+        self.text = wx.TextCtrl(self, -1, "PC", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[20] == '-hn0' and FinalArgs[22] == '-hn1':
+	    FinalArgs[21] = FinalArgs[23] = self.text.GetValue()
+	elif FinalArgs[20] == '-hn0'and FinalArgs[22] != '-hn1':
+	    FinalArgs[21] =  self.text.GetValue()
+	elif FinalArgs[22] == '-hn1' and FinalArgs[20] != '-hn0':
+	    FinalArgs[23] = self.text.GetValue()
+        elif FinalArgs[20] != '-hn0' and FinalArgs[22] != '-hn1':
+            FinalArgs[21] = FinalArgs[23] = ''
+	return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+	wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[24] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[24] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[24] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[24] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        FinalArgs[25] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[25] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[25] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[25] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[25] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[32] == 'startpart' and FinalArgs[9] == '-u':
+	    next = next.GetNext()
+	elif FinalArgs[9] == '-u':
+	    next = next.GetNext()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_choose_the_image_to_restore'), (5,80))
+        self.fbb = filebrowse.FileBrowseButton(self, -1, pos=(50,150), size=(350, -1), buttonText='browse', toolTip='Type filename or click browse to choose file', fileMask='*.img', changeCallback = self.fbbCallback)
+
+    def fbbCallback(self, evt):
+        FinalArgs[34] = evt.GetString()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[32] == 'startpart':
+	    next = next.GetNext()
+	elif FinalArgs[32] == 'startdisk':
+	    next = self.next
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8a(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_choose_the_disks_to_restore'), (5,80))
+        self.text = wx.TextCtrl(self, -1, "hda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[9] == '-u':
+	    FinalArgs[35] = ''
+	    next = next.GetNext()
+	elif FinalArgs[9] == '' and FinalArgs[32] == 'startdisk':
+	    FinalArgs[35] = self.text.GetValue()
+	    next = next.GetNext()
+	elif FinalArgs[9] == '' and FinalArgs[32] == 'startpart':
+	    next = self.next
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8b(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_choose_the_parts_to_restore'), (5,80))
+        self.text = wx.TextCtrl(self, -1, "hda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        if FinalArgs[9] == '-u':
+            FinalArgs[35] = ''
+	    next = next.GetNext()
+	elif FinalArgs[9] == '' and FinalArgs[32] == 'startdisk':
+	    next = self.next
+        elif FinalArgs[9] == '' and FinalArgs[32] == 'startpart':
+            FinalArgs[35] = self.text.GetValue()
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9a(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_disk'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[33] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        if FinalArgs[9] == '-u':
+            FinalArgs[33] = 'restore'
+	    next = next.GetNext()
+	    next = next.GetNext()
+	elif FinalArgs[9]=='' and FinalArgs[32] == 'startpart':
+	    next = self.next
+	elif FinalArgs[9]=='' and FinalArgs[32] == 'startdisk' and FinalArgs[33] == 'restore':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	    next = next.GetNext()
+	elif FinalArgs[9]=='' and FinalArgs[32] == 'startdisk' and FinalArgs[33] == 'multicast_restore':
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9b(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_parts'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[33] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        if FinalArgs[9] == '-u':
+            FinalArgs[33] = 'restore'
+            next = next.GetNext()
+            #next = next.GetNext()
+            #next = next.GetNext()
+	elif FinalArgs[9] =='' and FinalArgs[32] == 'startdisk':
+	    next = self.next
+	elif FinalArgs[9] =='' and FinalArgs[32] == 'startpart' and FinalArgs[33] == 'restore':
+	    next = next.GetNext()
+	    next = next.GetNext()
+	elif FinalArgs[9] =='' and FinalArgs[32] == 'startpart' and FinalArgs[33] == 'multicast_restore':
+	    next = self.next
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage10(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_clients_time_to_wait'), _('msg_time_to_wait'), _('msg_clients_to_wait')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35,50), (350, 150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[26] = '--clients-to-wait'
+	FinalArgs[28] = '--max-time-to-wait'
+
+    def EvtRadioBox(self, event):
+	if event.GetInt() == 0:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 1:
+	    FinalArgs[26] = ''
+	    FinalArgs[28] = '--max-time-to-wait'
+	elif event.GetInt() == 2:
+	    FinalArgs[26] = '--clients-to-wait'
+	    FinalArgs[28] = ''
+ 
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[33] == 'restore':
+            FinalArgs[26] = ''
+            FinalArgs[28] = ''
+	    next = self.next
+	if FinalArgs[26] == '' and FinalArgs[28] != '':
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	if FinalArgs[32] == 'startdisk':
+	  prev = prev.GetPrev()
+	  prev = prev.GetPrev()
+	elif FinalArgs[32] == 'startpart':
+	  prev = self.prev
+        return prev
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage11(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_how_many_clients_to_restore'), (20, 80))
+	self.text = wx.TextCtrl(self, -1, '5', (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[26] != '':
+	    FinalArgs[27] = self.text.GetValue()
+	    next = self.next
+	if FinalArgs[28] == '': 
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage12(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.j = 0
+        self.command = ''
+        wx.StaticText(self, -1, _('msg_max_time_to_wait_sec'), (20, 80))
+        self.text = wx.TextCtrl(self, -1, "300", (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	if FinalArgs[28] != '':
+	    FinalArgs[29] = self.text.GetValue()
+        global command_log
+        self.j = self.j + 1
+        if FinalArgs[1] == '-nl':
+            FinalArgs[1] = ''
+        if self.j == 2:
+            for i in range(0,36):
+                if FinalArgs[i] != '':
+                    self.command = self.command + FinalArgs[i] + ' '
+            file = open('tmp.log','w')
+            os.system('sudo %s > tmp.log' % self.command)
+            time.sleep(6)
+            file.close()
+            file = open('tmp.log')
+            while True:
+                line = file.readline()
+                if len(line) == 0: # Zero length indicates EOF
+                    break
+                command_log = command_log + line
+            file.close()
+            os.remove('tmp.log')
+	return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+#class ClonezillaStartRestorePage13(wiz.PyWizardPage):
+    #def __init__(self, parent, title):
+        #wiz.PyWizardPage.__init__(self, parent)
+        #self.next = self.prev = None
+        #self.sizer = makePageTitle(self, title)
+
+    #def SetNext(self, next):
+        #self.next = next
+
+    #def SetPrev(self, prev):
+        #self.prev = prev
+
+    #def GetNext(self):
+        #return self.next
+
+    #def GetPrev(self):
+        #return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,100), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[5] = '-y1'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[5] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[5] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[5] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[5] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        self.j = 0
+        self.command = ''
+        FinalArgs[6] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[6] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[6] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[6] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[6] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[7] = 'select_in_client'
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStopPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'),(50,100))
+	self.j = 0
+	self.command = ''
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LocalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_local'),(50,100))
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RebootPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reboot'),(50,100))
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ShutdownPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_shutdown'),(50,100))
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class WakeOnLanPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_Wake_on_LAN'), (50,100))
+	self.command = 0
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'Wake-on-LAN'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	ModeList = [_('msg_hide_pxe_menus'), _('msg_reveal_pxe_menus'), _('msg_setdefault_pxe_menu')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_action'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+        FinalArgs[3] = 'hide'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+	    FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+	    FinalArgs[3] = 'hide'
+        elif event.GetInt() == 1:
+	    FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+	    FinalArgs[3] = 'reveal'
+	elif event.GetInt() == 2:
+	    FinalArgs[0] = '/opt/drbl/sbin/set-default-pxe-img'
+	    FinalArgs[3] = '-i'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global Labels
+	index = 0
+	next = self.next
+	self.j = self.j + 1
+	if self.j == 2:
+	    if FinalArgs[3] == 'hide':
+		file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+		content = file.read()
+		for word in content.split():
+		    if word == 'label':
+                	if content.split()[index + 4] != '#':
+			    Labels.append(content.split()[index + 1])
+                    index = index + 1
+		print Labels[:]
+		file.close()
+	    elif FinalArgs[3] == 'reveal':
+	        file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+		content = file.read()
+                for word in content.split():
+                    if word == 'label':
+                        if content.split()[index + 4] == '#':
+			    Labels.append(content.split()[index + 1])
+                    index = index + 1
+		file.close()
+            elif FinalArgs[3] == '-i':
+                file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+		content = file.read()
+                for word in content.split():
+                    if word == 'label':
+                        if content.split()[index + 2] == 'MENU' and content.split()[index + 3] == 'DEFAULT':
+			    Labels.append(content.split()[index + 1])
+                    index = index + 1
+		file.close()
+                next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.j = 0
+
+        b = wx.Button(self, -1, "Choose The Labels You Want To Hide/Reveal (MultiChoices)", (50,50))
+        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+    def OnButton(self, evt):
+	global Labels
+        dlg = wx.MultiChoiceDialog(self, _('msg_hide_reveal'), 'Lables:', Labels)
+
+        if (dlg.ShowModal() == wx.ID_OK):
+            selections = dlg.GetSelections()
+            self.selected_labels = [Labels[x] for x in selections]
+            #self.log.write("Selections: %s -> %s\n" % (selections, strings))
+        dlg.Destroy()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log
+	next = self.next
+	self.j = self.j + 1
+	if self.j == 2:
+	    if FinalArgs[1] == '' and FinalArgs[3] != '-i':
+	        for i in range(0,len(self.selected_labels)):
+	            os.system('/opt/drbl/sbin/hide_reveal_pxe_img %s %s /tftpboot/nbi_img/pxelinux.cfg/default' % (self.selected_labels, FinalArgs[3]))
+		    command_log = '%s ' % FinalArgs[3] + '%s ' % self.selected_labels + 'in /tftpboot/nbi_img/pxelinux.cfg/default\n'
+	        file = open('/tftpboot/nbi_img/pxelinux.cfg/clients_tmp').read()
+	        if len(file.split()) != 0:
+	            for i in (0,len(file.split())):
+	    	        os.system('rm -f %s' % file.split())
+	        file.close()
+	        command_log = 'clean all clients specific PXE config files\n'
+	        next = next.GetNext()
+            if FinalArgs[1] == '-h' and FinalArgs != '-i':
+		for i in range(0,len(PXE_CFG_Files)):
+		    os.system('cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG_Files)
+                    for i in range(0,len(self.selected_labels)):
+			os.system('/opt/drbl/sbin/hide_reveal_pxe_img %s %s /tftpboot/nbi_img/pxelinux.cfg/%s' % (self.selected_labels, FinalArgs[3], PXE_CFG_Files))
+                        command_log = '%s Label : %s in /tftpboot/nbi_img/pxelinux.cfg/%s\n' % (FinalArgs[3], self.selected_labels, PXE_CFG_Files)
+		    file = open('/tftpboot/nbi_img/pxelinux.cfg/clients_tmp','w')
+		    if PXE_CFG_Files not in client_temp.read().split():
+		        file.write('%s ' % PXE_CFG_Files)
+		    file.close
+	        next = next.GetNext()
+        #if FinalArgs[3] == '-i':
+	    #for 
+            #next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.j = 0
+
+        b = wx.Button(self, -1, "Choose The Labels You Want To Set as Default (Single Choice)", (50,50))
+        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+    def OnButton(self, evt):
+        global Labels
+        dlg = wx.SingleChoiceDialog(self, _('msg_setdefault_title'), "Lables:", Labels, wx.CHOICEDLG_STYLE)
+
+        if dlg.ShowModal() == wx.ID_OK:
+	    self.selected_label = dlg.GetStringSelection()
+            #self.log.WriteText('You selected: %s\n' % dlg.GetStringSelection())
+        dlg.Destroy()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log
+	self.j = self.j + 1
+	if self.j == 2:
+	    if FinalArgs[1] == '' and FinalArgs[3] == '-i':
+		command = os.open('/opt/drbl/sbin/set-default-pxe-img -i %s' % self.selected_label).read()
+		command_log = command_log + command
+	    if FinalArgs[1] == '-h' and FinalArgs[3] == '-i':
+		os.system('/opt/drbl/sbin/set-default-pxe-img -i %s' % self.selected_label)
+		for i in range(0,len(PXE_CFG_Files)):
+		    os.system('cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/default/%s' % PXE_CFG_Files)
+		    command_log = command_log + 'Copy /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/default/%s' % PXE_CFG_Files
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.tc = wx.TextCtrl(self, -1,'', pos=(35,50), size=(350, 250), style=wx.TE_MULTILINE|wx.TE_READONLY)
+
+	global command_log
+        self.b1 = wx.Button(self, -1, 'detail', pos=(400,250))
+        self.b2 = wx.Button(self, -1, 'command..', pos=(400,200))
+        self.Bind(wx.EVT_BUTTON, self.OnButtonDetail, self.b1)
+        self.Bind(wx.EVT_BUTTON, self.OnButtonCommand, self.b2)
+
+    def OnButtonDetail(self, evt):
+        self.tc.WriteText('%s' % command_log)
+        self.b1.Enable(False)
+
+    def OnButtonCommand(self, evt):
+        final_command = ''
+        for i in range(0,36):
+            if FinalArgs[i] != '':
+                final_command = final_command + FinalArgs[i] + ' '
+        self.tc.WriteText('%s' % final_command)
+        self.b2.Enable(False)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+#----------------------------------------------------------------------
+class DRBLModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_drbl_mode_0'), _('msg_drbl_mode_1'), _('msg_drbl_mode_2')]
+	wx.StaticText(self,-1,_('msg_drbl_mode_switch_long'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+	rb = wx.RadioBox(self, -1, '', (5,305), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)	
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/tune-clientdir-opt'
+	FinalArgs[1] = '-d'
+	FinalArgs[2] = '0'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+	    FinalArgs[2] = '0'
+	elif event.GetInt() == 1:
+	    FinalArgs[2] = '1'
+	elif event.GetInt() == 2:
+	    FinalArgs[2] = '2'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_clonezilla_mode_0'), _('msg_clonezilla_mode_1'), _('msg_clonezilla_mode_2')]
+	wx.StaticText(self,-1,_('msg_clonezilla_mode_switch_long'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 200),wx.TE_MULTILINE)
+	rb = wx.RadioBox(self, -1, '', (5,205), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/tune-clientdir-opt'
+        FinalArgs[1] = '-z'
+        FinalArgs[2] = '0'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[2] = '0'
+        elif event.GetInt() == 1:
+            FinalArgs[2] = '1'
+        elif event.GetInt() == 2:
+            FinalArgs[2] = '2'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class GenTemplateFilePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_gen_template_files'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/gen_ssi_files'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LoginSwitchPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	ModeList = [_('msg_normal_login'), _('msg_auto_login'), _('msg_timed_login')]
+        wx.StaticText(self, -1, _('msg_login_switch'),(50,35))
+	rb = wx.RadioBox(self, -1, _('msg_choose_action'), (35, 50), (250,200), ModeList, 1, wx.RA_SPECIFY_COLS)
+	self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-login-switch'
+	FinalArgs[3] = '-n'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+	    FinalArgs[3] = '-n'
+            FinalArgs[4] = ''
+	    FinalArgs[5] = ''
+        elif event.GetInt() == 1:
+	    FinalArgs[0] = '/opt/drbl/sbin/drbl-client-switch'
+	    FinalArgs[3] = 'remote-linux-gra'
+	    FinalArgs[4] = '\n/opt/drbl/sbin/drbl-login-switch'
+            FinalArgs[5] = '-a'
+        elif event.GetInt() == 2:
+            FinalArgs[0] = '/opt/drbl/sbin/drbl-client-switch'
+	    FinalArgs[3] = 'remote-linux-gra'
+            FinalArgs[4] = '\n/opt/drbl/sbin/drbl-login-switch'
+            FinalArgs[5] = '-t'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	if FinalArgs[3] == '-n':
+	    next = next.GetNext()
+        return next
+
+    #def GetPrev(self):
+        #prev = self.prev
+        #prev = prev.GetPrev()
+        #return prev
+
+#----------------------------------------------------------------------
+class ClientReAutoLoginPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_client_reautologin'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-client-reautologin'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class CleanAutoLoginAccountPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_clean_autologin_account'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-clean-autologin-account'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+
+#----------------------------------------------------------------------
+class ResetAutoLoginAccountPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reset_autologin_account'))
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-user-env-reset'
+	FinalArgs[1] = '--auto-login'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+
+#----------------------------------------------------------------------
+class SwitchDRBLServPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_start_drbl_all_services'), _('msg_stop_drbl_all_services'), _('msg_restart_drbl_all_services'), _('msg_add_drbl_all_services'), _('msg_del_drbl_all_services')]
+        wx.StaticText(self, -1, _('msg_switch_drbl_service'),(50,35))
+        rb = wx.RadioBox(self, -1, _('msg_choose_action'), (35, 50), (250,200), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-all-service'
+        FinalArgs[1] = 'start'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[1] = 'start'
+        elif event.GetInt() == 1:
+            FinalArgs[1] = 'stop'
+        elif event.GetInt() == 2:
+            FinalArgs[1] = 'restart'
+        elif event.GetInt() == 3:
+            FinalArgs[1] = 'add'
+        elif event.GetInt() == 4:
+            FinalArgs[1] = 'del'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+#----------------------------------------------------------------------
+class ReDeployPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_re_deploy'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf'	
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+	return self.prev
+
+#----------------------------------------------------------------------
+class FinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.tc = wx.TextCtrl(self, -1,'', pos=(35,50), size=(350, 250), style=wx.TE_MULTILINE|wx.TE_READONLY)
+	
+	self.b1 = wx.Button(self, -1, 'detail', pos=(400,250))
+	self.b2 = wx.Button(self, -1, 'command..', pos=(400,200))
+	self.Bind(wx.EVT_BUTTON, self.OnButtonDetail, self.b1)
+	self.Bind(wx.EVT_BUTTON, self.OnButtonCommand, self.b2)
+	
+    def OnButtonDetail(self, evt):
+        self.tc.WriteText('%s' % command_log)
+        self.b1.Enable(False)
+
+    def OnButtonCommand(self, evt):
+	final_command = ''
+	for i in range(0,36):
+	    if FinalArgs[i] != '':
+	        final_command = final_command + FinalArgs[i] + ' '
+        self.tc.WriteText('%s' % final_command)
+        self.b2.Enable(False)	
+
+    def SetNext(self, next):
+        self.next = next
+
+    def GetNext(self):
+        return self.next
+
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self, parent, id):
+        wx.Frame.__init__(self, parent, id, 'DRBL Config Wizard', (250,100), (700,400), style=wx.CAPTION)
+	#wx.NO_FULL_REPAINT_ON_RESIZE
+        self.scroll = wx.ScrolledWindow(self, -1)
+	self.scroll.SetScrollbars(1, 1, 550, 400)
+
+        FunctionList = [_('msg_remote_linux_graphic'), _('msg_remote_linux_text'), _('msg_thin_client')
+		        , _('msg_remote_memtest'), _('msg_remote_fdos'), _('msg_clonezilla_start_save')
+			, _('msg_clonezilla_start_restore'), _('msg_clonezilla_selec_in_client'), _('msg_clonezilla_stop')
+			, _('msg_local'), _('msg_reboot'), _('msg_shutdown'), _('msg_Wake_on_LAN')
+			, _('msg_switch_pxe_menu'), _('msg_switch_pxe_bg_mode'), _('msg_drbl_mode_switch')
+			, _('msg_clonezilla_mode_switch'), _('msg_gen_template_files'), _('msg_login_switch')
+			, _('msg_client_reautologin'), _('msg_clean_autologin_account'), _('msg_reset_autologin_account')
+			, _('msg_switch_drbl_service'), _('msg_re_deploy'), _('msg_clean_dhcpd_lease')
+			, _('msg_regenerate_nfs_nis_nat_config')]
+        rb = wx.RadioBox(self.scroll, -1, '', (35,20), (0,0), FunctionList, 2, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.scroll.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+	self.b1 = wx.Button(self.scroll, wx.ID_OK, pos=(600, 360))      # not translated
+	self.b2 = wx.Button(self.scroll, wx.ID_EXIT, pos=(500, 360))
+	self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b1)
+	self.scroll.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.b2)
+	self.scroll.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b1)
+        if event.GetSelection() == 1:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxTxtWizard, self.b1)
+        if event.GetSelection() == 2:
+	    self.scroll.Bind(wx.EVT_BUTTON, self.TerminalWizard, self.b1)
+        if event.GetSelection() == 3:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteMemTestWizard, self.b1)
+        if event.GetSelection() == 4:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemotefdosWizard, self.b1)
+        if event.GetSelection() == 5:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartSaveWizard, self.b1)
+        if event.GetSelection() == 6:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartRestoreWizard, self.b1)
+        if event.GetSelection() == 7:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaSelectWizard, self.b1)
+        if event.GetSelection() == 8:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStopWizard, self.b1)
+        if event.GetSelection() == 9:
+            self.scroll.Bind(wx.EVT_BUTTON, self.LocalWizard, self.b1)
+        if event.GetSelection() == 10:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RebootWizard, self.b1)
+        if event.GetSelection() == 11:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ShutdownWizard, self.b1)
+        if event.GetSelection() == 12:
+            self.scroll.Bind(wx.EVT_BUTTON, self.WakeOnLanWizard, self.b1)
+        if event.GetSelection() == 13:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchPXEMenuWizard, self.b1)
+        if event.GetSelection() == 14:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchPXEModeWizard, self.b1)
+        if event.GetSelection() == 15:
+            self.scroll.Bind(wx.EVT_BUTTON, self.DRBLModeWizard, self.b1)
+        if event.GetSelection() == 16:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaModeWizard, self.b1)
+        if event.GetSelection() == 17:
+            self.scroll.Bind(wx.EVT_BUTTON, self.GenTemplateFileWizard, self.b1)
+        if event.GetSelection() == 18:
+            self.scroll.Bind(wx.EVT_BUTTON, self.LoginSwitchWizard, self.b1)
+        if event.GetSelection() == 19:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClientReAutoLoginWizard, self.b1)
+        if event.GetSelection() == 20:
+            self.scroll.Bind(wx.EVT_BUTTON, self.CleanAutoLoginAccountWizard, self.b1)
+        if event.GetSelection() == 21:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ResetAutoLoginAccountWizard, self.b1)
+        if event.GetSelection() == 22:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchDRBLServWizard, self.b1)
+        if event.GetSelection() == 23:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ReDeployWizard, self.b1)
+        if event.GetSelection() == 24:
+            self.scroll.Bind(wx.EVT_BUTTON, self.CleanDHCPLeaseWizard, self.b1)
+        if event.GetSelection() == 25:
+            self.scroll.Bind(wx.EVT_BUTTON, self.Regenerate3NWizard, self.b1)
+
+#----------------------------------------------------------------------
+    def OnCloseWindow(self, event):
+	self.Destroy()
+#----------------------------------------------------------------------
+    def OnCloseMe(self, event):
+	self.Close(True)
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxGraWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxGraWizard', pos = (350,200))
+
+	page1 = SetAllClientsPage(wizard, '')
+	page2 = SelectClientsPage(wizard, '')
+	page3 = RemoteLinuxGraPage(wizard, '')
+	page4 = FinalPage(wizard, '')
+
+	self.page1 = page1
+	wizard.SetPageSize((500,300))
+
+	page1.SetNext(page2)
+	page2.SetPrev(page1)
+	page2.SetNext(page3)
+	page3.SetPrev(page2)
+	page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            #wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+	    for i in range(0,36):
+		FinalArgs[i] = ''
+        else:
+	    #wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+	    
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxTxtWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteLinuxTextWizard', pos = (350,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteLinuxTxtPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            #wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+	    #wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def TerminalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'TerminalWizard', pos = (350,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = TerminalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            #wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            #wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteMemTestWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemoteMemTestWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemoteMemTestPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            #wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            #wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RemotefdosWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RemotefdosWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RemotefdosPage(wizard,'')
+        page4 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartSaveWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartSaveWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+	page3 = ClonezillaStartSavePage1(wizard, '')
+	page4 = ClonezillaStartSavePage2(wizard, '')
+	page5 = ClonezillaStartSavePage3(wizard, '')
+	page6 = ClonezillaStartSavePage4(wizard, '')
+	page7 = ClonezillaStartSavePage5(wizard, '')
+	page8 = ClonezillaStartSavePage6(wizard, '')
+        page9 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+	page6.SetPrev(page5)
+	page6.SetNext(page7)
+	page7.SetPrev(page6)
+	page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartRestoreWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartRestoreWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStartRestorePage1(wizard, 'ClonezillaStartRestorePage1')
+        page4 = ClonezillaStartRestorePage2(wizard, 'ClonezillaStartRestorePage2')
+        page5 = ClonezillaStartRestorePage3(wizard, 'ClonezillaStartRestorePage3')
+        page6 = ClonezillaStartRestorePage4(wizard, 'ClonezillaStartRestorePage4')
+        page7 = ClonezillaStartRestorePage5(wizard, 'ClonezillaStartRestorePage5')
+	page8 = ClonezillaStartRestorePage6(wizard, 'ClonezillaStartRestorePage6')
+        page9 = ClonezillaStartRestorePage7(wizard, 'ClonezillaStartRestorePage7')
+	page10 = ClonezillaStartRestorePage8a(wizard, 'ClonezillaStartRestorePage8a')
+	page11 = ClonezillaStartRestorePage8b(wizard, 'ClonezillaStartRestorePage8b')
+	page12 = ClonezillaStartRestorePage9a(wizard, 'ClonezillaStartRestorePage9a')
+	page13 = ClonezillaStartRestorePage9b(wizard, 'ClonezillaStartRestorePage9b')
+	page14 = ClonezillaStartRestorePage10(wizard, 'ClonezillaStartRestorePage10')
+	page15 = ClonezillaStartRestorePage11(wizard, 'ClonezillaStartRestorePage11')
+	page16 = ClonezillaStartRestorePage12(wizard, 'ClonezillaStartRestorePage12')
+        page17 = FinalPage(wizard,'FinalPage')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+        page4.SetPrev(page3)
+        page4.SetNext(page5)
+        page5.SetPrev(page4)
+        page5.SetNext(page6)
+        page6.SetPrev(page4)
+        page6.SetNext(page7)
+        page7.SetPrev(page4)
+        page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+	page10.SetPrev(page9)
+	page10.SetNext(page11)
+	page11.SetPrev(page9)
+	page11.SetNext(page12)
+	page12.SetPrev(page10)
+	page12.SetNext(page13)
+	page13.SetPrev(page11)
+	page13.SetNext(page14)
+	page14.SetPrev(page13)
+	page14.SetNext(page15)
+	page15.SetPrev(page14)
+	page15.SetNext(page16)
+	page16.SetPrev(page14)
+	page16.SetNext(page17)
+	#page17.SetPrev(page16)
+	#page17.SetNext(page18)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaSelectWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaSelectWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaSelectPage1(wizard, '')
+	page4 = ClonezillaSelectPage2(wizard, '')
+        page5 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStopWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStopWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStopPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def LocalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'LocalWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = LocalPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RebootWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'RebootWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = RebootPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ShutdownWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ShutdownWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ShutdownPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def WakeOnLanWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'WakeOnLanWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = WakeOnLanPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchPXEMenuWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'SwitchPXEMenuWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = SwitchPXEMenuPage1(wizard, '')
+        page4 = SwitchPXEMenuPage2(wizard, '')
+	page5 = SwitchPXEMenuPage3(wizard, '')
+        page6 = SwitchPXEMenuPage4(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchPXEModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'SwitchPXEModeWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectOnePage(wizard, '')
+        page3 = SwitchPXEModePage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def DRBLModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'DRBLModeWizard', pos = (500,200))
+
+        page1 = DRBLModePage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,400))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ClonezillaModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaModeWizard', pos = (500,200))
+
+        page1 = ClonezillaModePage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def GenTemplateFileWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'GenTemplateFileWizard', pos = (500,200))
+
+        page1 = GenTemplateFilePage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def LoginSwitchWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'LoginSwitchWizard', pos = (500,200))
+
+	page1 = LoginSwitchPage(wizard, '')
+        page2 = SetAllClientsPage(wizard, '')
+        page3 = SelectClientsPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ClientReAutoLoginWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, ' ClientReAutoLogin', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClientReAutoLoginPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def CleanAutoLoginAccountWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'CleanAutoLoginAccount', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectOneClientPage(wizard, '')
+        page3 = CleanAutoLoginAccountPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ResetAutoLoginAccountWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ResetAutoLoginAccount', pos = (500,200))
+
+        #page1 = SetAllClientsPage(wizard, '')
+        #page2 = SelectOneClientPage(wizard, '')
+        page1 = ResetAutoLoginAccountPage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        #page2.SetPrev(page1)
+        #page2.SetNext(page3)
+        #page3.SetPrev(page2)
+        #page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchDRBLServWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'SwitchDRBLServWizard', pos = (500,200))
+
+        page1 = SwitchDRBLServPage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ReDeployWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ReDeployWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ReDeployPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def CleanDHCPLeaseWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'CleanDHCPLeaseWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = CleanDHCPLeasePage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def Regenerate3NWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'Regenerate3NWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = Regenerate3NPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------------------------------------------------
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame(parent=None, id=-1)
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/.indent.pro
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/.indent.pro	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/.indent.pro	(revision 20)
@@ -0,0 +1,33 @@
+--blank-lines-after-declarations
+--blank-lines-after-procedures
+--break-before-boolean-operator
+--no-blank-lines-after-commas
+--braces-on-if-line
+--braces-on-struct-decl-line
+--comment-indentation25
+--declaration-comment-column25
+--no-comment-delimiters-on-blank-lines
+--cuddle-else
+--continuation-indentation4
+--case-indentation0
+--else-endif-column33
+--space-after-cast
+--line-comments-indentation0
+--declaration-indentation1
+--dont-format-first-column-comments
+--dont-format-comments
+--honour-newlines
+--indent-level4
+/* changed from 0 to 4 */
+--parameter-indentation4
+--line-length78 /* changed from 75 */
+--continue-at-parentheses
+--no-space-after-function-call-names
+--dont-break-procedure-type
+--dont-star-comments
+--leave-optional-blank-lines
+--dont-space-special-semicolon
+--tab-size4
+/* additions by Mark */
+--case-brace-indentation0
+--leave-preprocessor-space
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/AUTHORS
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/AUTHORS	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/AUTHORS	(revision 20)
@@ -0,0 +1,173 @@
+List of the authors of code contained in BusyBox.
+
+If you have code in BusyBox, you should be listed here.  If you should be
+listed, or the description of what you have done needs more detail, or is
+incorrect, _please_ let me know.
+
+ -Erik
+
+-----------
+
+Peter Willis <psyphreak@phreaker.net>
+    eject
+
+Emanuele Aina <emanuele.aina@tiscali.it>
+    run-parts
+
+Erik Andersen <andersen@codepoet.org>
+    Tons of new stuff, major rewrite of most of the
+    core apps, tons of new apps as noted in header files.
+    Lots of tedious effort writing these boring docs that
+    nobody is going to actually read.
+
+Laurence Anderson <l.d.anderson@warwick.ac.uk>
+    rpm2cpio, unzip, get_header_cpio, read_gz interface, rpm
+
+Jeff Angielski <jeff@theptrgroup.com>
+    ftpput, ftpget
+
+Enrik Berkhan <Enrik.Berkhan@inka.de>
+    setconsole
+
+Jim Bauer <jfbauer@nfr.com>
+    modprobe shell dependency
+
+Edward Betts <edward@debian.org>
+    expr, hostid, logname, whoami
+
+John Beppu <beppu@codepoet.org>
+    du, nslookup, sort
+
+David Brownell <dbrownell@users.sourceforge.net>
+    zcip
+
+Brian Candler <B.Candler@pobox.com>
+    tiny-ls(ls)
+
+Randolph Chung <tausq@debian.org>
+    fbset, ping, hostname
+
+Dave Cinege <dcinege@psychosis.com>
+    more(v2), makedevs, dutmp, modularization, auto links file,
+    various fixes, Linux Router Project maintenance
+
+Jordan Crouse <jordan@cosmicpenguin.net>
+    ipcalc
+
+Magnus Damm <damm@opensource.se>
+    tftp client
+    insmod powerpc support
+
+Larry Doolittle <ldoolitt@recycle.lbl.gov>
+    pristine source directory compilation, lots of patches and fixes.
+
+Glenn Engel <glenne@engel.org>
+    httpd
+
+Gennady Feldman <gfeldman@gena01.com>
+    Sysklogd (single threaded syslogd, IPC Circular buffer support,
+    logread), various fixes.
+
+Robert Griebl <sandman@handhelds.org>
+    modprobe, hwclock, suid/sgid handling, tinylogin integration
+    many bugfixes and enhancements
+
+Karl M. Hegbloom <karlheg@debian.org>
+    cp_mv.c, the test suite, various fixes to utility.c, &c.
+
+Daniel Jacobowitz <dan@debian.org>
+    mktemp.c
+
+Matt Kraai <kraai@alumni.cmu.edu>
+    documentation, bugfixes, test suite
+
+Rob Landley <rob@landley.net>
+    Became busybox maintainer in 2006.
+
+    sed (major rewrite in 2003, and I now maintain the thing)
+    bunzip2 (complete from-scratch rewrite, then mjn3 optimized the result)
+    sort (more or less from scratch rewrite in 2004, I now maintain it)
+    mount (rewrite in 2005, I maintain the new one)
+
+Stephan Linz <linz@li-pro.net>
+    ipcalc, Red Hat equivalence
+
+John Lombardo <john@deltanet.com>
+    tr
+
+Glenn McGrath <bug1@iinet.net.au>
+    Common unarchiving code and unarchiving applets, ifupdown, ftpgetput,
+    nameif, sed, patch, fold, install, uudecode.
+    Various bugfixes, review and apply numerous patches.
+
+Manuel Novoa III <mjn3@codepoet.org>
+    cat, head, mkfifo, mknod, rmdir, sleep, tee, tty, uniq, usleep, wc, yes,
+    mesg, vconfig, nice, renice,
+    make_directory, parse_mode, dirname, mode_string,
+    get_last_path_component, simplify_path, and a number trivial libbb routines
+
+    also bug fixes, partial rewrites, and size optimizations in
+    ash, basename, cal, cmp, cp, df, du, echo, env, ln, logname, md5sum, mkdir,
+    mv, realpath, rm, sort, tail, touch, uname, watch, arith, human_readable,
+    interface, dutmp, ifconfig, route
+
+Vladimir Oleynik <dzo@simtreas.ru>
+    cmdedit; bb_mkdep, xargs(current), httpd(current);
+    ports: ash, crond, fdisk (initial, unmaintained now), inetd, stty, traceroute,
+    top;
+    locale, various fixes
+    and irreconcilable critic of everything not perfect.
+
+Bruce Perens <bruce@pixar.com>
+    Original author of BusyBox in 1995, 1996. Some of his code can
+    still be found hiding here and there...
+
+Rodney Radford <rradford@mindspring.com>
+    ipcs, ipcrm
+
+Tim Riker <Tim@Rikers.org>
+    bug fixes, member of fan club
+
+Kent Robotti <robotti@metconnect.com>
+    reset, tons and tons of bug reports and patches.
+
+Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
+    wget - Contributed by permission of Covad Communications
+
+Pavel Roskin <proski@gnu.org>
+    Lots of bugs fixes and patches.
+
+Gyepi Sam <gyepi@praxis-sw.com>
+    Remote logging feature for syslogd
+
+Rob Sullivan <cogito.ergo.cogito@gmail.com>
+    comm
+
+Linus Torvalds
+    mkswap, fsck.minix, mkfs.minix
+
+Mark Whitley <markw@codepoet.org>
+    grep, sed, cut, xargs(previous),
+    style-guide, new-applet-HOWTO, bug fixes, etc.
+
+Charles P. Wright <cpwright@villagenet.com>
+    gzip, mini-netcat(nc)
+
+Enrique Zanardi <ezanardi@ull.es>
+    tarcat (since removed), loadkmap, various fixes, Debian maintenance
+
+Tito Ragusa <farmatito@tiscali.it>
+    devfsd and size optimizations in strings, openvt, chvt, deallocvt, hdparm,
+    fdformat, lsattr, chattr, id and eject.
+
+Paul Fox <pgf@foxharp.boston.ma.us>
+    vi editing mode for ash, various other patches/fixes
+
+Roberto A. Foglietta <me@roberto.foglietta.name>
+    port: dnsd
+
+Bernhard Fischer <rep.nop@aon.at>
+    misc
+
+Mike Frysinger <vapier@gentoo.org>
+    initial e2fsprogs, printenv, setarch, sum, misc
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/Config.in	(revision 20)
@@ -0,0 +1,509 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+mainmenu "BusyBox Configuration"
+
+config HAVE_DOT_CONFIG
+	bool
+	default y
+
+menu "Busybox Settings"
+
+menu "General Configuration"
+
+config NITPICK
+	bool "See lots more (probably unnecessary) configuration options."
+	default n
+	help
+	  Some BusyBox applets have more configuration options than anyone
+	  will ever care about.  To avoid drowining people in complexity, most
+	  of the applet features that can be set to a sane default value are
+	  hidden, unless you hit the above switch.
+
+	  This is better than to telling people to edit the busybox source
+	  code, but not by much.
+
+	  See http://en.wikipedia.org/wiki/Fibber_McGee_and_Molly#The_Closet
+
+	  You have been warned.
+
+config DESKTOP
+	bool "Enable options for full-blown desktop systems"
+	default n
+	help
+	  Enable options and features which are not essential.
+	  Select this only if you plan to use busybox on full-blown
+	  desktop machine with common Linux distro, not on an embedded box.
+
+choice
+	prompt "Buffer allocation policy"
+	default FEATURE_BUFFERS_USE_MALLOC
+	depends on NITPICK
+	help
+	  There are 3 ways BusyBox can handle buffer allocations:
+	  - Use malloc. This costs code size for the call to xmalloc.
+	  - Put them on stack. For some very small machines with limited stack
+	    space, this can be deadly.  For most folks, this works just fine.
+	  - Put them in BSS. This works beautifully for computers with a real
+	    MMU (and OS support), but wastes runtime RAM for uCLinux. This
+	    behavior was the only one available for BusyBox versions 0.48 and
+	    earlier.
+
+config FEATURE_BUFFERS_USE_MALLOC
+	bool "Allocate with Malloc"
+
+config FEATURE_BUFFERS_GO_ON_STACK
+	bool "Allocate on the Stack"
+
+config FEATURE_BUFFERS_GO_IN_BSS
+	bool "Allocate in the .bss section"
+
+endchoice
+
+config SHOW_USAGE
+	bool "Show terse applet usage messages"
+	default y
+	help
+	  All BusyBox applets will show help messages when invoked with
+	  wrong arguments. You can turn off printing these terse usage
+	  messages if you say no here.
+	  This will save you up to 7k.
+
+config FEATURE_VERBOSE_USAGE
+	bool "Show verbose applet usage messages"
+	default n
+	select SHOW_USAGE
+	help
+	  All BusyBox applets will show more verbose help messages when
+	  busybox is invoked with --help.  This will add a lot of text to the
+	  busybox binary.  In the default configuration, this will add about
+	  13k, but it can add much more depending on your configuration.
+
+config FEATURE_COMPRESS_USAGE
+	bool "Store applet usage messages in compressed form"
+	default y
+	depends on SHOW_USAGE
+	help
+	  Store usage messages in compressed form, uncompress them on-the-fly
+	  when <applet> --help is called.
+
+	  If you have a really tiny busybox with few applets enabled (and
+	  bunzip2 isn't one of them), the overhead of the decompressor might
+	  be noticeable.  Also, if you run executables directly from ROM
+	  and have very little memory, this might not be a win.  Otherwise,
+	  you probably want this.
+
+config FEATURE_INSTALLER
+	bool "Support --install [-s] to install applet links at runtime"
+	default n
+	help
+	  Enable 'busybox --install [-s]' support.  This will allow you to use
+	  busybox at runtime to create hard links or symlinks for all the
+	  applets that are compiled into busybox.
+
+config LOCALE_SUPPORT
+	bool "Enable locale support (system needs locale for this to work)"
+	default n
+	help
+	  Enable this if your system has locale support and you would like
+	  busybox to support locale settings.
+
+config GETOPT_LONG
+	bool "Enable support for --long-options"
+	default y
+	help
+	  Enable this if you want busybox applets to use the gnu --long-option
+	  style, in addition to single character -a -b -c style options.
+
+config FEATURE_DEVPTS
+	bool "Use the devpts filesystem for Unix98 PTYs"
+	default y
+	help
+	  Enable if you want BusyBox to use Unix98 PTY support. If enabled,
+	  busybox will use /dev/ptmx for the master side of the pseudoterminal
+	  and /dev/pts/<number> for the slave side.  Otherwise, BSD style
+	  /dev/ttyp<number> will be used. To use this option, you should have
+	  devpts mounted.
+
+config FEATURE_CLEAN_UP
+	bool "Clean up all memory before exiting (usually not needed)"
+	default n
+	depends on NITPICK
+	help
+	  As a size optimization, busybox normally exits without explicitly
+	  freeing dynamically allocated memory or closing files.  This saves
+	  space since the OS will clean up for us, but it can confuse debuggers
+	  like valgrind, which report tons of memory and resource leaks.
+
+	  Don't enable this unless you have a really good reason to clean
+	  things up manually.
+
+config FEATURE_PIDFILE
+	bool "Support writing pidfiles"
+	default n
+	help
+	  This option makes some applets (e.g. crond, syslogd, inetd) write
+	  a pidfile in /var/run. Some applications rely on them.
+
+config FEATURE_SUID
+	bool "Support for SUID/SGID handling"
+	default n
+	help
+	  With this option you can install the busybox binary belonging
+	  to root with the suid bit set, and it'll and it'll automatically drop
+	  priviledges for applets that don't need root access.
+
+	  If you're really paranoid and don't want to do this, build two
+	  busybox binaries with different applets in them (and the appropriate
+	  symlinks pointing to each binary), and only set the suid bit on the
+	  one that needs it.  The applets currently marked to need the suid bit
+	  are login, passwd, su, ping, traceroute, crontab, dnsd, ipcrm, ipcs,
+	  and vlock.
+
+config FEATURE_SUID_CONFIG
+	bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
+	default n if FEATURE_SUID
+	depends on FEATURE_SUID
+	help
+	  Allow the SUID / SGID state of an applet to be determined at runtime
+	  by checking /etc/busybox.conf.  (This is sort of a poor man's sudo.)
+	  The format of this file is as follows:
+
+	  <applet> = [Ssx-][Ssx-][x-] (<username>|<uid>).(<groupname>|<gid>)
+
+	  An example might help:
+
+	  [SUID]
+	  su = ssx root.0 # applet su can be run by anyone and runs with euid=0/egid=0
+	  su = ssx        # exactly the same
+
+	  mount = sx- root.disk # applet mount can be run by root and members of group disk
+	                        # and runs with euid=0
+
+	  cp = --- # disable applet cp for everyone
+
+	  The file has to be owned by user root, group root and has to be
+	  writeable only by root:
+	  	(chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
+	  The busybox executable has to be owned by user root, group
+	  root and has to be setuid root for this to work:
+	  	(chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
+
+	  Robert 'sandman' Griebl has more information here:
+	  <url: http://www.softforge.de/bb/suid.html >.
+
+config FEATURE_SUID_CONFIG_QUIET
+	bool "Suppress warning message if /etc/busybox.conf is not readable"
+	default y
+	depends on FEATURE_SUID_CONFIG
+	help
+	  /etc/busybox.conf should be readable by the user needing the SUID, check
+	  this option to avoid users to be notified about missing permissions.
+
+config SELINUX
+	bool "Support NSA Security Enhanced Linux"
+	default n
+	help
+	  Enable support for SELinux in applets ls, ps, and id.  Also provide
+	  the option of compiling in SELinux applets.
+
+	  If you do not have a complete SELinux userland installed, this stuff
+	  will not compile. Go visit
+		http://www.nsa.gov/selinux/index.html
+	  to download the necessary stuff to allow busybox to compile with
+	  this option enabled. Specifially, libselinux 1.28 or better is
+	  directly required by busybox. If the installation is located in a
+	  non-standard directory, provide it by invoking make as follows:
+		CFLAGS=-I<libselinux-include-path> \
+		LDFLAGS=-L<libselinux-lib-path> \
+		make
+
+	  Most people will leave this set to 'N'.
+
+config FEATURE_PREFER_APPLETS
+	bool "exec prefers applets"
+	default n
+	help
+	  This is an experimental option which directs applets about to
+	  call 'exec' to try and find an applicable busybox applet before
+	  searching the PATH. This is typically done by exec'ing
+	  /proc/self/exe.
+	  This may affect shell, find -exec, xargs and similar applets.
+	  They will use applets even if /bin/<applet> -> busybox link
+	  is missing (or is not a link to busybox). However, this causes
+	  problems in chroot jails without mounted /proc and with ps/top
+	  (command name can be shown as 'exe' for applets started this way).
+
+config BUSYBOX_EXEC_PATH
+	string "Path to BusyBox executable"
+	default "/proc/self/exe"
+	help
+	  When Busybox applets need to run other busybox applets, BusyBox
+	  sometimes needs to exec() itself.  When the /proc filesystem is
+	  mounted, /proc/self/exe always points to the currently running
+	  executable.  If you haven't got /proc, set this to wherever you
+	  want to run BusyBox from.
+
+# These are auto-selected by other options
+
+config FEATURE_SYSLOG
+	bool "Support for logging to syslog"
+	default n
+	help
+	  This option is auto-selected when you select any applet which may
+	  send its output to syslog. You do not need to select it manually.
+
+config FEATURE_HAVE_RPC
+	bool "RPC support"
+	default n
+	help
+	  This is automatically selected if any of enabled applets need it.
+	  You do not need to select it manually.
+
+endmenu
+
+menu 'Build Options'
+
+config STATIC
+	bool "Build BusyBox as a static binary (no shared libs)"
+	default n
+	help
+	  If you want to build a static BusyBox binary, which does not
+	  use or require any shared libraries, then enable this option.
+	  This can cause BusyBox to be considerably larger, so you should
+	  leave this option false unless you have a good reason (i.e.
+	  your target platform does not support shared libraries, or
+	  you are building an initrd which doesn't need anything but
+	  BusyBox, etc).
+
+	  Most people will leave this set to 'N'.
+
+config BUILD_LIBBUSYBOX
+	bool "Build shared libbusybox"
+	default n
+	help
+	  Build a shared library libbusybox.so which contains all
+	  libraries used inside busybox.
+
+	  This is an experimental feature intended to support the upcoming
+	  "make standalone" mode.  Enabling it against the one big busybox
+	  binary serves no purpose (and increases the size).  You should
+	  almost certainly say "no" to this right now.
+
+config FEATURE_FULL_LIBBUSYBOX
+	bool "Feature-complete libbusybox"
+	default n if !FEATURE_SHARED_BUSYBOX
+	depends on BUILD_LIBBUSYBOX
+	help
+	  Build a libbusybox with the complete feature-set, disregarding
+	  the actually selected config.
+
+	  Normally, libbusybox will only contain the features which are
+	  used by busybox itself. If you plan to write a separate
+	  standalone application which uses libbusybox say 'Y'.
+
+	  Note: libbusybox is GPL, not LGPL, and exports no stable API that
+	  might act as a copyright barrier.  We can and will modify the
+	  exported function set between releases (even minor version number
+	  changes), and happily break out-of-tree features.
+
+	  Say 'N' if in doubt.
+
+config FEATURE_SHARED_BUSYBOX
+	bool "Use shared libbusybox for busybox"
+	default y if BUILD_LIBBUSYBOX
+	depends on !STATIC && BUILD_LIBBUSYBOX
+	help
+	  Use libbusybox.so also for busybox itself.
+	  You need to have a working dynamic linker to use this variant.
+
+config LFS
+	bool "Build with Large File Support (for accessing files > 2 GB)"
+	default n
+	select FDISK_SUPPORT_LARGE_DISKS
+	help
+	  If you want to build BusyBox with large file support, then enable
+	  this option.  This will have no effect if your kernel or your C
+	  library lacks large file support for large files.  Some of the
+	  programs that can benefit from large file support include dd, gzip,
+	  cp, mount, tar, and many others.  If you want to access files larger
+	  than 2 Gigabytes, enable this option.  Otherwise, leave it set to 'N'.
+
+config BUILD_AT_ONCE
+	bool "Compile all sources at once"
+	default n
+	help
+	  Normally each source-file is compiled with one invocation of
+	  the compiler.
+	  If you set this option, all sources are compiled at once.
+	  This gives the compiler more opportunities to optimize which can
+	  result in smaller and/or faster binaries.
+
+	  Setting this option will consume alot of memory, e.g. if you
+	  enable all applets with all features, gcc uses more than 300MB
+	  RAM during compilation of busybox.
+
+	  This option is most likely only beneficial for newer compilers
+	  such as gcc-4.1 and above.
+
+	  Say 'N' unless you know what you are doing.
+
+endmenu
+
+menu 'Debugging Options'
+
+config DEBUG
+	bool "Build BusyBox with extra Debugging symbols"
+	default n
+	help
+	  Say Y here if you wish to examine BusyBox internals while applets are
+	  running.  This increases the size of the binary considerably, and
+	  should only be used when doing development.  If you are doing
+	  development and want to debug BusyBox, answer Y.
+
+	  Most people should answer N.
+
+config WERROR
+	bool "Abort compilation on any warning"
+	default n
+	help
+	  Selecting this will add -Werror to gcc command line.
+
+	  Most people should answer N.
+
+# Seems to be unused
+#config DEBUG_PESSIMIZE
+#	bool "Disable compiler optimizations."
+#	default n
+#	depends on DEBUG
+#	help
+#	  The compiler's optimization of source code can eliminate and reorder
+#	  code, resulting in an executable that's hard to understand when
+#	  stepping through it with a debugger.  This switches it off, resulting
+#	  in a much bigger executable that more closely matches the source
+#	  code.
+
+choice
+	prompt "Additional debugging library"
+	default NO_DEBUG_LIB
+	help
+	  Using an additional debugging library will make BusyBox become
+	  considerable larger and will cause it to run more slowly.  You
+	  should always leave this option disabled for production use.
+
+	  dmalloc support:
+	  ----------------
+	  This enables compiling with dmalloc ( http://dmalloc.com/ )
+	  which is an excellent public domain mem leak and malloc problem
+	  detector.  To enable dmalloc, before running busybox you will
+	  want to properly set your environment, for example:
+	    export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
+	  The 'debug=' value is generated using the following command
+	    dmalloc -p log-stats -p log-non-free -p log-bad-space -p log-elapsed-time \
+	       -p check-fence -p check-heap -p check-lists -p check-blank \
+	       -p check-funcs -p realloc-copy -p allow-free-null
+
+	  Electric-fence support:
+	  -----------------------
+	  This enables compiling with Electric-fence support.  Electric
+	  fence is another very useful malloc debugging library which uses
+	  your computer's virtual memory hardware to detect illegal memory
+	  accesses.  This support will make BusyBox be considerable larger
+	  and run slower, so you should leave this option disabled unless
+	  you are hunting a hard to find memory problem.
+
+
+config NO_DEBUG_LIB
+	bool "None"
+
+config DMALLOC
+	bool "Dmalloc"
+
+config EFENCE
+	bool "Electric-fence"
+
+endchoice
+
+config INCLUDE_SUSv2
+	bool "Enable obsolete features removed before SUSv3?"
+	default y
+	help
+	  This option will enable backwards compatibility with SuSv2,
+	  specifically, old-style numeric options ('command -1 <file>')
+	  will be supported in head, tail, and fold.  (Note: should
+	  affect renice too.)
+
+endmenu
+
+menu 'Installation Options'
+
+config INSTALL_NO_USR
+	bool "Don't use /usr"
+	default n
+	help
+	  Disable use of /usr. Don't activate this option if you don't know
+	  that you really want this behaviour.
+
+choice
+	prompt "Applets links"
+	default INSTALL_APPLET_SYMLINKS
+	help
+	  Choose how you install applets links.
+
+config INSTALL_APPLET_SYMLINKS
+	bool "as soft-links"
+	help
+	  Install applets as soft-links to the busybox binary. This needs some
+	  free inodes on the filesystem, but might help with filesystem
+	  generators that can't cope with hard-links.
+
+config INSTALL_APPLET_HARDLINKS
+	bool "as hard-links"
+	help
+	  Install applets as hard-links to the busybox binary. This might count
+	  on a filesystem with few inodes.
+
+config INSTALL_APPLET_DONT
+	bool "not installed"
+	depends on FEATURE_INSTALLER || FEATURE_SH_STANDALONE || FEATURE_PREFER_APPLETS
+	help
+	  Do not install applet links. Useful when using the -install feature
+	  or a standalone shell for rescue purposes.
+
+endchoice
+
+config PREFIX
+	string "BusyBox installation prefix"
+	default "./_install"
+	help
+	  Define your directory to install BusyBox files/subdirs in.
+
+endmenu
+
+source libbb/Config.in
+
+endmenu
+
+comment "Applets"
+
+source archival/Config.in
+source coreutils/Config.in
+source console-tools/Config.in
+source debianutils/Config.in
+source editors/Config.in
+source findutils/Config.in
+source init/Config.in
+source loginutils/Config.in
+source e2fsprogs/Config.in
+source modutils/Config.in
+source util-linux/Config.in
+source miscutils/Config.in
+source networking/Config.in
+source procps/Config.in
+source shell/Config.in
+source sysklogd/Config.in
+source runit/Config.in
+source selinux/Config.in
+source ipsvd/Config.in
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/INSTALL
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/INSTALL	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/INSTALL	(revision 20)
@@ -0,0 +1,125 @@
+Building:
+=========
+
+The BusyBox build process is similar to the Linux kernel build:
+
+  make menuconfig     # This creates a file called ".config"
+  make                # This creates the "busybox" executable
+  make install        # or make CONFIG_PREFIX=/path/from/root install
+
+The full list of configuration and install options is available by typing:
+
+  make help
+
+Quick Start:
+============
+
+The easy way to try out BusyBox for the first time, without having to install
+it, is to enable all features and then use "standalone shell" mode with a
+blank command $PATH.
+
+To enable all features, use "make defconfig", which produces the largest
+general-purpose configuration.  (It's allyesconfig minus debugging options,
+optional packaging choices, and a few special-purpose features requiring
+extra configuration to use.)
+
+  make defconfig
+  make
+  PATH= ./busybox ash
+
+Standalone shell mode causes busybox's built-in command shell to run
+any built-in busybox applets directly, without looking for external
+programs by that name.  Supplying an empty command path (as above) means
+the only commands busybox can find are the built-in ones.
+
+Note that the standalone shell requires CONFIG_BUSYBOX_EXEC_PATH
+to be set appropriately, depending on whether or not /proc/self/exe is
+available or not. If you do not have /proc, then point that config option
+to the location of your busybox binary, usually /bin/busybox.
+
+Configuring Busybox:
+====================
+
+Busybox is optimized for size, but enabling the full set of functionality
+still results in a fairly large executable -- more than 1 megabyte when
+statically linked.  To save space, busybox can be configured with only the
+set of applets needed for each environment.  The minimal configuration, with
+all applets disabled, produces a 4k executable.  (It's useless, but very small.)
+
+The manual configurator "make menuconfig" modifies the existing configuration.
+(For systems without ncurses, try "make config" instead.) The two most
+interesting starting configurations are "make allnoconfig" (to start with
+everything disabled and add just what you need), and "make defconfig" (to
+start with everything enabled and remove what you don't need).  If menuconfig
+is run without an existing configuration, make defconfig will run first to
+create a known starting point.
+
+Other starting configurations (mostly used for testing purposes) include
+"make allbareconfig" (enables all applets but disables all optional features),
+"make allyesconfig" (enables absolutely everything including debug features),
+and "make randconfig" (produce a random configuration).
+
+Configuring BusyBox produces a file ".config", which can be saved for future
+use.  Run "make oldconfig" to bring a .config file from an older version of
+busybox up to date.
+
+Installing Busybox:
+===================
+
+Busybox is a single executable that can behave like many different commands,
+and BusyBox uses the name it was invoked under to determine the desired
+behavior.  (Try "mv busybox ls" and then "./ls -l".)
+
+Installing busybox consists of creating symlinks (or hardlinks) to the busybox
+binary for each applet enabled in busybox, and making sure these symlinks are
+in the shell's command $PATH.  Running "make install" creates these symlinks,
+or "make install-hardlinks" creates hardlinks instead (useful on systems with
+a limited number of inodes).  This install process uses the file
+"busybox.links" (created by make), which contains the list of enabled applets
+and the path at which to install them.
+
+Installing links to busybox is not always necessary.  The special applet name
+"busybox" (or with any optional suffix, such as "busybox-static") uses the
+first argument to determine which applet to behave as, for example
+"./busybox cat LICENSE".  (Running the busybox applet with no arguments gives
+a list of all enabled applets.) The standalone shell can also call busybox
+applets without links to busybox under other names in the filesystem.  You can
+also configure a standaone install capability into the busybox base applet,
+and then install such links at runtime with one of "busybox --install" (for
+hardlinks) or "busybox --install -s" (for symlinks).
+
+If you enabled the busybox shared library feature (libbusybox.so) and want
+to run tests without installing, set your LD_LIBRARY_PATH accordingly when
+running the executable:
+
+  LD_LIBRARY_PATH=`pwd` ./busybox
+
+Building out-of-tree:
+=====================
+
+By default, the BusyBox build puts its temporary files in the source tree.
+Building from a read-only source tree, or building multiple configurations from
+the same source directory, requires the ability to put the temporary files
+somewhere else.
+
+To build out of tree, cd to an empty directory and configure busybox from there:
+
+  make -f /path/to/source/Makefile defconfig
+  make
+  make install
+
+Alternately, use the O=$BUILDPATH option (with an absolute path) during the
+configuration step, as in:
+
+  make O=/some/empty/directory allyesconfig
+  cd /some/empty/directory
+  make
+  make CONFIG_PREFIX=. install
+
+More Information:
+=================
+
+Se also the busybox FAQ, under the questions "How can I get started using
+BusyBox" and "How do I build a BusyBox-based system?"  The BusyBox FAQ is
+available from http://www.busybox.net/FAQ.html or as the file
+docs/busybox.net/FAQ.html in this tarball.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/LICENSE
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/LICENSE	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/LICENSE	(revision 20)
@@ -0,0 +1,353 @@
+--- A note on GPL versions
+
+BusyBox is distributed under version 2 of the General Public License (included
+in its entirety, below).  Version 2 is the only version of this license which
+this version of BusyBox (or modified versions derived from this one) may be
+distributed under.
+
+------------------------------------------------------------------------
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile	(revision 20)
@@ -0,0 +1,1291 @@
+VERSION = 1
+PATCHLEVEL = 7
+SUBLEVEL = 2
+EXTRAVERSION =
+NAME = Unnamed
+
+# *DOCUMENTATION*
+# To see a list of typical targets execute "make help"
+# More info can be located in ./README
+# Comments in this file are targeted only to the developer, do not
+# expect to learn how to build the kernel reading this file.
+
+# Do not print "Entering directory ..."
+MAKEFLAGS += --no-print-directory
+
+# We are using a recursive build, so we need to do a little thinking
+# to get the ordering right.
+#
+# Most importantly: sub-Makefiles should only ever modify files in
+# their own directory. If in some directory we have a dependency on
+# a file in another dir (which doesn't happen often, but it's often
+# unavoidable when linking the built-in.o targets which finally
+# turn into busybox), we will call a sub make in that other dir, and
+# after that we are sure that everything which is in that other dir
+# is now up to date.
+#
+# The only cases where we need to modify files which have global
+# effects are thus separated out and done before the recursive
+# descending is started. They are now explicitly listed as the
+# prepare rule.
+
+# To put more focus on warnings, be less verbose as default
+# Use 'make V=1' to see the full commands
+
+ifdef V
+  ifeq ("$(origin V)", "command line")
+    KBUILD_VERBOSE = $(V)
+  endif
+endif
+ifndef KBUILD_VERBOSE
+  KBUILD_VERBOSE = 0
+endif
+
+# Call sparse as part of compilation of C files
+# Use 'make C=1' to enable sparse checking
+
+ifdef C
+  ifeq ("$(origin C)", "command line")
+    KBUILD_CHECKSRC = $(C)
+  endif
+endif
+ifndef KBUILD_CHECKSRC
+  KBUILD_CHECKSRC = 0
+endif
+
+# Use make M=dir to specify directory of external module to build
+# Old syntax make ... SUBDIRS=$PWD is still supported
+# Setting the environment variable KBUILD_EXTMOD take precedence
+ifdef SUBDIRS
+  KBUILD_EXTMOD ?= $(SUBDIRS)
+endif
+ifdef M
+  ifeq ("$(origin M)", "command line")
+    KBUILD_EXTMOD := $(M)
+  endif
+endif
+
+
+# kbuild supports saving output files in a separate directory.
+# To locate output files in a separate directory two syntaxes are supported.
+# In both cases the working directory must be the root of the kernel src.
+# 1) O=
+# Use "make O=dir/to/store/output/files/"
+#
+# 2) Set KBUILD_OUTPUT
+# Set the environment variable KBUILD_OUTPUT to point to the directory
+# where the output files shall be placed.
+# export KBUILD_OUTPUT=dir/to/store/output/files/
+# make
+#
+# The O= assignment takes precedence over the KBUILD_OUTPUT environment
+# variable.
+
+
+# KBUILD_SRC is set on invocation of make in OBJ directory
+# KBUILD_SRC is not intended to be used by the regular user (for now)
+ifeq ($(KBUILD_SRC),)
+
+# OK, Make called in directory where kernel src resides
+# Do we want to locate output files in a separate directory?
+ifdef O
+  ifeq ("$(origin O)", "command line")
+    KBUILD_OUTPUT := $(O)
+  endif
+endif
+
+# That's our default target when none is given on the command line
+PHONY := _all
+_all:
+
+ifneq ($(KBUILD_OUTPUT),)
+# Invoke a second make in the output directory, passing relevant variables
+# check that the output directory actually exists
+saved-output := $(KBUILD_OUTPUT)
+KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
+$(if $(KBUILD_OUTPUT),, \
+     $(error output directory "$(saved-output)" does not exist))
+
+PHONY += $(MAKECMDGOALS)
+
+$(filter-out _all,$(MAKECMDGOALS)) _all:
+	$(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
+	KBUILD_SRC=$(CURDIR) \
+	KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $@
+
+# Leave processing to above invocation of make
+skip-makefile := 1
+endif # ifneq ($(KBUILD_OUTPUT),)
+endif # ifeq ($(KBUILD_SRC),)
+
+# We process the rest of the Makefile if this is the final invocation of make
+ifeq ($(skip-makefile),)
+
+# If building an external module we do not care about the all: rule
+# but instead _all depend on modules
+PHONY += all
+ifeq ($(KBUILD_EXTMOD),)
+_all: all
+else
+_all: modules
+endif
+
+srctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
+TOPDIR		:= $(srctree)
+# FIXME - TOPDIR is obsolete, use srctree/objtree
+objtree		:= $(CURDIR)
+src		:= $(srctree)
+obj		:= $(objtree)
+
+VPATH		:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
+
+export srctree objtree VPATH TOPDIR
+
+
+# SUBARCH tells the usermode build what the underlying arch is.  That is set
+# first, and if a usermode build is happening, the "ARCH=um" on the command
+# line overrides the setting of ARCH below.  If a native build is happening,
+# then ARCH is assigned, getting whatever value it gets normally, and
+# SUBARCH is subsequently ignored.
+
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
+				  -e s/arm.*/arm/ -e s/sa110/arm/ \
+				  -e s/s390x/s390/ -e s/parisc64/parisc/ \
+				  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
+
+# Cross compiling and selecting different set of gcc/bin-utils
+# ---------------------------------------------------------------------------
+#
+# When performing cross compilation for other architectures ARCH shall be set
+# to the target architecture. (See arch/* for the possibilities).
+# ARCH can be set during invocation of make:
+# make ARCH=ia64
+# Another way is to have ARCH set in the environment.
+# The default ARCH is the host where make is executed.
+
+# CROSS_COMPILE specify the prefix used for all executables used
+# during compilation. Only gcc and related bin-utils executables
+# are prefixed with $(CROSS_COMPILE).
+# CROSS_COMPILE can be set on the command line
+# make CROSS_COMPILE=ia64-linux-
+# Alternatively CROSS_COMPILE can be set in the environment.
+# Default value for CROSS_COMPILE is not to prefix executables
+# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
+
+ARCH		?= $(SUBARCH)
+CROSS_COMPILE	?=
+
+# Architecture as present in compile.h
+UTS_MACHINE := $(ARCH)
+
+# SHELL used by kbuild
+CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
+	  else if [ -x /bin/bash ]; then echo /bin/bash; \
+	  else echo sh; fi ; fi)
+
+# 	Decide whether to build built-in, modular, or both.
+#	Normally, just do built-in.
+
+KBUILD_MODULES :=
+KBUILD_BUILTIN := 1
+
+#	If we have only "make modules", don't compile built-in objects.
+#	When we're building modules with modversions, we need to consider
+#	the built-in objects during the descend as well, in order to
+#	make sure the checksums are uptodate before we record them.
+
+ifeq ($(MAKECMDGOALS),modules)
+  KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
+endif
+
+#	If we have "make <whatever> modules", compile modules
+#	in addition to whatever we do anyway.
+#	Just "make" or "make all" shall build modules as well
+
+ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
+  KBUILD_MODULES := 1
+endif
+
+ifeq ($(MAKECMDGOALS),)
+  KBUILD_MODULES := 1
+endif
+
+export KBUILD_MODULES KBUILD_BUILTIN
+export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
+
+# Beautify output
+# ---------------------------------------------------------------------------
+#
+# Normally, we echo the whole command before executing it. By making
+# that echo $($(quiet)$(cmd)), we now have the possibility to set
+# $(quiet) to choose other forms of output instead, e.g.
+#
+#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
+#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
+#
+# If $(quiet) is empty, the whole command will be printed.
+# If it is set to "quiet_", only the short version will be printed.
+# If it is set to "silent_", nothing wil be printed at all, since
+# the variable $(silent_cmd_cc_o_c) doesn't exist.
+#
+# A simple variant is to prefix commands with $(Q) - that's useful
+# for commands that shall be hidden in non-verbose mode.
+#
+#	$(Q)ln $@ :<
+#
+# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
+# If KBUILD_VERBOSE equals 1 then the above command is displayed.
+
+ifeq ($(KBUILD_VERBOSE),1)
+  quiet =
+  Q =
+else
+  quiet=quiet_
+  Q = @
+endif
+
+# If the user is running make -s (silent mode), suppress echoing of
+# commands
+
+ifneq ($(findstring s,$(MAKEFLAGS)),)
+  quiet=silent_
+endif
+
+export quiet Q KBUILD_VERBOSE
+
+
+# Look for make include files relative to root of kernel src
+MAKEFLAGS += --include-dir=$(srctree)
+
+HOSTCC  	= gcc
+HOSTCXX  	= g++
+HOSTCFLAGS	:=
+HOSTCXXFLAGS	:=
+# We need some generic definitions
+include $(srctree)/scripts/Kbuild.include
+
+HOSTCFLAGS	+= $(call hostcc-option,-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer,)
+HOSTCXXFLAGS	+= -O2
+
+# For maximum performance (+ possibly random breakage, uncomment
+# the following)
+
+MAKEFLAGS += -rR
+
+# Make variables (CC, etc...)
+
+AS		= $(CROSS_COMPILE)as
+CC		= $(CROSS_COMPILE)gcc
+LD		= $(CC) -nostdlib
+CPP		= $(CC) -E
+AR		= $(CROSS_COMPILE)ar
+NM		= $(CROSS_COMPILE)nm
+STRIP		= $(CROSS_COMPILE)strip
+OBJCOPY		= $(CROSS_COMPILE)objcopy
+OBJDUMP		= $(CROSS_COMPILE)objdump
+AWK		= awk
+GENKSYMS	= scripts/genksyms/genksyms
+DEPMOD		= /sbin/depmod
+KALLSYMS	= scripts/kallsyms
+PERL		= perl
+CHECK		= sparse
+
+CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(CF)
+MODFLAGS	= -DMODULE
+CFLAGS_MODULE   = $(MODFLAGS)
+AFLAGS_MODULE   = $(MODFLAGS)
+LDFLAGS_MODULE  = -r
+CFLAGS_KERNEL	=
+AFLAGS_KERNEL	=
+
+
+# Use LINUXINCLUDE when you must reference the include/ directory.
+# Needed to be compatible with the O= option
+CFLAGS		:= $(CFLAGS)
+CPPFLAGS	:= $(CPPFLAGS)
+AFLAGS		:= $(AFLAGS)
+LDFLAGS		:= $(LDFLAGS)
+LDLIBS		:=
+
+# Read KERNELRELEASE from .kernelrelease (if it exists)
+KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null)
+KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+
+export	VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION \
+	ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
+	CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
+	HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
+
+export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
+export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
+export AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
+export FLTFLAGS
+
+# When compiling out-of-tree modules, put MODVERDIR in the module
+# tree rather than in the kernel tree. The kernel tree might
+# even be read-only.
+export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
+
+# Files to ignore in find ... statements
+
+RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg -o -name .git \) -prune -o
+export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg --exclude .git
+
+# ===========================================================================
+# Rules shared between *config targets and build targets
+
+# Basic helpers built in scripts/
+PHONY += scripts_basic
+scripts_basic:
+	$(Q)$(MAKE) $(build)=scripts/basic
+
+# To avoid any implicit rule to kick in, define an empty command.
+scripts/basic/%: scripts_basic ;
+
+PHONY += outputmakefile
+# outputmakefile generates a Makefile in the output directory, if using a
+# separate output directory. This allows convenient use of make in the
+# output directory.
+outputmakefile:
+ifneq ($(KBUILD_SRC),)
+	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
+	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
+endif
+
+# To make sure we do not include .config for any of the *config targets
+# catch them early, and hand them over to scripts/kconfig/Makefile
+# It is allowed to specify more targets when calling make, including
+# mixing *config targets and build targets.
+# For example 'make oldconfig all'.
+# Detect when mixed targets is specified, and make a second invocation
+# of make so .config is not included in this case either (for *config).
+
+no-dot-config-targets := clean mrproper distclean \
+			 cscope TAGS tags help %docs check%
+
+config-targets := 0
+mixed-targets  := 0
+dot-config     := 1
+
+ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
+	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
+		dot-config := 0
+	endif
+endif
+
+ifeq ($(KBUILD_EXTMOD),)
+        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
+                config-targets := 1
+                ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
+                        mixed-targets := 1
+                endif
+        endif
+endif
+
+ifeq ($(mixed-targets),1)
+# ===========================================================================
+# We're called with mixed targets (*config and build targets).
+# Handle them one by one.
+
+%:: FORCE
+	$(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@
+
+else
+ifeq ($(config-targets),1)
+# ===========================================================================
+# *config targets only - make sure prerequisites are updated, and descend
+# in scripts/kconfig to make the *config target
+
+# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
+# KBUILD_DEFCONFIG may point out an alternative default configuration
+# used for 'make defconfig'
+-include $(srctree)/arch/$(ARCH)/Makefile
+export KBUILD_DEFCONFIG
+
+config %config: scripts_basic outputmakefile FORCE
+	$(Q)mkdir -p include
+	$(Q)$(MAKE) $(build)=scripts/kconfig $@
+	$(Q)$(MAKE) -C $(srctree) KBUILD_SRC= .kernelrelease
+
+else
+# ===========================================================================
+# Build targets only - this includes busybox, arch specific targets, clean
+# targets and others. In general all targets except *config targets.
+
+ifeq ($(KBUILD_EXTMOD),)
+# Additional helpers built in scripts/
+# Carefully list dependencies so we do not try to build scripts twice
+# in parrallel
+PHONY += scripts
+scripts: scripts_basic include/config/MARKER
+	$(Q)$(MAKE) $(build)=$(@)
+
+scripts_basic: include/autoconf.h
+
+# Objects we will link into busybox / subdirs we need to visit
+core-y		:= \
+		applets/ \
+
+libs-y		:= \
+		archival/ \
+		archival/libunarchive/ \
+		console-tools/ \
+		coreutils/ \
+		coreutils/libcoreutils/ \
+		debianutils/ \
+		e2fsprogs/ \
+		editors/ \
+		findutils/ \
+		init/ \
+		ipsvd/ \
+		libbb/ \
+		libpwdgrp/ \
+		loginutils/ \
+		miscutils/ \
+		modutils/ \
+		networking/ \
+		networking/libiproute/ \
+		networking/udhcp/ \
+		procps/ \
+		runit/ \
+		selinux/ \
+		shell/ \
+		sysklogd/ \
+		util-linux/ \
+
+endif # KBUILD_EXTMOD
+
+ifeq ($(dot-config),1)
+# In this section, we need .config
+
+# Read in dependencies to all Kconfig* files, make sure to run
+# oldconfig if changes are detected.
+-include .kconfig.d
+
+-include .config
+
+# If .config needs to be updated, it will be done via the dependency
+# that autoconf has on .config.
+# To avoid any implicit rule to kick in, define an empty command
+.config .kconfig.d: ;
+
+# Now we can define CFLAGS etc according to .config
+include $(srctree)/Makefile.flags
+
+# If .config is newer than include/autoconf.h, someone tinkered
+# with it and forgot to run make oldconfig.
+# If kconfig.d is missing then we are probarly in a cleaned tree so
+# we execute the config step to be sure to catch updated Kconfig files
+include/autoconf.h: .kconfig.d .config
+	$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
+
+else
+# Dummy target needed, because used as prerequisite
+include/autoconf.h: ;
+endif
+
+# The all: target is the default when no target is given on the
+# command line.
+# This allow a user to issue only 'make' to build a kernel including modules
+# Defaults busybox but it is usually overridden in the arch makefile
+all: busybox
+
+-include $(srctree)/arch/$(ARCH)/Makefile
+
+# arch Makefile may override CC so keep this after arch Makefile is included
+#bbox# NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+CHECKFLAGS += $(NOSTDINC_FLAGS)
+
+# warn about C99 declaration after statement
+CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+
+# disable pointer signedness warnings in gcc 4.0
+CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+
+# Default kernel image to build when no specific target is given.
+# KBUILD_IMAGE may be overruled on the commandline or
+# set in the environment
+# Also any assignments in arch/$(ARCH)/Makefile take precedence over
+# this default value
+export KBUILD_IMAGE ?= busybox
+
+#
+# INSTALL_PATH specifies where to place the updated kernel and system map
+# images. Default is /boot, but you can set it to other values
+export	INSTALL_PATH ?= /boot
+
+#
+# INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
+# relocations required by build roots.  This is not defined in the
+# makefile but the arguement can be passed to make if needed.
+#
+
+MODLIB	= $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
+export MODLIB
+
+
+ifeq ($(KBUILD_EXTMOD),)
+busybox-dirs	:= $(patsubst %/,%,$(filter %/, $(core-y) $(core-m) $(libs-y) $(libs-m)))
+
+busybox-alldirs	:= $(sort $(busybox-dirs) $(patsubst %/,%,$(filter %/, \
+		     $(core-n) $(core-) $(libs-n) $(libs-) \
+		)))
+
+core-y		:= $(patsubst %/, %/built-in.o, $(core-y))
+libs-y1		:= $(patsubst %/, %/lib.a, $(libs-y))
+libs-y2		:= $(patsubst %/, %/built-in.o, $(libs-y))
+libs-y		:= $(libs-y1) $(libs-y2)
+
+# Build busybox
+# ---------------------------------------------------------------------------
+# busybox is build from the objects selected by $(busybox-init) and
+# $(busybox-main). Most are built-in.o files from top-level directories
+# in the kernel tree, others are specified in arch/$(ARCH)Makefile.
+# Ordering when linking is important, and $(busybox-init) must be first.
+#
+# busybox
+#   ^
+#   |
+#   +-< $(busybox-init)
+#   |   +--< init/version.o + more
+#   |
+#   +--< $(busybox-main)
+#   |    +--< driver/built-in.o mm/built-in.o + more
+#   |
+#   +-< kallsyms.o (see description in CONFIG_KALLSYMS section)
+#
+# busybox version (uname -v) cannot be updated during normal
+# descending-into-subdirs phase since we do not yet know if we need to
+# update busybox.
+# Therefore this step is delayed until just before final link of busybox -
+# except in the kallsyms case where it is done just before adding the
+# symbols to the kernel.
+#
+# System.map is generated to document addresses of all kernel symbols
+
+busybox-all  := $(core-y) $(libs-y)
+
+# Rule to link busybox - also used during CONFIG_KALLSYMS
+# May be overridden by arch/$(ARCH)/Makefile
+quiet_cmd_busybox__ ?= LINK    $@
+      cmd_busybox__ ?= $(srctree)/scripts/trylink $(CC) $(LDFLAGS) \
+      -o $@ -Wl,-Map -Wl,$@.map \
+      -Wl,--warn-common -Wl,--sort-common  \
+      -Wl,--start-group $(busybox-all) -Wl,--end-group \
+      $(LDLIBS)
+
+# Generate System.map
+quiet_cmd_sysmap = SYSMAP
+      cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap
+
+# Link of busybox
+# If CONFIG_KALLSYMS is set .version is already updated
+# Generate System.map and verify that the content is consistent
+# Use + in front of the busybox_version rule to silent warning with make -j2
+# First command is ':' to allow us to use + in front of the rule
+define rule_busybox__
+	:
+	$(call cmd,busybox__)
+	$(Q)echo 'cmd_$@ := $(cmd_busybox__)' > $(@D)/.$(@F).cmd
+endef
+
+
+ifdef CONFIG_KALLSYMS
+# Generate section listing all symbols and add it into busybox $(kallsyms.o)
+# It's a three stage process:
+# o .tmp_busybox1 has all symbols and sections, but __kallsyms is
+#   empty
+#   Running kallsyms on that gives us .tmp_kallsyms1.o with
+#   the right size - busybox version (uname -v) is updated during this step
+# o .tmp_busybox2 now has a __kallsyms section of the right size,
+#   but due to the added section, some addresses have shifted.
+#   From here, we generate a correct .tmp_kallsyms2.o
+# o The correct .tmp_kallsyms2.o is linked into the final busybox.
+# o Verify that the System.map from busybox matches the map from
+#   .tmp_busybox2, just in case we did not generate kallsyms correctly.
+# o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using
+#   .tmp_busybox3 and .tmp_kallsyms3.o.  This is only meant as a
+#   temporary bypass to allow the kernel to be built while the
+#   maintainers work out what went wrong with kallsyms.
+
+ifdef CONFIG_KALLSYMS_EXTRA_PASS
+last_kallsyms := 3
+else
+last_kallsyms := 2
+endif
+
+kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
+
+define verify_kallsyms
+	$(Q)$(if $($(quiet)cmd_sysmap),                       \
+	  echo '  $($(quiet)cmd_sysmap) .tmp_System.map' &&)  \
+	  $(cmd_sysmap) .tmp_busybox$(last_kallsyms) .tmp_System.map
+	$(Q)cmp -s System.map .tmp_System.map ||              \
+		(echo Inconsistent kallsyms data;             \
+		 echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \
+		 rm .tmp_kallsyms* ; /bin/false )
+endef
+
+# Update busybox version before link
+# Use + in front of this rule to silent warning about make -j1
+# First command is ':' to allow us to use + in front of this rule
+cmd_ksym_ld = $(cmd_busybox__)
+define rule_ksym_ld
+	:
+	+$(call cmd,busybox_version)
+	$(call cmd,busybox__)
+	$(Q)echo 'cmd_$@ := $(cmd_busybox__)' > $(@D)/.$(@F).cmd
+endef
+
+# Generate .S file with all kernel symbols
+quiet_cmd_kallsyms = KSYM    $@
+      cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
+                     $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
+
+.tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
+	$(call if_changed_dep,as_o_S)
+
+.tmp_kallsyms%.S: .tmp_busybox% $(KALLSYMS)
+	$(call cmd,kallsyms)
+
+# .tmp_busybox1 must be complete except kallsyms, so update busybox version
+.tmp_busybox1: $(busybox-lds) $(busybox-all) FORCE
+	$(call if_changed_rule,ksym_ld)
+
+.tmp_busybox2: $(busybox-lds) $(busybox-all) .tmp_kallsyms1.o FORCE
+	$(call if_changed,busybox__)
+
+.tmp_busybox3: $(busybox-lds) $(busybox-all) .tmp_kallsyms2.o FORCE
+	$(call if_changed,busybox__)
+
+# Needs to visit scripts/ before $(KALLSYMS) can be used.
+$(KALLSYMS): scripts ;
+
+# Generate some data for debugging strange kallsyms problems
+debug_kallsyms: .tmp_map$(last_kallsyms)
+
+.tmp_map%: .tmp_busybox% FORCE
+	($(OBJDUMP) -h $< | $(AWK) '/^ +[0-9]/{print $$4 " 0 " $$2}'; $(NM) $<) | sort > $@
+
+.tmp_map3: .tmp_map2
+
+.tmp_map2: .tmp_map1
+
+endif # ifdef CONFIG_KALLSYMS
+
+# busybox image - including updated kernel symbols
+busybox_unstripped: $(busybox-all) FORCE
+	$(call if_changed_rule,busybox__)
+	$(Q)rm -f .old_version
+
+busybox: busybox_unstripped
+ifeq ($(SKIP_STRIP),y)
+	$(Q)cp $< $@
+else
+	$(Q)$(STRIP) -s --remove-section=.note --remove-section=.comment \
+		busybox_unstripped -o $@
+endif
+
+# The actual objects are generated when descending,
+# make sure no implicit rule kicks in
+$(sort $(busybox-all)): $(busybox-dirs) ;
+
+# Handle descending into subdirectories listed in $(busybox-dirs)
+# Preset locale variables to speed up the build process. Limit locale
+# tweaks to this spot to avoid wrong language settings when running
+# make menuconfig etc.
+# Error messages still appears in the original language
+
+PHONY += $(busybox-dirs)
+$(busybox-dirs): prepare scripts
+	$(Q)$(MAKE) $(build)=$@
+
+# Build the kernel release string
+# The KERNELRELEASE is stored in a file named .kernelrelease
+# to be used when executing for example make install or make modules_install
+#
+# Take the contents of any files called localversion* and the config
+# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE.
+# LOCALVERSION from the command line override all of this
+
+nullstring :=
+space      := $(nullstring) # end of line
+
+___localver = $(objtree)/localversion* $(srctree)/localversion*
+__localver  = $(sort $(wildcard $(___localver)))
+# skip backup files (containing '~')
+_localver = $(foreach f, $(__localver), $(if $(findstring ~, $(f)),,$(f)))
+
+localver = $(subst $(space),, \
+	   $(shell cat /dev/null $(_localver)) \
+	   $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
+
+# If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called
+# and if the SCM is know a tag from the SCM is appended.
+# The appended tag is determinded by the SCM used.
+#
+# Currently, only git is supported.
+# Other SCMs can edit scripts/setlocalversion and add the appropriate
+# checks as needed.
+ifdef CONFIG_LOCALVERSION_AUTO
+	_localver-auto = $(shell $(CONFIG_SHELL) \
+	                  $(srctree)/scripts/setlocalversion $(srctree))
+	localver-auto  = $(LOCALVERSION)$(_localver-auto)
+endif
+
+localver-full = $(localver)$(localver-auto)
+
+# Store (new) KERNELRELASE string in .kernelrelease
+kernelrelease = $(KERNELVERSION)$(localver-full)
+.kernelrelease: FORCE
+	$(Q)rm -f $@
+	$(Q)echo $(kernelrelease) > $@
+
+
+# Things we need to do before we recursively start building the kernel
+# or the modules are listed in "prepare".
+# A multi level approach is used. prepareN is processed before prepareN-1.
+# archprepare is used in arch Makefiles and when processed asm symlink,
+# version.h and scripts_basic is processed / created.
+
+# Listed in dependency order
+PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
+
+# prepare-all is deprecated, use prepare as valid replacement
+PHONY += prepare-all
+
+# prepare3 is used to check if we are building in a separate output directory,
+# and if so do:
+# 1) Check that make has not been executed in the kernel src $(srctree)
+# 2) Create the include2 directory, used for the second asm symlink
+prepare3: .kernelrelease
+ifneq ($(KBUILD_SRC),)
+	@echo '  Using $(srctree) as source for busybox'
+	$(Q)if [ -f $(srctree)/.config ]; then \
+		echo "  $(srctree) is not clean, please run 'make mrproper'";\
+		echo "  in the '$(srctree)' directory.";\
+		/bin/false; \
+	fi;
+	$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
+	$(Q)ln -fsn $(srctree)/include/asm-$(ARCH) include2/asm
+endif
+
+# prepare2 creates a makefile if using a separate output directory
+prepare2: prepare3 outputmakefile
+
+prepare1: prepare2 include/config/MARKER
+ifneq ($(KBUILD_MODULES),)
+	$(Q)mkdir -p $(MODVERDIR)
+	$(Q)rm -f $(MODVERDIR)/*
+endif
+
+archprepare: prepare1 scripts_basic
+
+prepare0: archprepare FORCE
+	$(Q)$(MAKE) $(build)=.
+
+# All the preparing..
+prepare prepare-all: prepare0
+
+#	Leave this as default for preprocessing busybox.lds.S, which is now
+#	done in arch/$(ARCH)/kernel/Makefile
+
+export CPPFLAGS_busybox.lds += -P -C -U$(ARCH)
+
+# 	FIXME: The asm symlink changes when $(ARCH) changes. That's
+#	hard to detect, but I suppose "make mrproper" is a good idea
+#	before switching between archs anyway.
+
+#bbox# include/asm:
+#bbox# 	@echo '  SYMLINK $@ -> include/asm-$(ARCH)'
+#bbox# 	$(Q)if [ ! -d include ]; then mkdir -p include; fi;
+#bbox# 	@ln -fsn asm-$(ARCH) $@
+
+# 	Split autoconf.h into include/linux/config/*
+quiet_cmd_gen_bbconfigopts = GEN     include/bbconfigopts.h
+      cmd_gen_bbconfigopts = $(srctree)/scripts/mkconfigs > include/bbconfigopts.h
+quiet_cmd_split_autoconf   = SPLIT   include/autoconf.h -> include/config/*
+      cmd_split_autoconf   = scripts/basic/split-include include/autoconf.h include/config
+#bbox# piggybacked generation of few .h files
+include/config/MARKER: scripts/basic/split-include include/autoconf.h
+	$(call cmd,split_autoconf)
+	$(call cmd,gen_bbconfigopts)
+	@touch $@
+
+# Generate some files
+# ---------------------------------------------------------------------------
+
+# KERNELRELEASE can change from a few different places, meaning version.h
+# needs to be updated, so this check is forced on all builds
+
+uts_len := 64
+
+define filechk_version.h
+	if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \
+	  echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \
+	  exit 1; \
+	fi; \
+	(echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
+	  echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
+	 echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
+	)
+endef
+
+# ---------------------------------------------------------------------------
+
+PHONY += depend dep
+depend dep:
+	@echo '*** Warning: make $@ is unnecessary now.'
+
+# ---------------------------------------------------------------------------
+# Modules
+
+ifdef CONFIG_MODULES
+
+# 	By default, build modules as well
+
+all: modules
+
+#	Build modules
+
+PHONY += modules
+modules: $(busybox-dirs) $(if $(KBUILD_BUILTIN),busybox)
+	@echo '  Building modules, stage 2.';
+	$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+
+
+# Target to prepare building external modules
+PHONY += modules_prepare
+modules_prepare: prepare scripts
+
+# Target to install modules
+PHONY += modules_install
+modules_install: _modinst_ _modinst_post
+
+PHONY += _modinst_
+_modinst_:
+	@if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
+		echo "Warning: you may need to install module-init-tools"; \
+		echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
+		sleep 1; \
+	fi
+	@rm -rf $(MODLIB)/kernel
+	@rm -f $(MODLIB)/source
+	@mkdir -p $(MODLIB)/kernel
+	@ln -s $(srctree) $(MODLIB)/source
+	@if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
+		rm -f $(MODLIB)/build ; \
+		ln -s $(objtree) $(MODLIB)/build ; \
+	fi
+	$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
+
+# If System.map exists, run depmod.  This deliberately does not have a
+# dependency on System.map since that would run the dependency tree on
+# busybox.  This depmod is only for convenience to give the initial
+# boot a modules.dep even before / is mounted read-write.  However the
+# boot script depmod is the master version.
+ifeq "$(strip $(INSTALL_MOD_PATH))" ""
+depmod_opts	:=
+else
+depmod_opts	:= -b $(INSTALL_MOD_PATH) -r
+endif
+PHONY += _modinst_post
+_modinst_post: _modinst_
+	if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi
+
+else # CONFIG_MODULES
+
+# Modules not configured
+# ---------------------------------------------------------------------------
+
+modules modules_install: FORCE
+	@echo
+	@echo "The present busybox configuration has modules disabled."
+	@echo "Type 'make config' and enable loadable module support."
+	@echo "Then build a kernel with module support enabled."
+	@echo
+	@exit 1
+
+endif # CONFIG_MODULES
+
+###
+# Cleaning is done on three levels.
+# make clean     Delete most generated files
+#                Leave enough to build external modules
+# make mrproper  Delete the current configuration, and all generated files
+# make distclean Remove editor backup files, patch leftover files and the like
+
+# Directories & files removed with 'make clean'
+CLEAN_DIRS  += $(MODVERDIR)
+CLEAN_FILES +=	busybox* System.map .kernelrelease \
+                .tmp_kallsyms* .tmp_version .tmp_busybox* .tmp_System.map
+
+# Directories & files removed with 'make mrproper'
+MRPROPER_DIRS  += include/config include2
+MRPROPER_FILES += .config .config.old include/asm .version .old_version \
+		  include/autoconf.h \
+		  include/bbconfigopts.h \
+		  include/usage_compressed.h \
+		  .kernelrelease Module.symvers tags TAGS cscope*
+
+# clean - Delete most, but leave enough to build external modules
+#
+clean: rm-dirs  := $(CLEAN_DIRS)
+clean: rm-files := $(CLEAN_FILES)
+clean-dirs      := $(addprefix _clean_,$(srctree) $(busybox-alldirs))
+
+PHONY += $(clean-dirs) clean archclean
+$(clean-dirs):
+	$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
+
+clean: archclean $(clean-dirs)
+	$(call cmd,rmdirs)
+	$(call cmd,rmfiles)
+	@find . $(RCS_FIND_IGNORE) \
+	 	\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
+		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \
+		-type f -print | xargs rm -f
+
+# mrproper - Delete all generated files, including .config
+#
+mrproper: rm-dirs  := $(wildcard $(MRPROPER_DIRS))
+mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
+mrproper-dirs      := $(addprefix _mrproper_,scripts)
+
+PHONY += $(mrproper-dirs) mrproper archmrproper
+$(mrproper-dirs):
+	$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
+
+mrproper: clean archmrproper $(mrproper-dirs)
+	$(call cmd,rmdirs)
+	$(call cmd,rmfiles)
+
+# distclean
+#
+PHONY += distclean
+
+distclean: mrproper
+	@find $(srctree) $(RCS_FIND_IGNORE) \
+	 	\( -name '*.orig' -o -name '*.rej' -o -name '*~' \
+		-o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
+	 	-o -name '.*.rej' -o -size 0 \
+		-o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
+		-type f -print | xargs rm -f
+
+
+# Packaging of the kernel to various formats
+# ---------------------------------------------------------------------------
+# rpm target kept for backward compatibility
+package-dir	:= $(srctree)/scripts/package
+
+%pkg: FORCE
+	$(Q)$(MAKE) $(build)=$(package-dir) $@
+rpm: FORCE
+	$(Q)$(MAKE) $(build)=$(package-dir) $@
+
+
+# Brief documentation of the typical targets used
+# ---------------------------------------------------------------------------
+
+boards := $(wildcard $(srctree)/arch/$(ARCH)/configs/*_defconfig)
+boards := $(notdir $(boards))
+
+-include $(srctree)/Makefile.help
+
+# Documentation targets
+# ---------------------------------------------------------------------------
+%docs: scripts_basic FORCE
+	$(Q)$(MAKE) $(build)=Documentation/DocBook $@
+
+else # KBUILD_EXTMOD
+
+###
+# External module support.
+# When building external modules the kernel used as basis is considered
+# read-only, and no consistency checks are made and the make
+# system is not used on the basis kernel. If updates are required
+# in the basis kernel ordinary make commands (without M=...) must
+# be used.
+#
+# The following are the only valid targets when building external
+# modules.
+# make M=dir clean     Delete all automatically generated files
+# make M=dir modules   Make all modules in specified dir
+# make M=dir	       Same as 'make M=dir modules'
+# make M=dir modules_install
+#                      Install the modules build in the module directory
+#                      Assumes install directory is already created
+
+# We are always building modules
+KBUILD_MODULES := 1
+PHONY += crmodverdir
+crmodverdir:
+	$(Q)mkdir -p $(MODVERDIR)
+	$(Q)rm -f $(MODVERDIR)/*
+
+PHONY += $(objtree)/Module.symvers
+$(objtree)/Module.symvers:
+	@test -e $(objtree)/Module.symvers || ( \
+	echo; \
+	echo "  WARNING: Symbol version dump $(objtree)/Module.symvers"; \
+	echo "           is missing; modules will have no dependencies and modversions."; \
+	echo )
+
+module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
+PHONY += $(module-dirs) modules
+$(module-dirs): crmodverdir $(objtree)/Module.symvers
+	$(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
+
+modules: $(module-dirs)
+	@echo '  Building modules, stage 2.';
+	$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+
+PHONY += modules_install
+modules_install: _emodinst_ _emodinst_post
+
+install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
+PHONY += _emodinst_
+_emodinst_:
+	$(Q)mkdir -p $(MODLIB)/$(install-dir)
+	$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
+
+# Run depmod only is we have System.map and depmod is executable
+quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
+      cmd_depmod = if [ -r System.map -a -x $(DEPMOD) ]; then \
+                      $(DEPMOD) -ae -F System.map             \
+                      $(if $(strip $(INSTALL_MOD_PATH)),      \
+		      -b $(INSTALL_MOD_PATH) -r)              \
+		      $(KERNELRELEASE);                       \
+                   fi
+
+PHONY += _emodinst_post
+_emodinst_post: _emodinst_
+	$(call cmd,depmod)
+
+clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD))
+
+PHONY += $(clean-dirs) clean
+$(clean-dirs):
+	$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
+
+clean:	rm-dirs := $(MODVERDIR)
+clean: $(clean-dirs)
+	$(call cmd,rmdirs)
+	@find $(KBUILD_EXTMOD) $(RCS_FIND_IGNORE) \
+	 	\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
+		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \
+		-type f -print | xargs rm -f
+
+help:
+	@echo  '  Building external modules.'
+	@echo  '  Syntax: make -C path/to/kernel/src M=$$PWD target'
+	@echo  ''
+	@echo  '  modules         - default target, build the module(s)'
+	@echo  '  modules_install - install the module'
+	@echo  '  clean           - remove generated files in module directory only'
+	@echo  ''
+
+# Dummies...
+PHONY += prepare scripts
+prepare: ;
+scripts: ;
+endif # KBUILD_EXTMOD
+
+# Generate tags for editors
+# ---------------------------------------------------------------------------
+
+#We want __srctree to totally vanish out when KBUILD_OUTPUT is not set
+#(which is the most common case IMHO) to avoid unneeded clutter in the big tags file.
+#Adding $(srctree) adds about 20M on i386 to the size of the output file!
+
+ifeq ($(src),$(obj))
+__srctree =
+else
+__srctree = $(srctree)/
+endif
+
+ifeq ($(ALLSOURCE_ARCHS),)
+ifeq ($(ARCH),um)
+ALLINCLUDE_ARCHS := $(ARCH) $(SUBARCH)
+else
+ALLINCLUDE_ARCHS := $(ARCH)
+endif
+else
+#Allow user to specify only ALLSOURCE_PATHS on the command line, keeping existing behaviour.
+ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS)
+endif
+
+ALLSOURCE_ARCHS := $(ARCH)
+
+define all-sources
+	( find $(__srctree) $(RCS_FIND_IGNORE) \
+	       \( -name include -o -name arch \) -prune -o \
+	       -name '*.[chS]' -print; \
+	  for ARCH in $(ALLSOURCE_ARCHS) ; do \
+	       find $(__srctree)arch/$${ARCH} $(RCS_FIND_IGNORE) \
+	            -name '*.[chS]' -print; \
+	  done ; \
+	  find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \
+	       -name '*.[chS]' -print; \
+	  find $(__srctree)include $(RCS_FIND_IGNORE) \
+	       \( -name config -o -name 'asm-*' \) -prune \
+	       -o -name '*.[chS]' -print; \
+	  for ARCH in $(ALLINCLUDE_ARCHS) ; do \
+	       find $(__srctree)include/asm-$${ARCH} $(RCS_FIND_IGNORE) \
+	            -name '*.[chS]' -print; \
+	  done ; \
+	  find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
+	       -name '*.[chS]' -print )
+endef
+
+quiet_cmd_cscope-file = FILELST cscope.files
+      cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files
+
+quiet_cmd_cscope = MAKE    cscope.out
+      cmd_cscope = cscope -b
+
+cscope: FORCE
+	$(call cmd,cscope-file)
+	$(call cmd,cscope)
+
+quiet_cmd_TAGS = MAKE   $@
+define cmd_TAGS
+	rm -f $@; \
+	ETAGSF=`etags --version | grep -i exuberant >/dev/null &&     \
+                echo "-I __initdata,__exitdata,__acquires,__releases  \
+                      -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL              \
+                      --extra=+f --c-kinds=+px"`;                     \
+                $(all-sources) | xargs etags $$ETAGSF -a
+endef
+
+TAGS: FORCE
+	$(call cmd,TAGS)
+
+
+quiet_cmd_tags = MAKE   $@
+define cmd_tags
+	rm -f $@; \
+	CTAGSF=`ctags --version | grep -i exuberant >/dev/null &&     \
+                echo "-I __initdata,__exitdata,__acquires,__releases  \
+                      -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL              \
+                      --extra=+f --c-kinds=+px"`;                     \
+                $(all-sources) | xargs ctags $$CTAGSF -a
+endef
+
+tags: FORCE
+	$(call cmd,tags)
+
+
+# Scripts to check various things for consistency
+# ---------------------------------------------------------------------------
+
+includecheck:
+	find * $(RCS_FIND_IGNORE) \
+		-name '*.[hcS]' -type f -print | sort \
+		| xargs $(PERL) -w scripts/checkincludes.pl
+
+versioncheck:
+	find * $(RCS_FIND_IGNORE) \
+		-name '*.[hcS]' -type f -print | sort \
+		| xargs $(PERL) -w scripts/checkversion.pl
+
+namespacecheck:
+	$(PERL) $(srctree)/scripts/namespace.pl
+
+endif #ifeq ($(config-targets),1)
+endif #ifeq ($(mixed-targets),1)
+
+PHONY += checkstack
+checkstack:
+	$(OBJDUMP) -d busybox $$(find . -name '*.ko') | \
+	$(PERL) $(src)/scripts/checkstack.pl $(ARCH)
+
+kernelrelease:
+	$(if $(wildcard .kernelrelease), $(Q)echo $(KERNELRELEASE), \
+	$(error kernelrelease not valid - run 'make *config' to update it))
+kernelversion:
+	@echo $(KERNELVERSION)
+
+# Single targets
+# ---------------------------------------------------------------------------
+# Single targets are compatible with:
+# - build whith mixed source and output
+# - build with separate output dir 'make O=...'
+# - external modules
+#
+#  target-dir => where to store outputfile
+#  build-dir  => directory in kernel source tree to use
+
+ifeq ($(KBUILD_EXTMOD),)
+        build-dir  = $(patsubst %/,%,$(dir $@))
+        target-dir = $(dir $@)
+else
+        zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
+        build-dir  = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
+        target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
+endif
+
+%.s: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.i: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.o: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.lst: %.c prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.s: %.S prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+%.o: %.S prepare scripts FORCE
+	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+
+# Modules
+/ %/: prepare scripts FORCE
+	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
+	$(build)=$(build-dir)
+%.ko: prepare scripts FORCE
+	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
+	$(build)=$(build-dir) $(@:.ko=.o)
+	$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+
+# FIXME Should go into a make.lib or something
+# ===========================================================================
+
+quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN   $(wildcard $(rm-dirs)))
+      cmd_rmdirs = rm -rf $(rm-dirs)
+
+quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN   $(wildcard $(rm-files)))
+      cmd_rmfiles = rm -f $(rm-files)
+
+
+a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(AFLAGS_KERNEL) \
+	  $(NOSTDINC_FLAGS) $(CPPFLAGS) \
+	  $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o)
+
+quiet_cmd_as_o_S = AS      $@
+cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $<
+
+# read all saved command lines
+
+targets := $(wildcard $(sort $(targets)))
+cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
+
+ifneq ($(cmd_files),)
+  $(cmd_files): ;	# Do not try to update included dependency files
+  include $(cmd_files)
+endif
+
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
+# Usage:
+# $(Q)$(MAKE) $(clean)=dir
+clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
+
+endif	# skip-makefile
+
+PHONY += FORCE
+FORCE:
+
+-include $(srctree)/Makefile.custom
+
+# Declare the contents of the .PHONY variable as phony.  We keep that
+# information in a variable se we can use it in if_changed and friends.
+.PHONY: $(PHONY)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.custom
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.custom	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.custom	(revision 20)
@@ -0,0 +1,149 @@
+# ==========================================================================
+# Build system
+# ==========================================================================
+
+busybox.links: $(srctree)/applets/busybox.mkll $(objtree)/include/autoconf.h $(srctree)/include/applets.h
+	$(Q)-$(SHELL) $^ >$@
+
+.PHONY: install
+ifeq ($(CONFIG_INSTALL_APPLET_SYMLINKS),y)
+INSTALL_OPTS:= --symlinks
+endif
+ifeq ($(CONFIG_INSTALL_APPLET_HARDLINKS),y)
+INSTALL_OPTS:= --hardlinks
+endif
+install: $(srctree)/applets/install.sh busybox busybox.links
+	$(Q)DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
+		$(SHELL) $< $(CONFIG_PREFIX) $(INSTALL_OPTS)
+ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
+	@echo
+	@echo
+	@echo --------------------------------------------------
+	@echo You will probably need to make your busybox binary
+	@echo setuid root to ensure all configured applets will
+	@echo work properly.
+	@echo --------------------------------------------------
+	@echo
+endif
+
+uninstall: busybox.links
+	rm -f $(CONFIG_PREFIX)/bin/busybox
+	for i in `cat busybox.links` ; do rm -f $(CONFIG_PREFIX)$$i; done
+ifneq ($(strip $(DO_INSTALL_LIBS)),n)
+	for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \
+		rm -f $(CONFIG_PREFIX)$$i; \
+	done
+endif
+
+check test: busybox busybox.links
+	bindir=$(objtree) srcdir=$(srctree)/testsuite SED="$(SED)" \
+	$(SHELL) $(srctree)/testsuite/runtest $(if $(KBUILD_VERBOSE:0=),-v)
+
+.PHONY: release
+release: distclean
+	cd ..; \
+	rm -r -f busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION); \
+	cp -a busybox busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) && { \
+	find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type d \
+		-name .svn \
+		-print \
+		-exec rm -r -f {} \; ; \
+	find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
+		-name .\#* \
+		-print \
+		-exec rm -f {} \; ; \
+	tar -czf busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION).tar.gz \
+		busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ ; }
+
+.PHONY: checkhelp
+checkhelp:
+	$(Q)$(srctree)/scripts/checkhelp.awk \
+		$(patsubst %,$(srctree)/%,$(wildcard $(patsubst %,%/Config.in,$(busybox-dirs) ./)))
+
+.PHONY: sizes
+sizes: busybox_unstripped
+	$(NM) --size-sort $(<)
+
+.PHONY: bloatcheck
+bloatcheck: busybox_old busybox_unstripped
+	@$(srctree)/scripts/bloat-o-meter busybox_old busybox_unstripped
+	@$(CROSS_COMPILE)size busybox_old busybox_unstripped
+
+.PHONY: baseline
+baseline: busybox_unstripped
+	@mv busybox_unstripped busybox_old
+
+.PHONY: objsizes
+objsizes: busybox_unstripped
+	$(srctree)/scripts/objsizes
+
+.PHONY: stksizes
+stksizes: busybox_unstripped
+	$(CROSS_COMPILE)objdump -d busybox_unstripped | $(srctree)/scripts/checkstack.pl $(ARCH)
+
+.PHONY: bigdata
+bigdata: busybox_unstripped
+	$(CROSS_COMPILE)nm --size-sort busybox_unstripped | grep -vi ' [tr] '
+
+# Documentation Targets
+.PHONY: doc
+doc: docs/busybox.pod docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html
+
+docs/busybox.pod: $(srctree)/docs/busybox_header.pod \
+		$(srctree)/include/usage.h \
+		$(srctree)/docs/busybox_footer.pod \
+		$(srctree)/docs/autodocifier.pl
+	$(disp_doc)
+	$(Q)-mkdir -p docs
+	$(Q)-( cat $(srctree)/docs/busybox_header.pod ; \
+	    $(srctree)/docs/autodocifier.pl $(srctree)/include/usage.h ; \
+	    cat $(srctree)/docs/busybox_footer.pod ; ) > docs/busybox.pod
+
+docs/BusyBox.txt: docs/busybox.pod
+	$(disp_doc)
+	$(Q)-mkdir -p docs
+	$(Q)-pod2text $< > $@
+
+docs/BusyBox.1: docs/busybox.pod
+	$(disp_doc)
+	$(Q)-mkdir -p docs
+	$(Q)-pod2man --center=BusyBox --release="version $(VERSION)" \
+		$< > $@
+
+docs/BusyBox.html: docs/busybox.net/BusyBox.html
+	$(disp_doc)
+	$(Q)-mkdir -p docs
+	$(Q)-rm -f docs/BusyBox.html
+	$(Q)-cp docs/busybox.net/BusyBox.html docs/BusyBox.html
+
+docs/busybox.net/BusyBox.html: docs/busybox.pod
+	$(Q)-mkdir -p docs/busybox.net
+	$(Q)-pod2html --noindex $< > \
+	    docs/busybox.net/BusyBox.html
+	$(Q)-rm -f pod2htm*
+
+# documentation, cross-reference
+# Modern distributions already ship synopsis packages (e.g. debian)
+# If you have an old distribution go to http://synopsis.fresco.org/
+syn_tgt = $(wildcard $(patsubst %,%/*.c,$(busybox-alldirs)))
+syn     = $(patsubst %.c, %.syn, $(syn_tgt))
+
+comma:= ,
+brace_open:= (
+brace_close:= )
+
+SYN_CPPFLAGS := $(strip $(CPPFLAGS) $(EXTRA_CPPFLAGS))
+SYN_CPPFLAGS := $(subst $(brace_open),\$(brace_open),$(SYN_CPPFLAGS))
+SYN_CPPFLAGS := $(subst $(brace_close),\$(brace_close),$(SYN_CPPFLAGS))
+#SYN_CPPFLAGS := $(subst ",\",$(SYN_CPPFLAGS))
+#")
+#SYN_CPPFLAGS := [$(patsubst %,'%'$(comma),$(SYN_CPPFLAGS))'']
+
+%.syn: %.c
+	synopsis -p C -l Comments.SSDFilter,Comments.Previous -Wp,preprocess=True,cppflags="'$(SYN_CPPFLAGS)'" -o $@ $<
+
+.PHONY: html
+html: $(syn)
+	synopsis -f HTML -Wf,title="'BusyBox Documentation'" -o $@ $^
+
+-include $(srctree)/Makefile.local
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.flags
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.flags	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.flags	(revision 20)
@@ -0,0 +1,93 @@
+# ==========================================================================
+# Build system
+# ==========================================================================
+
+BB_VER = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+SKIP_STRIP = n
+
+# -std=gnu99 needed for [U]LLONG_MAX on some systems
+CPPFLAGS += $(call cc-option,-std=gnu99,)
+
+CPPFLAGS += \
+	-Iinclude -Ilibbb \
+	$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) -I$(srctree)/libbb \
+	-include include/autoconf.h \
+	-D_GNU_SOURCE -DNDEBUG \
+	$(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \
+	-D"BB_VER=KBUILD_STR($(BB_VER))" -DBB_BT=AUTOCONF_TIMESTAMP
+
+# flag checks are grouped together to speed the checks up a bit..
+CFLAGS += $(call cc-option,-Wall -Wshadow -Wwrite-strings,)
+CFLAGS += $(call cc-option,-Wundef -Wstrict-prototypes,)
+# If you want to add "-Wmissing-prototypes -Wmissing-declarations" above
+# (or anything else for that matter) make sure that it is still possible
+# to build bbox without warnings. Current offender: find.c:alloc_action().
+# Looks more like gcc bug: gcc will warn on it with or without prototype.
+# But still, warning-free compile is a must, or else we will drown
+# in warnings pretty soon.
+
+ifeq ($(CONFIG_WERROR),y)
+CFLAGS += $(call cc-option,-Werror,)
+else
+# for development, warn a little bit about unused results..
+CPPFLAGS += -D_FORTIFY_SOURCE=2
+endif
+# gcc 3.x emits bogus "old style proto" warning on find.c:alloc_action()
+CFLAGS += $(call cc-ifversion, -ge, 0400, -Wold-style-definition)
+
+# gcc emits bogus "no prev proto" warning on find.c:alloc_action()
+ifneq ($(CONFIG_WERROR),y)
+CFLAGS += $(call cc-option,-Wmissing-prototypes -Wmissing-declarations,)
+endif
+
+CFLAGS += $(call cc-option,-Os -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections,)
+# -fno-guess-branch-probability: prohibit pseudo-random guessing
+# of branch probabilities (hopefully makes bloatcheck more stable):
+CFLAGS += $(call cc-option,-fno-guess-branch-probability,)
+CFLAGS += $(call cc-option,-funsigned-char -static-libgcc,)
+CFLAGS += $(call cc-option,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,)
+
+# FIXME: These warnings are at least partially to be concerned about and should
+# be fixed..
+#CFLAGS+=$(call cc-option,-Wconversion,)
+
+ifeq ($(CONFIG_DEBUG),y)
+CFLAGS += $(call cc-option,-g)
+endif
+
+ifeq ($(CONFIG_STATIC),y)
+LDFLAGS += -static
+endif
+
+BBOX_LIB_LIST = m crypt
+
+ifeq ($(CONFIG_PAM),y)
+BBOX_LIB_LIST += pam pam_misc
+endif
+
+ifeq ($(CONFIG_SELINUX),y)
+BBOX_LIB_LIST += selinux sepol
+endif
+
+ifeq ($(CONFIG_EFENCE),y)
+BBOX_LIB_LIST += efence
+endif
+
+ifeq ($(CONFIG_DMALLOC),y)
+BBOX_LIB_LIST += dmalloc
+endif
+
+# For scripts/trylink
+export BBOX_LIB_LIST
+
+#LDFLAGS += -nostdlib
+
+LDFLAGS_ELF2FLT = -Wl,-elf2flt
+ifneq (,$(findstring $(LDFLAGS_ELF2FLT),$(LDFLAGS)))
+SKIP_STRIP = y
+endif
+
+# Busybox is a stack-fatty so make sure we increase default size
+# TODO: use "make stksizes" to find & fix big stack users
+# (we stole scripts/checkstack.pl from the kernel... thanks guys!)
+FLTFLAGS += -s 20000
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.help
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.help	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/Makefile.help	(revision 20)
@@ -0,0 +1,44 @@
+# ==========================================================================
+# Build system
+# ==========================================================================
+
+help:
+	@echo 'Cleaning:'
+	@echo '  clean			- delete temporary files created by build'
+	@echo '  distclean		- delete all non-source files (including .config)'
+	@echo
+	@echo 'Build:'
+	@echo '  all			- Executable and documentation'
+	@echo '  busybox		- the swiss-army executable'
+	@echo '  doc			- docs/BusyBox.{txt,html,1}'
+	@echo '  html			- create html-based cross-reference'
+	@echo
+	@echo 'Configuration:'
+	@echo '  allnoconfig		- disable all symbols in .config'
+	@echo '  allyesconfig		- enable all symbols in .config (see defconfig)'
+	@echo '  allbareconfig		- enable all applets without any sub-features'
+	@echo '  config		- text based configurator (of last resort)'
+	@echo '  defconfig		- set .config to largest generic configuration'
+	@echo '  menuconfig		- interactive curses-based configurator'
+	@echo '  oldconfig		- resolve any unresolved symbols in .config'
+	@echo '  hosttools  		- build sed for the host.'
+	@echo '  			  You can use these commands if the commands on the host'
+	@echo '  			  is unusable. Afterwards use it like:'
+	@echo '			  make SED="$(objtree)/sed"'
+	@echo
+	@echo 'Installation:'
+	@echo '  install		- install busybox into $(CONFIG_PREFIX)'
+	@echo '  uninstall'
+	@echo
+	@echo 'Development:'
+	@echo '  baseline		- create busybox_old for bloatcheck.'
+	@echo '  bloatcheck		- show size difference between old and new versions'
+	@echo '  check			- run the test suite for all applets'
+	@echo '  checkhelp		- check for missing help-entries in Config.in'
+	@echo '  randconfig		- generate a random configuration'
+	@echo '  release		- create a distribution tarball'
+	@echo '  sizes			- show size of all enabled busybox symbols'
+	@echo '  objsizes		- show size of each .o object built'
+	@echo '  bigdata		- show data objects, biggest first'
+	@echo '  stksizes		- show stack users, biggest first'
+	@echo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/README
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/README	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/README	(revision 20)
@@ -0,0 +1,198 @@
+Please see the LICENSE file for details on copying and usage.
+Please refer to the INSTALL file for instructions on how to build.
+
+What is busybox:
+
+  BusyBox combines tiny versions of many common UNIX utilities into a single
+  small executable.  It provides minimalist replacements for most of the
+  utilities you usually find in bzip2, coreutils, dhcp, diffutils, e2fsprogs,
+  file, findutils, gawk, grep, inetutils, less, modutils, net-tools, procps,
+  sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim.  The utilities
+  in BusyBox often have fewer options than their full-featured cousins;
+  however, the options that are included provide the expected functionality
+  and behave very much like their larger counterparts.
+
+  BusyBox has been written with size-optimization and limited resources in
+  mind, both to produce small binaries and to reduce run-time memory usage.
+  Busybox is also extremely modular so you can easily include or exclude
+  commands (or features) at compile time.  This makes it easy to customize
+  embedded systems; to create a working system, just add /dev, /etc, and a
+  Linux kernel.  Busybox (usually together with uClibc) has also been used as
+  a component of "thin client" desktop systems, live-CD distributions, rescue
+  disks, installers, and so on.
+
+  BusyBox provides a fairly complete POSIX environment for any small system,
+  both embedded environments and more full featured systems concerned about
+  space.  Busybox is slowly working towards implementing the full Single Unix
+  Specification V3 (http://www.opengroup.org/onlinepubs/009695399/), but isn't
+  there yet (and for size reasons will probably support at most UTF-8 for
+  internationalization).  We are also interested in passing the Linux Test
+  Project (http://ltp.sourceforge.net).
+
+----------------
+
+Using busybox:
+
+  BusyBox is extremely configurable.  This allows you to include only the
+  components and options you need, thereby reducing binary size.  Run 'make
+  config' or 'make menuconfig' to select the functionality that you wish to
+  enable.  (See 'make help' for more commands.)
+
+  The behavior of busybox is determined by the name it's called under: as
+  "cp" it behaves like cp, as "sed" it behaves like sed, and so on.  Called
+  as "busybox" it takes the second argument as the name of the applet to
+  run (I.E. "./busybox ls -l /proc").
+
+  The "standalone shell" mode is an easy way to try out busybox; this is a
+  command shell that calls the builtin applets without needing them to be
+  installed in the path.  (Note that this requires /proc to be mounted, if
+  testing from a boot floppy or in a chroot environment.)
+
+  The build automatically generates a file "busybox.links", which is used by
+  'make install' to create symlinks to the BusyBox binary for all compiled in
+  commands.  This uses the CONFIG_PREFIX environment variable to specify
+  where to install, and installs hardlinks or symlinks depending
+  on the configuration preferences.  (You can also manually run
+  the install script at "applets/install.sh").
+
+----------------
+
+Downloading the current source code:
+
+  Source for the latest released version, as well as daily snapshots, can always
+  be downloaded from
+
+    http://busybox.net/downloads/
+
+  You can browse the up to the minute source code and change history online.
+
+    http://www.busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/
+
+  Anonymous SVN access is available.  For instructions, check out:
+
+    http://busybox.net/subversion.html
+
+  For those that are actively contributing and would like to check files in,
+  see:
+
+    http://busybox.net/developer.html
+
+  The developers also have a bug and patch tracking system
+  (http://bugs.busybox.net) although posting a bug/patch to the mailing list
+  is generally a faster way of getting it fixed, and the complete archive of
+  what happened is the subversion changelog.
+
+----------------
+
+getting help:
+
+  when you find you need help, you can check out the busybox mailing list
+  archives at http://busybox.net/lists/busybox/ or even join
+  the mailing list if you are interested.
+
+----------------
+
+bugs:
+
+  if you find bugs, please submit a detailed bug report to the busybox mailing
+  list at busybox@busybox.net.  a well-written bug report should include a
+  transcript of a shell session that demonstrates the bad behavior and enables
+  anyone else to duplicate the bug on their own machine. the following is such
+  an example:
+
+    to: busybox@busybox.net
+    from: diligent@testing.linux.org
+    subject: /bin/date doesn't work
+
+    package: busybox
+    version: 1.00
+
+    when i execute busybox 'date' it produces unexpected results.
+    with gnu date i get the following output:
+
+	$ date
+	fri oct  8 14:19:41 mdt 2004
+
+    but when i use busybox date i get this instead:
+
+	$ date
+	illegal instruction
+
+    i am using debian unstable, kernel version 2.4.25-vrs2 on a netwinder,
+    and the latest uclibc from cvs.  thanks for the wonderful program!
+
+	-diligent
+
+  note the careful description and use of examples showing not only what
+  busybox does, but also a counter example showing what an equivalent app
+  does (or pointing to the text of a relevant standard).  Bug reports lacking
+  such detail may never be fixed...  Thanks for understanding.
+
+----------------
+
+Portability:
+
+  Busybox is developed and tested on Linux 2.4 and 2.6 kernels, compiled
+  with gcc (the unit-at-a-time optimizations in version 3.4 and later are
+  worth upgrading to get, but older versions should work), and linked against
+  uClibc (0.9.27 or greater) or glibc (2.2 or greater).  In such an
+  environment, the full set of busybox features should work, and if
+  anything doesn't we want to know about it so we can fix it.
+
+  There are many other environments out there, in which busybox may build
+  and run just fine.  We just don't test them.  Since busybox consists of a
+  large number of more or less independent applets, portability is a question
+  of which features work where.  Some busybox applets (such as cat and rm) are
+  highly portable and likely to work just about anywhere, while others (such as
+  insmod and losetup) require recent Linux kernels with recent C libraries.
+
+  Earlier versions of Linux and glibc may or may not work, for any given
+  configuration.  Linux 2.2 or earlier should mostly work (there's still
+  some support code in things like mount.c) but this is no longer regularly
+  tested, and inherently won't support certain features (such as long files
+  and --bind mounts).  The same is true for glibc 2.0 and 2.1: expect a higher
+  testing and debugging burden using such old infrastructure.  (The busybox
+  developers are not very interested in supporting these older versions, but
+  will probably accept small self-contained patches to fix simple problems.)
+
+  Some environments are not recommended.  Early versions of uClibc were buggy
+  and missing many features: upgrade.  Linking against libc5 or dietlibc is
+  not supported and not interesting to the busybox developers.  (The first is
+  obsolete and has no known size or feature advantages over uClibc, the second
+  has known bugs that its developers have actively refused to fix.)  Ancient
+  Linux kernels (2.0.x and earlier) are similarly uninteresting.
+
+  In theory it's possible to use Busybox under other operating systems (such as
+  MacOS X, Solaris, Cygwin, or the BSD Fork Du Jour).  This generally involves
+  a different kernel and a different C library at the same time.  While it
+  should be possible to port the majority of the code to work in one of
+  these environments, don't be suprised if it doesn't work out of the box.  If
+  you're into that sort of thing, start small (selecting just a few applets)
+  and work your way up.
+
+  Shaun Jackman has recently (2005) ported busybox to a combination of newlib
+  and libgloss, and some of his patches have been integrated.  This platform
+  may join glibc/uclibc and Linux as a supported combination with the 1.1
+  release, but is not supported in 1.0.
+
+Supported hardware:
+
+  BusyBox in general will build on any architecture supported by gcc.  We
+  support both 32 and 64 bit platforms, and both big and little endian
+  systems.
+
+  Under 2.4 Linux kernels, kernel module loading was implemented in a
+  platform-specific manner.  Busybox's insmod utility has been reported to
+  work under ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC, S390,
+  SH3/4/5, Sparc, v850e, and x86_64.  Anything else probably won't work.
+
+  The module loading mechanism for the 2.6 kernel is much more generic, and
+  we believe 2.6.x kernel module loading support should work on all
+  architectures supported by the kernel.
+
+----------------
+
+Please feed suggestions, bug reports, insults, and bribes back to the busybox
+maintainer:
+	Denis Vlasenko
+        <vda.linux@googlemail.com>
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/TODO
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/TODO	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/TODO	(revision 20)
@@ -0,0 +1,320 @@
+Busybox TODO
+
+Stuff that needs to be done.  This is organized by who plans to get around to
+doing it eventually, but that doesn't mean they "own" the item.  If you want to
+do one of these bounce an email off the person it's listed under to see if they
+have any suggestions how they plan to go about it, and to minimize conflicts
+between your work and theirs.  But otherwise, all of these are fair game.
+
+Rob Landley <rob@landley.net>:
+  Add BB_NOMMU to platform.h and migrate __uClinux__ tests to that.
+    #if defined __UCLIBC__ && !defined __ARCH_USE_MMU__
+  Add a libbb/platform.c
+    Implement fdprintf() for platforms that haven't got one.
+    Implement bb_realpath() that can handle NULL on non-glibc.
+    Cleanup bb_asprintf()
+
+  Migrate calloc() and bb_calloc() occurrences to bb_xzalloc().
+  Remove obsolete _() wrapper crud for internationalization we don't do.
+  Figure out where we need utf8 support, and add it.
+
+  sh
+    The command shell situation is a big mess.  We have three or four different
+    shells that don't really share any code, and the "standalone shell" doesn't
+    work all that well (especially not in a chroot environment), due to apps not
+    being reentrant.  I'm writing a new shell (bbsh) to unify the various
+    shells and configurably add the minimal set of bash features people
+    actually use.  The hardest part is it has to configure down as small as
+    lash while providing lash's features.  The rest is easy in comparison.
+  bzip2
+    Compression-side support.
+  init
+    General cleanup (should use ENABLE_FEATURE_INIT_SYSLOG and ENABLE_FEATURE_INIT_DEBUG).
+  depmod
+    busybox lacks a way to update module deps when running from firmware without the
+    use of the depmod.pl (perl is to bloated for most embedded setups) and or orig
+    modutils. The orig depmod is rather pointless to have to add to a firmware image
+    in when we already have a insmod/rmmod and friends.
+  Unify base64 handling.
+    [done]
+  Do a SUSv3 audit
+    Look at the full Single Unix Specification version 3 (available online at
+    "http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and
+    figure out which of our apps are compliant, and what we're missing that
+    we might actually care about.
+
+    Even better would be some kind of automated compliance test harness that
+    exercises each command line option and the various corner cases.
+  Internationalization
+    How much internationalization should we do?
+
+    The low hanging fruit is UTF-8 character set support.  We should do this.
+    (Vodz pointed out the shell's cmdedit as needing work here.  What else?)
+
+    We also have lots of hardwired english text messages.  Consolidating this
+    into some kind of message table not only makes translation easier, but
+    also allows us to consolidate redundant (or close) strings.
+
+    We probably don't want to be bloated with locale support.  (Not unless we
+    can cleanly export it from our underlying C library without having to
+    concern ourselves with it directly.  Perhaps a few specific things like a
+    config option for "date" are low hanging fruit here?)
+
+    What level should things happen at?  How much do we care about
+    internationalizing the text console when X11 and xterms are so much better
+    at it?  (There's some infrastructure here we don't implement: The
+    "unicode_start" and "unicode_stop" shell scripts need "vt-is-UTF8" and a
+    --unicode option to loadkeys.  That implies a real loadkeys/dumpkeys
+    implementation to replace loadkmap/dumpkmap.  Plus messing with console font
+    loading.  Is it worth it, or do we just say "use X"?)
+
+  Individual compilation of applets.
+    It would be nice if busybox had the option to compile to individual applets,
+    for people who want an alternate implementation less bloated than the gnu
+    utils (or simply with less political baggage), but without it being one big
+    executable.
+
+    Turning libbb into a real dll is another possibility, especially if libbb
+    could export some of the other library interfaces we've already more or less
+    got the code for (like zlib).
+  buildroot - Make a "dogfood" option
+    Busybox 1.1 will be capable of replacing most gnu packages for real world
+    use, such as developing software or in a live CD.  It needs wider testing.
+
+    Busybox should now be able to replace bzip2, coreutils, e2fsprogs, file,
+    findutils, gawk, grep, inetutils, less, modutils, net-tools, patch, procps,
+    sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim.  The resulting
+    system should be self-hosting (I.E. able to rebuild itself from source
+    code).  This means it would need (at least) binutils, gcc, and make, or
+    equivalents.
+
+    It would be a good "eating our own dogfood" test if buildroot had the option
+    of using a "make allyesconfig" busybox instead of the all of the above
+    packages.  Anything that's wrong with the resulting system, we can fix.  (It
+    would be nice to be able to upgrade busybox to be able to replace bash and
+    diffutils as well, but we're not there yet.)
+
+    One example of an existing system that does this already is Firmware Linux:
+      http://www.landley.net/code/firmware
+  initramfs
+    Busybox should have a sample initramfs build script.  This depends on
+    bbsh, mdev, and switch_root.
+  mkdep
+    Write a mkdep that doesn't segfault if there's a directory it doesn't
+    have permission to read, isn't based on manually editing the output of
+    lexx and yacc, doesn't make such a mess under include/config, etc.
+  Group globals into unions of structures.
+    Go through and turn all the global and static variables into structures,
+    and have all those structures be in a big union shared between processes,
+    so busybox uses less bss.  (This is a big win on nommu machines.)  See
+    sed.c and mdev.c for examples.
+  Go through bugs.busybox.net and close out all of that somehow.
+    This one's open to everybody, but I'll wind up doing it...
+
+
+Bernhard Fischer <busybox@busybox.net> suggests to look at these:
+  New debug options:
+    -Wlarger-than-127
+    Cleanup any big users
+    -Wunused-parameter
+    Facilitate applet PROTOTYPES to provide means for having applets that
+    do a) not take any arguments b) need only one of argc or argv c) need
+    both argc and argv. All of these three options should go for the most
+    feature complete denominator.
+  Collate BUFSIZ IOBUF_SIZE MY_BUF_SIZE PIPE_PROGRESS_SIZE BUFSIZE PIPESIZE
+    make bb_common_bufsiz1 configurable, size wise.
+    make pipesize configurable, size wise.
+    Use bb_common_bufsiz1 throughout applets!
+
+As yet unclaimed:
+
+----
+find
+  doesn't understand (), lots of susv3 stuff.
+----
+diff
+  Make sure we handle empty files properly:
+    From the patch man page:
+
+    you can remove a file by sending out a context diff that compares
+    the file to be deleted with an empty file dated the Epoch.  The
+    file will be removed unless patch is conforming to POSIX and the
+    -E or --remove-empty-files option is not given.
+---
+patch
+  Should have simple fuzz factor support to apply patches at an offset which
+  shouldn't take up too much space.
+
+  And while we're at it, a new patch filename quoting format is apparently
+  coming soon:  http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2
+---
+ps / top
+  Add support for both RSS and VSIZE rather than just one or the other.
+  Or make it a build option.
+---
+man
+  It would be nice to have a man command.  Not one that handles troff or
+  anything, just one that can handle preformatted ascii man pages, possibly
+  compressed.  This could probably be a script in the extras directory that
+  calls cat/zcat/bzcat | less
+
+  (How doclifter might work into this is anybody's guess.)
+---
+ar
+  Write support?
+---
+stty / catv
+  stty's visible() function and catv's guts are identical. Merge them into
+  an appropriate libbb function.
+---
+struct suffix_mult
+  Several duplicate users of: grep -r "1024\*1024" * -B2 -A1
+  Merge to a single size_suffixes[] in libbb.
+  Users: head tail od_bloaty hexdump and (partially as it wouldn't hurt) svlogd
+---
+tail
+  ./busybox tail -f foo.c~ TODO
+  should not print fmt=header_fmt for subsequent date >> TODO; i.e. only
+  fmt+ if another (not the current) file did change
+
+Architectural issues:
+
+bb_close() with fsync()
+  We should have a bb_close() in place of normal close, with a CONFIG_ option
+  to not just check the return value of close() for an error, but fsync().
+  Close can't reliably report anything useful because if write() accepted the
+  data then it either went out to the network or it's in cache or a pipe
+  buffer.  Either way, there's no guarantee it'll make it to its final
+  destination before close() gets called, so there's no guarantee that any
+  error will be reported.
+
+  You need to call fsync() if you care about errors that occur after write(),
+  but that can have a big performance impact.  So make it a config option.
+---
+Unify archivers
+  Lots of archivers have the same general infrastructure.  The directory
+  traversal code should be factored out, and the guts of each archiver could
+  be some setup code and a series of callbacks for "add this file",
+  "add this directory", "add this symlink" and so on.
+
+  This could clean up tar and zip, and make it cheaper to add cpio and ar
+  write support, and possibly even cheaply add things like mkisofs or
+  mksquashfs someday, if they become relevant.
+---
+Text buffer support.
+  Several existing applets (sort, vi, less...) read
+  a whole file into memory and act on it.  There might be an opportunity
+  for shared code in there that could be moved into libbb...
+---
+Memory Allocation
+  We have a CONFIG_BUFFER mechanism that lets us select whether to do memory
+  allocation on the stack or the heap.  Unfortunately, we're not using it much.
+  We need to audit our memory allocations and turn a lot of malloc/free calls
+  into RESERVE_CONFIG_BUFFER/RELEASE_CONFIG_BUFFER.
+  For a start, see e.g. make EXTRA_CFLAGS=-Wlarger-than-64
+
+  And while we're at it, many of the CONFIG_FEATURE_CLEAN_UP #ifdefs will be
+  optimized out by the compiler in the stack allocation case (since there's no
+  free for an alloca()), and this means that various cleanup loops that just
+  call free might also be optimized out by the compiler if written right, so
+  we can yank those #ifdefs too, and generally clean up the code.
+---
+Switch CONFIG_SYMBOLS to ENABLE_SYMBOLS
+
+  In busybox 1.0 and earlier, configuration was done by CONFIG_SYMBOLS
+  that were either defined or undefined to indicate whether the symbol was
+  selected in the .config file.  They were used with #ifdefs, ala:
+
+    #ifdef CONFIG_SYMBOL
+      if (other_test) {
+        do_code();
+      }
+    #endif
+
+  In 1.1, we have new ENABLE_SYMBOLS which are always defined (as 0 or 1),
+  meaning you can still use them for preprocessor tests by replacing
+  "#ifdef CONFIG_SYMBOL" with "#if ENABLE_SYMBOL".  But more importantly, we
+  can use them as a true or false test in normal C code:
+
+    if (ENABLE_SYMBOL && other_test) {
+      do_code();
+    }
+
+  (Optimizing away if() statements that resolve to a constant value
+  is known as "dead code elimination", an optimization so old and simple that
+  Turbo Pascal for DOS did it twenty years ago.  Even modern mini-compilers
+  like the Tiny C Compiler (tcc) and the Small Device C Compiler (SDCC)
+  perform dead code elimination.)
+
+  Right now, busybox.h is #including both "config.h" (defining the
+  CONFIG_SYMBOLS) and "bb_config.h" (defining the ENABLE_SYMBOLS).  At some
+  point in the future, it would be nice to wean ourselves off of the
+  CONFIG versions.  (Among other things, some defective build environments
+  leak the Linux kernel's CONFIG_SYMBOLS into the system's standard #include
+  files.  We've experienced collisions before.)
+---
+FEATURE_CLEAN_UP
+  This is more an unresolved issue than a to-do item.  More thought is needed.
+
+  Normally we rely on exit() to free memory, close files, and unmap segments
+  for us.  This makes most calls to free(), close(), and unmap() optional in
+  busybox applets that don't intend to run for very long, and optional stuff
+  can be omitted to save size.
+
+  The idea was raised that we could simulate fork/exit with setjmp/longjmp
+  for _really_ brainless embedded systems, or speed up the standalone shell
+  by not forking.  Doing so would require a reliable FEATURE_CLEAN_UP.
+  Unfortunately, this isn't as easy as it sounds.
+
+  The problem is, lots of things exit(), sometimes unexpectedly (xmalloc())
+  and sometimes reliably (bb_perror_msg_and_die() or show_usage()).  This
+  jumps out of the normal flow control and bypasses any cleanup code we
+  put at the end of our applets.
+
+  It's possible to add hooks to libbb functions like xmalloc() and xopen()
+  to add their entries to a linked list, which could be traversed and
+  freed/closed automatically.  (This would need to be able to free just the
+  entries after a checkpoint to be usable for a forkless standalone shell.
+  You don't want to free the shell's own resources.)
+
+  Right now, FEATURE_CLEAN_UP is more or less a debugging aid, to make things
+  like valgrind happy.  It's also documentation of _what_ we're trusting
+  exit() to clean up for us.  But new infrastructure to auto-free stuff would
+  render the existing FEATURE_CLEAN_UP code redundant.
+
+  For right now, exit() handles it just fine.
+
+
+
+Minor stuff:
+  watchdog.c could autodetect the timer duration via:
+    if(!ioctl (fd, WDIOC_GETTIMEOUT, &tmo)) timer_duration = 1 + (tmo / 2);
+  Unfortunately, that needs linux/watchdog.h and that contains unfiltered
+  kernel types on some distros, which breaks the build.
+---
+  use bb_error_msg where appropriate: See
+  egrep "(printf.*\([[:space:]]*(stderr|2)|[^_]write.*\([[:space:]]*(stderr|2))"
+---
+  use bb_perror_msg where appropriate: See
+  egrep "[^_]perror"
+---
+  Remove superfluous fmt occurances: e.g.
+  fprintf(stderr, "%s: %s not found\n", "unalias", *argptr);
+  -> fprintf(stderr, "unalias: %s not found\n", *argptr);
+---
+  possible code duplication ingroup() and is_a_group_member()
+---
+  Move __get_hz() to a better place and (re)use it in route.c, ash.c, msh.c
+---
+
+
+Code cleanup:
+
+Replace deprecated functions.
+
+bzero() -> memset()
+---
+sigblock(), siggetmask(), sigsetmask(), sigmask() -> sigprocmask et al
+---
+vdprintf() -> similar sized functionality
+---
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/TODO_config_nommu
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/TODO_config_nommu	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/TODO_config_nommu	(revision 20)
@@ -0,0 +1,710 @@
+# This .config compiles for NOMMU.
+# TODO:
+# Pick disabled applet, enable & try to make it compile & work on NOMMU
+
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.6.0.svn
+# Wed Apr 11 01:29:04 2007
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+# CONFIG_DESKTOP is not set
+# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SYSLOG=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_FEATURE_HAVE_RPC is not set
+# CONFIG_SELINUX is not set
+CONFIG_FEATURE_PREFER_APPLETS=y
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+CONFIG_WERROR=y
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+CONFIG_FEATURE_EDITING=y
+# CONFIG_FEATURE_EDITING_FANCY_KEYS is not set
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=15
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+# CONFIG_FEATURE_TAB_COMPLETION is not set
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+# CONFIG_FEATURE_TAR_BZIP2 is not set
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_FROM=y
+# CONFIG_FEATURE_TAR_GZIP is not set
+# CONFIG_FEATURE_TAR_COMPRESS is not set
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+CONFIG_FEATURE_UNARCHIVE_TAPE=y
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_CMP=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WATCH=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+# CONFIG_START_STOP_DAEMON is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_DEBUG_INIT is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+CONFIG_USE_BB_SHADOW=y
+CONFIG_USE_BB_PWD_GRP=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+CONFIG_FEATURE_INSMOD_VERSION_CHECKING=y
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+CONFIG_FEATURE_INSMOD_LOADINKMEM=y
+CONFIG_FEATURE_INSMOD_LOAD_MAP=y
+CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+CONFIG_FEATURE_AIX_LABEL=y
+CONFIG_FEATURE_SGI_LABEL=y
+CONFIG_FEATURE_SUN_LABEL=y
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_NFS is not set
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_READPROFILE=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+# CONFIG_BBCONFIG is not set
+CONFIG_CHRT=y
+# CONFIG_CROND is not set
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_CRONTAB is not set
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_LAST=y
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_NMETER=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_STRINGS=y
+CONFIG_SETSID=y
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+# CONFIG_IFUPDOWN is not set
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_APP_UDHCPD=y
+CONFIG_APP_DHCPRELAY=y
+CONFIG_APP_DUMPLEASES=y
+# CONFIG_APP_UDHCPC is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+CONFIG_FEATURE_RFC3397=y
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_UPTIME=y
+
+#
+# Shells
+#
+# CONFIG_FEATURE_SH_IS_ASH is not set
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+CONFIG_FEATURE_SH_IS_NONE=y
+# CONFIG_ASH is not set
+# CONFIG_ASH_JOB_CONTROL is not set
+# CONFIG_ASH_READ_NCHARS is not set
+# CONFIG_ASH_READ_TIMEOUT is not set
+# CONFIG_ASH_ALIAS is not set
+# CONFIG_ASH_MATH_SUPPORT is not set
+# CONFIG_ASH_MATH_SUPPORT_64 is not set
+# CONFIG_ASH_GETOPTS is not set
+# CONFIG_ASH_BUILTIN_ECHO is not set
+# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+# CONFIG_ASH_EXPAND_PRMT is not set
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+CONFIG_MSH=y
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+CONFIG_FEATURE_SH_STANDALONE=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+CONFIG_SV=y
+# CONFIG_SVLOGD is not set
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+
+#
+# ipsvd utilities
+#
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/applets/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/applets/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/applets/Kbuild	(revision 20)
@@ -0,0 +1,25 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+obj-y:=
+obj-y	    += applets.o
+
+hostprogs-y:=
+hostprogs-y += usage
+
+always:=    $(hostprogs-y)
+
+# Generated files need additional love
+
+quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
+      cmd_gen_usage_compressed = $(srctree)/applets/usage_compressed include/usage_compressed.h applets
+
+HOSTCFLAGS_usage.o = -I$(srctree)/include
+
+applets/applets.o:          include/usage_compressed.h
+applets/usage:              .config $(srctree)/applets/usage_compressed
+include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed
+	$(call cmd,gen_usage_compressed)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/applets/busybox.mkll
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/applets/busybox.mkll	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/applets/busybox.mkll	(revision 20)
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Make busybox links list file.
+
+# input $1: full path to Config.h
+# input $2: full path to applets.h
+# output (stdout): list of pathnames that should be linked to busybox
+
+# Maintainer: Larry Doolittle <ldoolitt@recycle.lbl.gov>
+
+export LC_ALL=POSIX
+export LC_CTYPE=POSIX
+
+CONFIG_H=${1:-include/autoconf.h}
+APPLETS_H=${2:-include/applets.h}
+$HOSTCC -E -DMAKE_LINKS -include $CONFIG_H $APPLETS_H |
+  awk '/^[ \t]*LINK/{
+	dir=substr($2,8)
+	gsub("_","/",dir)
+	if(dir=="/ROOT") dir=""
+	file=$3
+	gsub("\"","",file)
+	if (file=="busybox") next
+	print tolower(dir) "/" file
+  }'
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/applets/usage_compressed
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/applets/usage_compressed	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/applets/usage_compressed	(revision 20)
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+target="$1"
+loc="$2"
+
+test "$target" || exit 1
+test "$loc" || loc=.
+test -x "$loc/usage" || exit 1
+test "$SED" || SED=sed
+
+sz=`"$loc/usage" | wc -c` || exit 1
+
+exec >"$target"
+
+echo 'static const char packed_usage[] ALIGN1 = '
+"$loc/usage" | bzip2 -1 | od -v -t x1 \
+| $SED -e 's/^[^ ]*//' -e 's/  *\(..\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
+echo ';'
+echo '#define SIZEOF_usage_messages' `expr 0 + $sz`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/arch/i386/Makefile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/arch/i386/Makefile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/arch/i386/Makefile	(revision 20)
@@ -0,0 +1,7 @@
+# ==========================================================================
+# Build system
+# ==========================================================================
+
+# -mpreferred-stack-boundary=2 is essential in preventing gcc 4.2.x
+# from aligning stack to 16 bytes. (Which is gcc's way of supporting SSE).
+CFLAGS += $(call cc-option,-march=i386 -mpreferred-stack-boundary=2,)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/archival/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/archival/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/archival/Config.in	(revision 20)
@@ -0,0 +1,316 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Archival Utilities"
+
+config AR
+	bool "ar"
+	default n
+	help
+	  ar is an archival utility program used to create, modify, and
+	  extract contents from archives.  An archive is a single file holding
+	  a collection of other files in a structure that makes it possible to
+	  retrieve the original individual files (called archive members).
+	  The original files' contents, mode (permissions), timestamp, owner,
+	  and group are preserved in the archive, and can be restored on
+	  extraction.
+
+	  The stored filename is limited to 15 characters. (for more information
+	  see long filename support).
+	  ar has 60 bytes of overheads for every stored file.
+
+	  This implementation of ar can extract archives, it cannot create or
+	  modify them.
+	  On an x86 system, the ar applet adds about 1K.
+
+	  Unless you have a specific application which requires ar, you should
+	  probably say N here.
+
+config FEATURE_AR_LONG_FILENAMES
+	bool "Enable support for long filenames (not need for debs)"
+	default n
+	depends on AR
+	help
+	  By default the ar format can only store the first 15 characters of the
+	  filename, this option removes that limitation.
+	  It supports the GNU ar long filename method which moves multiple long
+	  filenames into a the data section of a new ar entry.
+
+config BUNZIP2
+	bool "bunzip2"
+	default n
+	help
+	  bunzip2 is a compression utility using the Burrows-Wheeler block
+	  sorting text compression algorithm, and Huffman coding.  Compression
+	  is generally considerably better than that achieved by more
+	  conventional LZ77/LZ78-based compressors, and approaches the
+	  performance of the PPM family of statistical compressors.
+
+	  The BusyBox bunzip2 applet is limited to de-compression only.
+	  On an x86 system, this applet adds about 11K.
+
+	  Unless you have a specific application which requires bunzip2, you
+	  should probably say N here.
+
+config CPIO
+	bool "cpio"
+	default n
+	help
+	  cpio is an archival utility program used to create, modify, and extract
+	  contents from archives.
+	  cpio has 110 bytes of overheads for every stored file.
+
+	  This implementation of cpio can extract cpio archives created in the
+	  "newc" or "crc" format, it cannot create or modify them.
+
+	  Unless you have a specific application which requires cpio, you should
+	  probably say N here.
+
+config DPKG
+	bool "dpkg"
+	default n
+	help
+	  dpkg is a medium-level tool to install, build, remove and manage Debian packages.
+
+	  This implementation of dpkg has a number of limitations, you should use the
+	  official dpkg if possible.
+
+config DPKG_DEB
+	bool "dpkg_deb"
+	default n
+	help
+	  dpkg-deb packs, unpacks and provides information about Debian archives.
+
+	  This implementation of dpkg-deb cannot pack archives.
+
+	  Unless you have a specific application which requires dpkg-deb, you should
+	  probably say N here.
+
+config FEATURE_DPKG_DEB_EXTRACT_ONLY
+	bool "extract only (-x)"
+	default n
+	depends on DPKG_DEB
+	help
+	  This reduces dpkg-deb to the equivalent of "ar -p <deb> data.tar.gz | tar -zx".
+	  However it saves space as none of the extra dpkg-deb, ar or tar options are
+	  needed, they are linked to internally.
+
+config GUNZIP
+	bool "gunzip"
+	default n
+	help
+	  gunzip is used to decompress archives created by gzip.
+	  You can use the `-t' option to test the integrity of
+	  an archive, without decompressing it.
+
+config FEATURE_GUNZIP_UNCOMPRESS
+	bool "Uncompress support"
+	default n
+	depends on GUNZIP
+	help
+	  Enable if you want gunzip to have the ability to decompress
+	  archives created by the program compress (not much
+	  used anymore).
+
+config GZIP
+	bool "gzip"
+	default n
+	help
+	  gzip is used to compress files.
+	  It's probably the most widely used UNIX compression program.
+
+config RPM2CPIO
+	bool "rpm2cpio"
+	default n
+	help
+	  Converts an RPM file into a CPIO archive.
+
+config RPM
+	bool "rpm"
+	default n
+	help
+	  Mini RPM applet - queries and extracts RPM packages.
+
+config FEATURE_RPM_BZ2
+	bool "Enable handling of rpms with bzip2-compressed data inside"
+	default n
+	depends on RPM
+	help
+	  Enable handling of rpms with bzip2-compressed data inside.
+
+config TAR
+	bool "tar"
+	default n
+	help
+	  tar is an archiving program. It's commonly used with gzip to
+	  create compressed archives. It's probably the most widely used
+	  UNIX archive program.
+
+config FEATURE_TAR_CREATE
+	bool "Enable archive creation"
+	default y
+	depends on TAR
+	help
+	  If you enable this option you'll be able to create
+	  tar archives using the `-c' option.
+
+config FEATURE_TAR_BZIP2
+	bool "Enable -j option to handle .tar.bz2 files"
+	default n
+	depends on TAR
+	help
+	  If you enable this option you'll be able to extract
+	  archives compressed with bzip2.
+
+config FEATURE_TAR_LZMA
+	bool "Enable -a option to handle .tar.lzma files"
+	default n
+	depends on TAR
+	help
+	  If you enable this option you'll be able to extract
+	  archives compressed with lzma.
+
+config FEATURE_TAR_FROM
+	bool "Enable -X (exclude from) and -T (include from) options)"
+	default n
+	depends on TAR
+	help
+	  If you enable this option you'll be able to specify
+	  a list of files to include or exclude from an archive.
+
+config FEATURE_TAR_GZIP
+	bool "Enable -z option"
+	default y
+	depends on TAR
+	help
+	  If you enable this option tar will be able to call gzip,
+	  when creating or extracting tar gziped archives.
+
+config FEATURE_TAR_COMPRESS
+	bool "Enable -Z option"
+	default n
+	depends on TAR
+	help
+	  If you enable this option tar will be able to call uncompress,
+	  when extracting .tar.Z archives.
+
+config FEATURE_TAR_OLDGNU_COMPATIBILITY
+	bool "Enable support for old tar header format"
+	default N
+	depends on TAR
+	help
+	  This option is required to unpack archives created in
+	  the old GNU format; help to kill this old format by
+	  repacking your ancient archives with the new format.
+
+config FEATURE_TAR_OLDSUN_COMPATIBILITY
+	bool "Enable untarring of tarballs with checksums produced by buggy Sun tar"
+	default N
+	depends on TAR
+	help
+	  This option is required to unpack archives created by some old
+	  version of Sun's tar (it was calculating checksum using signed arithmetic).
+	  It is said to be fixed in newer Sun tar, but "old" tarballs still exist.
+
+config FEATURE_TAR_GNU_EXTENSIONS
+	bool "Enable support for some GNU tar extensions"
+	default y
+	depends on TAR
+	help
+	  With this option busybox supports GNU long filenames and
+	  linknames.
+
+config FEATURE_TAR_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on TAR && GETOPT_LONG
+	help
+		Enable use of long options, increases size by about 400 Bytes
+
+config UNCOMPRESS
+	bool "uncompress"
+	default n
+	help
+	  uncompress is used to decompress archives created by compress.
+	  Not much used anymore, replaced by gzip/gunzip.
+
+config UNLZMA
+	bool "unlzma"
+	default n
+	help
+	  unlzma is a compression utility using the Lempel-Ziv-Markov chain
+	  compression algorithm, and range coding.  Compression
+	  is generally considerably better than that achieved by the bzip2
+	  compressors.
+
+	  The BusyBox unlzma applet is limited to de-compression only.
+	  On an x86 system, this applet adds about 4K.
+
+	  Unless you have a specific application which requires unlzma, you
+	  should probably say N here.
+
+config FEATURE_LZMA_FAST
+	bool "Optimze unlzma for speed"
+	default n
+	depends on UNLZMA
+	help
+	  This option reduces decompression time by about 33% at the cost of
+	  a 2K bigger binary.
+
+config UNZIP
+	bool "unzip"
+	default n
+	help
+	  unzip will list or extract files from a ZIP archive,
+	  commonly found on DOS/WIN systems. The default behavior
+	  (with no options) is to extract the archive into the
+	  current directory. Use the `-d' option to extract to a
+	  directory of your choice.
+
+comment "Common options for cpio and tar"
+	depends on CPIO || TAR
+
+config FEATURE_UNARCHIVE_TAPE
+	bool "Enable tape drive support"
+	default n
+	depends on CPIO || TAR
+	help
+	  I don't think this is needed anymore.
+
+comment "Common options for dpkg and dpkg_deb"
+	depends on DPKG || DPKG_DEB
+
+config FEATURE_DEB_TAR_GZ
+	bool "gzip debian packages (normal)"
+	default y if DPKG || DPKG_DEB
+	depends on DPKG || DPKG_DEB
+	help
+	  This is the default compression method inside the debian ar file.
+
+	  If you want compatibility with standard .deb's you should say yes here.
+
+config FEATURE_DEB_TAR_BZ2
+	bool "bzip2 debian packages"
+	default n
+	depends on DPKG || DPKG_DEB
+	help
+	  This allows dpkg and dpkg-deb to extract deb's that are compressed internally
+	  with bzip2 instead of gzip.
+
+	  You only want this if you are creating your own custom debian packages that
+	  use an internal control.tar.bz2 or data.tar.bz2.
+
+config FEATURE_DEB_TAR_LZMA
+	bool "lzma debian packages"
+	default n
+	depends on DPKG || DPKG_DEB
+	help
+	  This allows dpkg and dpkg-deb to extract deb's that are compressed
+	  internally with lzma instead of gzip.
+
+	  You only want this if you are creating your own custom debian
+	  packages that use an internal control.tar.lzma or data.tar.lzma.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/archival/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/archival/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/archival/Kbuild	(revision 20)
@@ -0,0 +1,22 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+libs-y				+= libunarchive/
+
+lib-y:=
+lib-$(CONFIG_AR)		+= ar.o
+lib-$(CONFIG_BUNZIP2)		+= bbunzip.o
+lib-$(CONFIG_UNLZMA)		+= bbunzip.o
+lib-$(CONFIG_CPIO)		+= cpio.o
+lib-$(CONFIG_DPKG)		+= dpkg.o
+lib-$(CONFIG_DPKG_DEB)		+= dpkg_deb.o
+lib-$(CONFIG_GUNZIP)		+= bbunzip.o
+lib-$(CONFIG_GZIP)		+= gzip.o bbunzip.o
+lib-$(CONFIG_RPM2CPIO)		+= rpm2cpio.o
+lib-$(CONFIG_RPM)		+= rpm.o
+lib-$(CONFIG_TAR)		+= tar.o
+lib-$(CONFIG_UNCOMPRESS)	+= bbunzip.o
+lib-$(CONFIG_UNZIP)		+= unzip.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/archival/libunarchive/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/archival/libunarchive/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/archival/libunarchive/Kbuild	(revision 20)
@@ -0,0 +1,68 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+
+lib-y:= \
+\
+	data_skip.o \
+	data_extract_all.o \
+	data_extract_to_stdout.o \
+	data_extract_to_buffer.o \
+\
+	filter_accept_all.o \
+	filter_accept_list.o \
+	filter_accept_reject_list.o \
+\
+	header_skip.o \
+	header_list.o \
+	header_verbose_list.o \
+\
+	archive_xread_all_eof.o \
+\
+	seek_by_read.o \
+	seek_by_jump.o \
+\
+	data_align.o \
+	find_list_entry.o \
+	init_handle.o
+
+GUNZIP_FILES:= check_header_gzip.o decompress_unzip.o
+DPKG_FILES:= \
+	get_header_ar.o \
+	unpack_ar_archive.o \
+	get_header_tar.o \
+	filter_accept_list_reassign.o
+
+lib-$(CONFIG_RPM)                       += open_transformer.o
+lib-$(CONFIG_FEATURE_TAR_BZIP2)         += open_transformer.o
+lib-$(CONFIG_FEATURE_TAR_LZMA)          += open_transformer.o
+lib-$(CONFIG_FEATURE_TAR_GZIP)          += open_transformer.o
+lib-$(CONFIG_FEATURE_TAR_COMPRESS)      += open_transformer.o
+lib-$(CONFIG_FEATURE_DEB_TAR_GZ)        += open_transformer.o
+lib-$(CONFIG_FEATURE_DEB_TAR_BZ2)       += open_transformer.o
+lib-$(CONFIG_FEATURE_DEB_TAR_LZMA)      += open_transformer.o
+
+lib-$(CONFIG_AR)                        += get_header_ar.o unpack_ar_archive.o
+lib-$(CONFIG_BUNZIP2)                   += decompress_bunzip2.o
+lib-$(CONFIG_UNLZMA)                    += decompress_unlzma.o
+lib-$(CONFIG_CPIO)                      += get_header_cpio.o
+lib-$(CONFIG_DPKG)                      += $(DPKG_FILES)
+lib-$(CONFIG_DPKG_DEB)                  += $(DPKG_FILES)
+lib-$(CONFIG_FEATURE_DEB_TAR_GZ)        += $(GUNZIP_FILES) get_header_tar_gz.o
+lib-$(CONFIG_FEATURE_DEB_TAR_BZ2)       += decompress_bunzip2.o get_header_tar_bz2.o
+lib-$(CONFIG_FEATURE_DEB_TAR_LZMA)      += decompress_unlzma.o get_header_tar_lzma.o
+lib-$(CONFIG_GUNZIP)                    += $(GUNZIP_FILES)
+lib-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += decompress_uncompress.o
+lib-$(CONFIG_RPM2CPIO)                  += $(GUNZIP_FILES) get_header_cpio.o
+lib-$(CONFIG_RPM)                       += $(GUNZIP_FILES) get_header_cpio.o
+lib-$(CONFIG_FEATURE_RPM_BZ2)           += decompress_bunzip2.o
+lib-$(CONFIG_TAR)                       += get_header_tar.o
+lib-$(CONFIG_FEATURE_TAR_BZIP2)         += decompress_bunzip2.o get_header_tar_bz2.o
+lib-$(CONFIG_FEATURE_TAR_LZMA)          += decompress_unlzma.o get_header_tar_lzma.o
+lib-$(CONFIG_FEATURE_TAR_GZIP)          += $(GUNZIP_FILES) get_header_tar_gz.o
+lib-$(CONFIG_FEATURE_TAR_COMPRESS)      += decompress_uncompress.o
+lib-$(CONFIG_UNCOMPRESS)                += decompress_uncompress.o
+lib-$(CONFIG_UNZIP)                     += $(GUNZIP_FILES)
+lib-$(CONFIG_FEATURE_COMPRESS_USAGE)    += decompress_bunzip2.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/busybox-1.7.1_udhcp.patch_v2
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/busybox-1.7.1_udhcp.patch_v2	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/busybox-1.7.1_udhcp.patch_v2	(revision 20)
@@ -0,0 +1,369 @@
+diff -Naur busybox-1.7.1.org/applets/applets.c busybox-1.7.1/applets/applets.c
+--- busybox-1.7.1.org/applets/applets.c	2007-09-17 02:48:10.000000000 +0800
++++ busybox-1.7.1/applets/applets.c	2007-10-09 10:12:34.000000000 +0800
+@@ -23,7 +23,7 @@
+ #warning Note that glibc is unsuitable for static linking anyway.
+ #warning If you still want to do it, remove -Wl,--gc-sections
+ #warning from top-level Makefile and remove this warning.
+-#error Aborting compilation.
++
+ #endif
+ 
+ 
+diff -Naur busybox-1.7.1.org/include/usage.h busybox-1.7.1/include/usage.h
+--- busybox-1.7.1.org/include/usage.h	2007-09-03 19:48:46.000000000 +0800
++++ busybox-1.7.1/include/usage.h	2007-10-09 10:12:34.000000000 +0800
+@@ -3653,7 +3653,7 @@
+ 
+ #define udhcpc_trivial_usage \
+        "[-Cfbnqtv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n" \
+-       "	[-p pidfile] [-r IP] [-s script]"
++       "	[-p pidfile] [-r IP] [-s script] [-P CLIENT_PORT]"
+ #define udhcpc_full_usage \
+        "	-V,--vendorclass=CLASSID	Set vendor class identifier" \
+        "\n	-i,--interface=INTERFACE	Interface to use (default: eth0)" \
+@@ -3671,14 +3671,16 @@
+        "\n	-q,--quit	Quit after obtaining lease" \
+        "\n	-R,--release	Release IP on quit" \
+        "\n	-v,--version	Display version" \
++       "\n	-P,--client-port CLIENT_PORT	Use CLIENT_PORT as DHCP Client port (default: 68)" \
+ 
+ #define udhcpd_trivial_usage \
+-       "[-fS] [configfile]" \
++       "[-fS] [-P SERVER_PORT] [configfile]" \
+ 
+ #define udhcpd_full_usage \
+        "DHCP server" \
+        "\n	-f	Stay in foreground" \
+-       "\n	-S	Log to syslog too"
++       "\n	-S	Log to syslog too"  \
++       "\n	-P SERVER_PORT	Use SERVER_PORT as DHCP server port (default: 67)" \
+ 
+ #define umount_trivial_usage \
+        "[flags] FILESYSTEM|DIRECTORY"
+diff -Naur busybox-1.7.1.org/Makefile busybox-1.7.1/Makefile
+--- busybox-1.7.1.org/Makefile	2007-09-17 02:50:24.000000000 +0800
++++ busybox-1.7.1/Makefile	2007-10-09 10:12:34.000000000 +0800
+@@ -570,7 +570,7 @@
+ quiet_cmd_busybox__ ?= LINK    $@
+       cmd_busybox__ ?= $(srctree)/scripts/trylink $(CC) $(LDFLAGS) \
+       -o $@ -Wl,-Map -Wl,$@.map \
+-      -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections \
++      -Wl,--warn-common -Wl,--sort-common  \
+       -Wl,--start-group $(busybox-all) -Wl,--end-group \
+       $(LDLIBS)
+ 
+diff -Naur busybox-1.7.1.org/networking/udhcp/clientpacket.c busybox-1.7.1/networking/udhcp/clientpacket.c
+--- busybox-1.7.1.org/networking/udhcp/clientpacket.c	2007-09-03 19:48:26.000000000 +0800
++++ busybox-1.7.1/networking/udhcp/clientpacket.c	2007-10-15 14:27:49.000000000 +0800
+@@ -74,6 +74,12 @@
+ int send_discover(uint32_t xid, uint32_t requested)
+ {
+ 	struct dhcpMessage packet;
++	int    SRV_PORT, CLT_PORT;
++
++	SRV_PORT=(client_port == NULL)?SERVER_PORT:(atoi(client_port) - 1);
++	CLT_PORT=(client_port == NULL)?CLIENT_PORT:atoi(client_port);
++
++	DEBUG("clientpacket.c: send_discover() - SRV_PORT= %d, CLT_PORT= %d\n", SRV_PORT, CLT_PORT);
+ 
+ 	init_packet(&packet, DHCPDISCOVER);
+ 	packet.xid = xid;
+@@ -82,8 +88,7 @@
+ 
+ 	add_requests(&packet);
+ 	bb_info_msg("Sending discover...");
+-	return udhcp_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
+-			SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
++	return udhcp_raw_packet(&packet, INADDR_ANY, CLT_PORT, INADDR_BROADCAST, SRV_PORT, MAC_BCAST_ADDR, client_config.ifindex);
+ }
+ 
+ 
+@@ -92,6 +97,12 @@
+ {
+ 	struct dhcpMessage packet;
+ 	struct in_addr addr;
++	int    SRV_PORT, CLT_PORT;
++
++	SRV_PORT=(client_port == NULL)?SERVER_PORT:(atoi(client_port) - 1);
++	CLT_PORT=(client_port == NULL)?CLIENT_PORT:atoi(client_port);
++
++	DEBUG("clientpacket.c: send_selecting() - SRV_PORT= %d, CLT_PORT= %d\n", SRV_PORT, CLT_PORT);
+ 
+ 	init_packet(&packet, DHCPREQUEST);
+ 	packet.xid = xid;
+@@ -102,8 +113,7 @@
+ 	add_requests(&packet);
+ 	addr.s_addr = requested;
+ 	bb_info_msg("Sending select for %s...", inet_ntoa(addr));
+-	return udhcp_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
+-				SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
++	return udhcp_raw_packet(&packet, INADDR_ANY, CLT_PORT, INADDR_BROADCAST, SRV_PORT, MAC_BCAST_ADDR, client_config.ifindex);
+ }
+ 
+ 
+@@ -111,6 +121,12 @@
+ int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr)
+ {
+ 	struct dhcpMessage packet;
++	int    SRV_PORT, CLT_PORT;
++
++	SRV_PORT=(client_port == NULL)?SERVER_PORT:(atoi(client_port) - 1);
++	CLT_PORT=(client_port == NULL)?CLIENT_PORT:atoi(client_port);
++
++	DEBUG("clientpacket.c: send_renew() - SRV_PORT= %d, CLT_PORT= %d\n", SRV_PORT, CLT_PORT);
+ 
+ 	init_packet(&packet, DHCPREQUEST);
+ 	packet.xid = xid;
+@@ -119,10 +135,10 @@
+ 	add_requests(&packet);
+ 	bb_info_msg("Sending renew...");
+ 	if (server)
+-		return udhcp_kernel_packet(&packet, ciaddr, CLIENT_PORT, server, SERVER_PORT);
++		return udhcp_kernel_packet(&packet, ciaddr, CLT_PORT, server, SRV_PORT);
+ 
+-	return udhcp_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
+-				SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
++	return udhcp_raw_packet(&packet, INADDR_ANY, CLT_PORT, INADDR_BROADCAST,
++				SRV_PORT, MAC_BCAST_ADDR, client_config.ifindex);
+ }
+ 
+ 
+@@ -130,6 +146,12 @@
+ int send_release(uint32_t server, uint32_t ciaddr)
+ {
+ 	struct dhcpMessage packet;
++	int    SRV_PORT, CLT_PORT;
++
++	SRV_PORT=(client_port == NULL)?SERVER_PORT:(atoi(client_port) - 1);
++	CLT_PORT=(client_port == NULL)?CLIENT_PORT:atoi(client_port);
++
++	DEBUG("clientpacket.c: send_release() - SRV_PORT= %d, CLT_PORT= %d\n", SRV_PORT, CLT_PORT);
+ 
+ 	init_packet(&packet, DHCPRELEASE);
+ 	packet.xid = random_xid();
+@@ -139,7 +161,7 @@
+ 	add_simple_option(packet.options, DHCP_SERVER_ID, server);
+ 
+ 	bb_info_msg("Sending release...");
+-	return udhcp_kernel_packet(&packet, ciaddr, CLIENT_PORT, server, SERVER_PORT);
++	return udhcp_kernel_packet(&packet, ciaddr, CLT_PORT, server, SRV_PORT);
+ }
+ 
+ 
+@@ -151,6 +173,8 @@
+ 	uint32_t source, dest;
+ 	uint16_t check;
+ 
++	int CLT_PORT = (client_port == NULL)?CLIENT_PORT:atoi(client_port);
++
+ 	memset(&packet, 0, sizeof(struct udp_dhcp_packet));
+ 	bytes = read(fd, &packet, sizeof(struct udp_dhcp_packet));
+ 	if (bytes < 0) {
+@@ -175,7 +199,7 @@
+ 	/* Make sure its the right packet for us, and that it passes sanity checks */
+ 	if (packet.ip.protocol != IPPROTO_UDP || packet.ip.version != IPVERSION
+ 	 || packet.ip.ihl != sizeof(packet.ip) >> 2
+-	 || packet.udp.dest != htons(CLIENT_PORT)
++	 || packet.udp.dest != htons(CLT_PORT)
+ 	 || bytes > (int) sizeof(struct udp_dhcp_packet)
+ 	 || ntohs(packet.udp.len) != (uint16_t)(bytes - sizeof(packet.ip))
+ 	) {
+diff -Naur busybox-1.7.1.org/networking/udhcp/dhcpc.c busybox-1.7.1/networking/udhcp/dhcpc.c
+--- busybox-1.7.1.org/networking/udhcp/dhcpc.c	2007-09-03 19:48:26.000000000 +0800
++++ busybox-1.7.1/networking/udhcp/dhcpc.c	2007-10-09 10:12:34.000000000 +0800
+@@ -10,6 +10,7 @@
+ 
+ #include <getopt.h>
+ #include <syslog.h>
++#include <stdlib.h>	// for atoi()
+ 
+ /* Override ENABLE_FEATURE_PIDFILE - ifupdown needs our pidfile to always exist */
+ #define WANT_PIDFILE 1
+@@ -179,6 +180,7 @@
+ 		OPT_t = 1 << 16,
+ 		OPT_v = 1 << 17,
+ 		OPT_S = 1 << 18,
++		OPT_P = 1 << 19,
+ 	};
+ #if ENABLE_GETOPT_LONG
+ 	static const char udhcpc_longopts[] ALIGN1 =
+@@ -201,6 +203,7 @@
+ 		"version\0"       No_argument       "v"
+ 		"retries\0"       Required_argument "t"
+ 		"syslog\0"        No_argument       "S"
++		"client-port\0"	  Required_argument	"P"
+ 		;
+ #endif
+ 	/* Default options. */
+@@ -215,10 +218,10 @@
+ #if ENABLE_GETOPT_LONG
+ 	applet_long_options = udhcpc_longopts;
+ #endif
+-	opt = getopt32(argv, "c:CV:fbH:h:F:i:np:qRr:s:T:t:vS",
++	opt = getopt32(argv, "c:CV:fbH:h:F:i:np:qRr:s:T:t:vSP:",
+ 		&str_c, &str_V, &str_h, &str_h, &str_F,
+ 		&client_config.interface, &client_config.pidfile, &str_r,
+-		&client_config.script, &str_T, &str_t
++		&client_config.script, &str_T, &str_t, &client_port
+ 		);
+ 
+ 	if (opt & OPT_c)
+@@ -269,6 +272,14 @@
+ 		logmode |= LOGMODE_SYSLOG;
+ 	}
+ 
++	if (opt & OPT_P) {
++		printf("Use %s as DHCP Client Port!\n",client_port);
++	}
++
++	if (client_port == NULL) {
++		printf("Use %d as DHCP Client Port!\n",CLIENT_PORT);
++	}
++
+ 	if (read_interface(client_config.interface, &client_config.ifindex,
+ 			   NULL, client_config.arp))
+ 		return 1;
+@@ -310,10 +321,15 @@
+ 		tv.tv_usec = 0;
+ 
+ 		if (listen_mode != LISTEN_NONE && sockfd < 0) {
+-			if (listen_mode == LISTEN_KERNEL)
+-				sockfd = listen_socket(/*INADDR_ANY,*/ CLIENT_PORT, client_config.interface);
+-			else
++			if (listen_mode == LISTEN_KERNEL) {
++				if (client_port == NULL) {
++					sockfd = listen_socket(/*INADDR_ANY,*/ CLIENT_PORT, client_config.interface);
++				} else {
++					sockfd = listen_socket(/*INADDR_ANY,*/ atoi(client_port), client_config.interface);
++				}
++			} else {
+ 				sockfd = raw_socket(client_config.ifindex);
++			}
+ 		}
+ 		max_fd = udhcp_sp_fd_set(&rfds, sockfd);
+ 
+diff -Naur busybox-1.7.1.org/networking/udhcp/dhcpd.c busybox-1.7.1/networking/udhcp/dhcpd.c
+--- busybox-1.7.1.org/networking/udhcp/dhcpd.c	2007-09-03 19:48:26.000000000 +0800
++++ busybox-1.7.1/networking/udhcp/dhcpd.c	2007-10-09 10:12:34.000000000 +0800
+@@ -11,6 +11,7 @@
+  */
+ 
+ #include <syslog.h>
++#include <stdlib.h>		// for atoi()
+ #include "common.h"
+ #include "dhcpd.h"
+ #include "options.h"
+@@ -20,7 +21,6 @@
+ struct dhcpOfferedAddr *leases;
+ struct server_config_t server_config;
+ 
+-
+ int udhcpd_main(int argc, char **argv);
+ int udhcpd_main(int argc, char **argv)
+ {
+@@ -36,7 +36,7 @@
+ 	struct option_set *option;
+ 	struct dhcpOfferedAddr *lease, static_lease;
+ 
+-	opt = getopt32(argv, "fS");
++	opt = getopt32(argv, "fSP:",&server_port);
+ 	argv += optind;
+ 
+ 	if (!(opt & 1)) { /* no -f */
+@@ -49,6 +49,15 @@
+ 		logmode |= LOGMODE_SYSLOG;
+ 	}
+ 
++	if (opt & 4) { /* -P */
++		printf("Use %s for DHCP Server Port!\n",server_port);
++	}
++
++	if ( server_port == NULL)
++	{
++		printf("Use %d for DHCP Server Port!\n",SERVER_PORT);
++	}
++
+ 	/* Would rather not do read_config before daemonization -
+ 	 * otherwise NOMMU machines will parse config twice */
+ 	read_config(argv[0] ? argv[0] : DHCPD_CONF_FILE);
+@@ -95,8 +104,10 @@
+ 	while (1) { /* loop until universe collapses */
+ 
+ 		if (server_socket < 0) {
+-			server_socket = listen_socket(/*INADDR_ANY,*/ SERVER_PORT,
+-					server_config.interface);
++			if ( server_port == NULL)
++				server_socket = listen_socket(/*INADDR_ANY,*/ SERVER_PORT, server_config.interface);
++			else
++				server_socket = listen_socket(/*INADDR_ANY,*/ atoi(server_port), server_config.interface);
+ 		}
+ 
+ 		max_sock = udhcp_sp_fd_set(&rfds, server_socket);
+diff -Naur busybox-1.7.1.org/networking/udhcp/options.c busybox-1.7.1/networking/udhcp/options.c
+--- busybox-1.7.1.org/networking/udhcp/options.c	2007-09-03 19:48:26.000000000 +0800
++++ busybox-1.7.1/networking/udhcp/options.c	2007-10-09 10:12:34.000000000 +0800
+@@ -67,6 +67,8 @@
+ 	[OPTION_S32] =     4
+ };
+ 
++char *server_port = NULL;
++char *client_port = NULL;
+ 
+ /* get an option with bounds checking (warning, not aligned). */
+ uint8_t *get_option(struct dhcpMessage *packet, int code)
+diff -Naur busybox-1.7.1.org/networking/udhcp/options.h busybox-1.7.1/networking/udhcp/options.h
+--- busybox-1.7.1.org/networking/udhcp/options.h	2007-09-03 19:48:26.000000000 +0800
++++ busybox-1.7.1/networking/udhcp/options.h	2007-10-09 10:12:34.000000000 +0800
+@@ -105,6 +105,8 @@
+ 
+ extern const struct dhcp_option dhcp_options[];
+ extern const unsigned char option_lengths[];
++extern char  *server_port;
++extern char  *client_port;
+ 
+ uint8_t *get_option(struct dhcpMessage *packet, int code);
+ int end_option(uint8_t *optionptr);
+diff -Naur busybox-1.7.1.org/networking/udhcp/serverpacket.c busybox-1.7.1/networking/udhcp/serverpacket.c
+--- busybox-1.7.1.org/networking/udhcp/serverpacket.c	2007-09-03 19:48:26.000000000 +0800
++++ busybox-1.7.1/networking/udhcp/serverpacket.c	2007-10-15 14:50:07.000000000 +0800
+@@ -30,8 +30,13 @@
+ {
+ 	DEBUG("Forwarding packet to relay");
+ 
+-	return udhcp_kernel_packet(payload, server_config.server, SERVER_PORT,
+-			payload->giaddr, SERVER_PORT);
++	if (server_port == NULL) {
++		DEBUG("udhcp_kernel_packet(payload, server_config.server, %d, payload->giaddr, %d);",SERVER_PORT,SERVER_PORT);
++		return udhcp_kernel_packet(payload, server_config.server, SERVER_PORT, payload->giaddr, SERVER_PORT);
++	} else {
++		DEBUG("udhcp_kernel_packet(payload, server_config.server, %d, payload->giaddr, %d);",atoi(server_port),atoi(server_port));
++		return udhcp_kernel_packet(payload, server_config.server, atoi(server_port), payload->giaddr, atoi(server_port));
++	}
+ }
+ 
+ 
+@@ -40,6 +45,12 @@
+ {
+ 	const uint8_t *chaddr;
+ 	uint32_t ciaddr;
++	int      SRV_PORT=0, CLT_PORT=0;
++
++	SRV_PORT=(server_port == NULL)?SERVER_PORT:atoi(server_port);
++	CLT_PORT=(server_port == NULL)?CLIENT_PORT:(atoi(server_port) + 1);
++
++	DEBUG("serverpacket.c: send_packet_to_client() - SRV_PORT=%d, CLT_PORT= %d",SRV_PORT, CLT_PORT);
+ 
+ 	if (force_broadcast) {
+ 		DEBUG("broadcasting packet to client (NAK)");
+@@ -58,8 +69,8 @@
+ 		ciaddr = payload->yiaddr;
+ 		chaddr = payload->chaddr;
+ 	}
+-	return udhcp_raw_packet(payload, server_config.server, SERVER_PORT,
+-			ciaddr, CLIENT_PORT, chaddr, server_config.ifindex);
++	return udhcp_raw_packet(payload, server_config.server, SRV_PORT,
++			ciaddr, CLT_PORT, chaddr, server_config.ifindex);
+ }
+ 
+ 
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/console-tools/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/console-tools/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/console-tools/Config.in	(revision 20)
@@ -0,0 +1,105 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Console Utilities"
+
+config CHVT
+	bool "chvt"
+	default n
+	help
+	  This program is used to change to another terminal.
+	  Example: chvt 4 (change to terminal /dev/tty4)
+
+config CLEAR
+	bool "clear"
+	default n
+	help
+	  This program clears the terminal screen.
+
+config DEALLOCVT
+	bool "deallocvt"
+	default n
+	help
+	  This program deallocates unused virtual consoles.
+
+config DUMPKMAP
+	bool "dumpkmap"
+	default n
+	help
+	  This program dumps the kernel's keyboard translation table to
+	  stdout, in binary format. You can then use loadkmap to load it.
+
+config LOADFONT
+	bool "loadfont"
+	default n
+	help
+	  This program loads a console font from standard input.
+
+config LOADKMAP
+	bool "loadkmap"
+	default n
+	help
+	  This program loads a keyboard translation table from
+	  standard input.
+
+config OPENVT
+	bool "openvt"
+	default n
+	help
+	  This program is used to start a command on an unused
+	  virtual terminal.
+
+config RESET
+	bool "reset"
+	default n
+	help
+	  This program is used to reset the terminal screen, if it
+	  gets messed up.
+
+config RESIZE
+	bool "resize"
+	default n
+	help
+	  This program is used to (re)set the width and height of your current
+	  terminal.
+
+config FEATURE_RESIZE_PRINT
+	bool "print environment variables"
+	default n
+	depends on RESIZE
+	help
+	  Prints the newly set size (number of columns and rows) of
+	  the terminal.
+	  E.g.:
+	  COLUMNS=80;LINES=44;export COLUMNS LINES;
+
+config SETCONSOLE
+	bool "setconsole"
+	default n
+	help
+	  This program redirects the system console to another device,
+	  like the current tty while logged in via telnet.
+
+config FEATURE_SETCONSOLE_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on SETCONSOLE && GETOPT_LONG
+	help
+	  Support long options for the setconsole applet.
+
+config SETKEYCODES
+	bool "setkeycodes"
+	default n
+	help
+	  This program loads entries into the kernel's scancode-to-keycode
+	  map, allowing unusual keyboards to generate usable keycodes.
+
+config SETLOGCONS
+	bool "setlogcons"
+	default n
+	help
+	  This program redirects the output console of kernel messages.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/console-tools/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/console-tools/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/console-tools/Kbuild	(revision 20)
@@ -0,0 +1,19 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_CHVT)		+= chvt.o
+lib-$(CONFIG_CLEAR)		+= clear.o
+lib-$(CONFIG_DEALLOCVT)		+= deallocvt.o
+lib-$(CONFIG_DUMPKMAP)		+= dumpkmap.o
+lib-$(CONFIG_SETCONSOLE)	+= setconsole.o
+lib-$(CONFIG_LOADFONT)		+= loadfont.o
+lib-$(CONFIG_LOADKMAP)		+= loadkmap.o
+lib-$(CONFIG_OPENVT)		+= openvt.o
+lib-$(CONFIG_RESET)		+= reset.o
+lib-$(CONFIG_RESIZE)		+= resize.o
+lib-$(CONFIG_SETKEYCODES)	+= setkeycodes.o
+lib-$(CONFIG_SETLOGCONS)	+= setlogcons.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/Config.in	(revision 20)
@@ -0,0 +1,790 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Coreutils"
+
+config BASENAME
+	bool "basename"
+	default n
+	help
+	  basename is used to strip the directory and suffix from filenames,
+	  leaving just the filename itself.  Enable this option if you wish
+	  to enable the 'basename' utility.
+
+config CAL
+	bool "cal"
+	default n
+	help
+	  cal is used to display a monthly calender.
+
+config CAT
+	bool "cat"
+	default n
+	help
+	  cat is used to concatenate files and print them to the standard
+	  output.  Enable this option if you wish to enable the 'cat' utility.
+
+config CATV
+	bool "catv"
+	default n
+	help
+	  Display nonprinting characters as escape sequences (like some
+	  implementations' cat -v option).
+
+config CHGRP
+	bool "chgrp"
+	default n
+	help
+	  chgrp is used to change the group ownership of files.
+
+config CHMOD
+	bool "chmod"
+	default n
+	help
+	  chmod is used to change the access permission of files.
+
+config CHOWN
+	bool "chown"
+	default n
+	help
+	  chown is used to change the user and/or group ownership
+	  of files.
+
+config CHROOT
+	bool "chroot"
+	default n
+	help
+	  chroot is used to change the root directory and run a command.
+	  The default command is `/bin/sh'.
+
+config CKSUM
+	bool "cksum"
+	default n
+	help
+	  cksum is used to calculate the CRC32 checksum of a file.
+
+config COMM
+	bool "comm"
+	default n
+	help
+	  comm is used to compare two files line by line and return
+	  a three-column output.
+
+config CP
+	bool "cp"
+	default n
+	help
+	  cp is used to copy files and directories.
+
+config CUT
+	bool "cut"
+	default n
+	help
+	  cut is used to print selected parts of lines from
+	  each file to stdout.
+
+config DATE
+	bool "date"
+	default n
+	help
+	  date is used to set the system date or display the
+	  current time in the given format.
+
+config FEATURE_DATE_ISOFMT
+	bool "Enable ISO date format output (-I)"
+	default y
+	depends on DATE
+	help
+	  Enable option (-I) to output an ISO-8601 compliant
+	  date/time string.
+
+config DD
+	bool "dd"
+	default n
+	help
+	  dd copies a file (from standard input to standard output,
+	  by default) using specific input and output blocksizes,
+	  while optionally performing conversions on it.
+
+config FEATURE_DD_SIGNAL_HANDLING
+	bool "Enable DD signal handling for status reporting"
+	default y
+	depends on DD
+	help
+	  sending a SIGUSR1 signal to a running `dd' process makes it
+	  print to standard error the number of records read and written
+	  so far, then to resume copying.
+
+	  $ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid
+	  10899206+0 records in 10899206+0 records out
+
+config FEATURE_DD_IBS_OBS
+	bool "Enable ibs, obs and conv options"
+	default n
+	depends on DD
+	help
+	  Enables support for writing a certain number of bytes in and out,
+	  at a time, and performing conversions on the data stream.
+
+config DF
+	bool "df"
+	default n
+	help
+	  df reports the amount of disk space used and available
+	  on filesystems.
+
+config DIRNAME
+	bool "dirname"
+	default n
+	help
+	  dirname is used to strip a non-directory suffix from
+	  a file name.
+
+config DOS2UNIX
+	bool "dos2unix/unix2dos"
+	default n
+	help
+	  dos2unix is used to convert a text file from DOS format to
+	  UNIX format, and vice versa.
+
+config UNIX2DOS
+	bool
+	default y
+	depends on DOS2UNIX
+	help
+	  unix2dos is used to convert a text file from UNIX format to
+	  DOS format, and vice versa.
+
+config DU
+	bool "du (default blocksize of 512 bytes)"
+	default n
+	help
+	  du is used to report the amount of disk space used
+	  for specified files.
+
+config FEATURE_DU_DEFAULT_BLOCKSIZE_1K
+	bool "Use a default blocksize of 1024 bytes (1K)"
+	default y
+	depends on DU
+	help
+	  Use a blocksize of (1K) instead of the default 512b.
+
+config ECHO
+	bool "echo (basic SuSv3 version taking no options)"
+	default n
+	help
+	  echo is used to print a specified string to stdout.
+
+# this entry also appears in shell/Config.in, next to the echo builtin
+config FEATURE_FANCY_ECHO
+	bool "Enable echo options (-n and -e)"
+	default y
+	depends on ECHO
+	help
+	  This adds options (-n and -e) to echo.
+
+config ENV
+	bool "env"
+	default n
+	help
+	  env is used to set an environment variable and run
+	  a command; without options it displays the current
+	  environment.
+
+config FEATURE_ENV_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on ENV && GETOPT_LONG
+	help
+	  Support long options for the env applet.
+
+config EXPAND
+	bool "expand"
+	default n
+	help
+	  By default, convert all tabs to spaces.
+
+config FEATURE_EXPAND_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on EXPAND && GETOPT_LONG
+	help
+	  Support long options for the expand applet.
+
+config EXPR
+	bool "expr"
+	default n
+	help
+	  expr is used to calculate numbers and print the result
+	  to standard output.
+
+config EXPR_MATH_SUPPORT_64
+	bool "Extend Posix numbers support to 64 bit"
+	default n
+	depends on EXPR
+	help
+	  Enable 64-bit math support in the expr applet.  This will make
+	  the applet slightly larger, but will allow computation with very
+	  large numbers.
+
+config FALSE
+	bool "false"
+	default n
+	help
+	  false returns an exit code of FALSE (1).
+
+config FOLD
+	bool "fold"
+	default n
+	help
+	  Wrap text to fit a specific width.
+
+config HEAD
+	bool "head"
+	default n
+	help
+	  head is used to print the first specified number of lines
+	  from files.
+
+config FEATURE_FANCY_HEAD
+	bool "Enable head options (-c, -q, and -v)"
+	default n
+	depends on HEAD
+	help
+	  This enables the head options (-c, -q, and -v).
+
+config HOSTID
+	bool "hostid"
+	default n
+	help
+	  hostid prints the numeric identifier (in hexadecimal) for
+	  the current host.
+
+config ID
+	bool "id"
+	default n
+	help
+	  id displays the current user and group ID names.
+
+config INSTALL
+	bool "install"
+	default n
+	help
+	  Copy files and set attributes.
+
+config FEATURE_INSTALL_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on INSTALL && GETOPT_LONG
+	help
+	  Support long options for the install applet.
+
+config LENGTH
+	bool "length"
+	default n
+	help
+	  length is used to print out the length of a specified string.
+
+config LN
+	bool "ln"
+	default n
+	help
+	  ln is used to create hard or soft links between files.
+
+config LOGNAME
+	bool "logname"
+	default n
+	help
+	  logname is used to print the current user's login name.
+
+config LS
+	bool "ls"
+	default n
+	help
+	  ls is used to list the contents of directories.
+
+config FEATURE_LS_FILETYPES
+	bool "Enable filetyping options (-p and -F)"
+	default y
+	depends on LS
+	help
+	  Enable the ls options (-p and -F).
+
+config FEATURE_LS_FOLLOWLINKS
+	bool "Enable symlinks dereferencing (-L)"
+	default y
+	depends on LS
+	help
+	  Enable the ls option (-L).
+
+config FEATURE_LS_RECURSIVE
+	bool "Enable recursion (-R)"
+	default y
+	depends on LS
+	help
+	  Enable the ls option (-R).
+
+config FEATURE_LS_SORTFILES
+	bool "Sort the file names"
+	default y
+	depends on LS
+	help
+	  Allow ls to sort file names alphabetically.
+
+config FEATURE_LS_TIMESTAMPS
+	bool "Show file timestamps"
+	default y
+	depends on LS
+	help
+	  Allow ls to display timestamps for files.
+
+config FEATURE_LS_USERNAME
+	bool "Show username/groupnames"
+	default y
+	depends on LS
+	help
+	  Allow ls to display username/groupname for files.
+
+config FEATURE_LS_COLOR
+	bool "Allow use of color to identify file types"
+	default y
+	depends on LS && GETOPT_LONG
+	help
+	  This enables the --color option to ls.
+
+config FEATURE_LS_COLOR_IS_DEFAULT
+	bool "Produce colored ls output by default"
+	default n
+	depends on FEATURE_LS_COLOR
+	help
+	  Saying yes here will turn coloring on by default,
+	  even if no "--color" option is given to the ls command.
+	  This is not recommended, since the colors are not
+	  configurable, and the output may not be legible on
+	  many output screens.
+
+config MD5SUM
+	bool "md5sum"
+	default n
+	help
+	  md5sum is used to print or check MD5 checksums.
+
+config MKDIR
+	bool "mkdir"
+	default n
+	help
+	  mkdir is used to create directories with the specified names.
+
+config FEATURE_MKDIR_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on MKDIR && GETOPT_LONG
+	help
+	  Support long options for the mkdir applet.
+
+config MKFIFO
+	bool "mkfifo"
+	default n
+	help
+	  mkfifo is used to create FIFOs (named pipes).
+	  The `mknod' program can also create FIFOs.
+
+config MKNOD
+	bool "mknod"
+	default n
+	help
+	  mknod is used to create FIFOs or block/character special
+	  files with the specified names.
+
+config MV
+	bool "mv"
+	default n
+	help
+	  mv is used to move or rename files or directories.
+
+config FEATURE_MV_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on MV && GETOPT_LONG
+	help
+	  Support long options for the mv applet.
+
+config NICE
+	bool "nice"
+	default n
+	help
+	  nice runs a program with modified scheduling priority.
+
+config NOHUP
+	bool "nohup"
+	default n
+	help
+	  run a command immune to hangups, with output to a non-tty.
+
+config OD
+	bool "od"
+	default n
+	help
+	  od is used to dump binary files in octal and other formats.
+
+config PRINTENV
+	bool "printenv"
+	default n
+	help
+	  printenv is used to print all or part of environment.
+
+config PRINTF
+	bool "printf"
+	default n
+	help
+	  printf is used to format and print specified strings.
+	  It's similar to `echo' except it has more options.
+
+config PWD
+	bool "pwd"
+	default n
+	help
+	  pwd is used to print the current directory.
+
+config READLINK
+	bool "readlink"
+	default n
+	help
+	  This program reads a symbolic link and returns the name
+	  of the file it points to
+
+config FEATURE_READLINK_FOLLOW
+	bool "Enable canonicalization by following all symlinks (-f)"
+	default n
+	depends on READLINK
+	help
+	  Enable the readlink option (-f).
+
+config REALPATH
+	bool "realpath"
+	default n
+	help
+	  Return the canonicalized absolute pathname.
+	  This isn't provided by GNU shellutils, but where else does it belong.
+
+config RM
+	bool "rm"
+	default n
+	help
+	  rm is used to remove files or directories.
+
+config RMDIR
+	bool "rmdir"
+	default n
+	help
+	  rmdir is used to remove empty directories.
+
+config SEQ
+	bool "seq"
+	default n
+	help
+	  print a sequence of numbers
+
+config SHA1SUM
+	bool "sha1sum"
+	default n
+	help
+	  Compute and check SHA1 message digest
+
+config SLEEP
+	bool "sleep (single integer arg with no suffix)"
+	default n
+	help
+	  sleep is used to pause for a specified number of seconds,
+
+config FEATURE_FANCY_SLEEP
+	bool "Enable multiple integer args and optional time suffixes"
+	default n
+	depends on SLEEP
+	help
+	  Allow sleep to pause for specified minutes, hours, and days.
+
+config SORT
+	bool "sort"
+	default n
+	help
+	  sort is used to sort lines of text in specified files.
+
+config FEATURE_SORT_BIG
+	bool "full SuSv3 compliant sort (Support -ktcsbdfiozgM)"
+	default y
+	depends on SORT
+	help
+	  Without this, sort only supports  -r, -u, and an integer version
+	  of -n.  Selecting this adds sort keys, floating point support, and
+	  more.  This adds a little over 3k to a nonstatic build on x86.
+
+	  The SuSv3 sort standard is available at:
+	  http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
+
+config SPLIT
+	bool "split"
+	default n
+	help
+	  split a file into pieces.
+
+config FEATURE_SPLIT_FANCY
+	bool "fancy extensions"
+	default n
+	depends on SPLIT
+	help
+	  Add support for features not required by SUSv3.
+	  Supports additional suffixes 'b' for 512 bytes,
+	  'g' for 1GiB for the -b option.
+
+config STAT
+	bool "stat"
+	default n
+	help
+	  display file or filesystem status.
+
+config FEATURE_STAT_FORMAT
+	bool "Enable custom formats (-c)"
+	default n
+	depends on STAT
+	help
+	  Without this, stat will not support the '-c format' option where
+	  users can pass a custom format string for output.  This adds about
+	  7k to a nonstatic build on amd64.
+
+config STTY
+	bool "stty"
+	default n
+	help
+	  stty is used to change and print terminal line settings.
+
+config SUM
+	bool "sum"
+	default n
+	help
+	  checksum and count the blocks in a file
+
+config SYNC
+	bool "sync"
+	default n
+	help
+	  sync is used to flush filesystem buffers.
+
+config TAIL
+	bool "tail"
+	default n
+	help
+	  tail is used to print the last specified number of lines
+	  from files.
+
+config FEATURE_FANCY_TAIL
+	bool "Enable extra tail options (-q, -s, and -v)"
+	default y
+	depends on TAIL
+	help
+	  The options (-q, -s, and -v) are provided by GNU tail, but
+	  are not specific in the SUSv3 standard.
+
+config TEE
+	bool "tee"
+	default n
+	help
+	  tee is used to read from standard input and write
+	  to standard output and files.
+
+config FEATURE_TEE_USE_BLOCK_IO
+	bool "Enable block i/o (larger/faster) instead of byte i/o."
+	default n
+	depends on TEE
+	help
+	  Enable this option for a faster tee, at expense of size.
+
+config TEST
+	bool "test"
+	default n
+	help
+	  test is used to check file types and compare values,
+	  returning an appropriate exit code.  The bash shell
+	  has test built in, ash can build it in optionally.
+
+config FEATURE_TEST_64
+	bool "Extend test to 64 bit"
+	default n
+	depends on TEST
+	help
+	  Enable 64-bit support in test.
+
+config TOUCH
+	bool "touch"
+	default n
+	help
+	  touch is used to create or change the access and/or
+	  modification timestamp of specified files.
+
+config TR
+	bool "tr"
+	default n
+	help
+	  tr is used to squeeze, and/or delete characters from standard
+	  input, writing to standard output.
+
+config FEATURE_TR_CLASSES
+	bool "Enable character classes (such as [:upper:])"
+	default n
+	depends on TR
+	help
+	  Enable character classes, enabling commands such as:
+	  tr [:upper:] [:lower:] to convert input into lowercase.
+
+config FEATURE_TR_EQUIV
+	bool "Enable equivalence classes"
+	default n
+	depends on TR
+	help
+	  Enable equivalence classes, which essentially add the enclosed
+	  character to the current set. For instance, tr [=a=] xyz would
+	  replace all instances of 'a' with 'xyz'. This option is mainly
+	  useful for cases when no other way of expressing a character
+	  is possible.
+
+config TRUE
+	bool "true"
+	default n
+	help
+	  true returns an exit code of TRUE (0).
+
+config TTY
+	bool "tty"
+	default n
+	help
+	  tty is used to print the name of the current terminal to
+	  standard output.
+
+config UNAME
+	bool "uname"
+	default n
+	help
+	  uname is used to print system information.
+
+config UNEXPAND
+	bool "unexpand"
+	default n
+	help
+	  By default, convert only leading sequences of blanks to tabs.
+
+config FEATURE_UNEXPAND_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on UNEXPAND && GETOPT_LONG
+	help
+	  Support long options for the unexpand applet.
+
+config UNIQ
+	bool "uniq"
+	default n
+	help
+	  uniq is used to remove duplicate lines from a sorted file.
+
+config USLEEP
+	bool "usleep"
+	default n
+	help
+	  usleep is used to pause for a specified number of microseconds.
+
+config UUDECODE
+	bool "uudecode"
+	default n
+	help
+	  uudecode is used to decode a uuencoded file.
+
+config UUENCODE
+	bool "uuencode"
+	default n
+	help
+	  uuencode is used to uuencode a file.
+
+config WC
+	bool "wc"
+	default n
+	help
+	  wc is used to print the number of bytes, words, and lines,
+	  in specified files.
+
+config FEATURE_WC_LARGE
+	bool "Support very large files in wc"
+	default n
+	depends on WC
+	help
+	  Use "unsigned long long" in wc for count variables
+
+config WHO
+	bool "who"
+	default n
+	select FEATURE_UTMP
+	help
+	  who is used to show who is logged on.
+
+config WHOAMI
+	bool "whoami"
+	default n
+	help
+	  whoami is used to print the username of the current
+	  user id (same as id -un).
+
+config YES
+	bool "yes"
+	default n
+	help
+	  yes is used to repeatedly output a specific string, or
+	  the default string `y'.
+
+comment "Common options for cp and mv"
+	depends on CP || MV
+
+config FEATURE_PRESERVE_HARDLINKS
+	bool "Preserve hard links"
+	default n
+	depends on CP || MV
+	help
+	  Allow cp and mv to preserve hard links.
+
+comment "Common options for ls, more and telnet"
+	depends on LS || MORE || TELNET
+
+config FEATURE_AUTOWIDTH
+	bool "Calculate terminal & column widths"
+	default y
+	depends on LS || MORE || TELNET
+	help
+	  This option allows utilities such as 'ls', 'more' and 'telnet'
+	  to determine the width of the screen, which can allow them to
+	  display additional text or avoid wrapping text onto the next line.
+	  If you leave this disabled, your utilities will be especially
+	  primitive and will be unable to determine the current screen width.
+
+comment "Common options for df, du, ls"
+	depends on DF || DU || LS
+
+config FEATURE_HUMAN_READABLE
+	bool "Support for human readable output (example 13k, 23M, 235G)"
+	default n
+	depends on DF || DU || LS
+	help
+	  Allow df, du, and ls to have human readable output.
+
+comment "Common options for md5sum, sha1sum"
+	depends on MD5SUM || SHA1SUM
+
+config FEATURE_MD5_SHA1_SUM_CHECK
+	bool "Enable -c, -s and -w options"
+	default n
+	depends on MD5SUM || SHA1SUM
+	help
+	  Enabling the -c options allows files to be checked
+	  against pre-calculated hash values.
+
+	  -s and -w are useful options when verifying checksums.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/Kbuild	(revision 20)
@@ -0,0 +1,86 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+libs-y			+= libcoreutils/
+
+lib-y:=
+lib-$(CONFIG_BASENAME)  += basename.o
+lib-$(CONFIG_CAL)       += cal.o
+lib-$(CONFIG_CAT)       += cat.o
+lib-$(CONFIG_MORE)      += cat.o # more uses it if stdout isn't a tty
+lib-$(CONFIG_LESS)      += cat.o # less too
+lib-$(CONFIG_CATV)      += catv.o
+lib-$(CONFIG_CHGRP)     += chgrp.o chown.o
+lib-$(CONFIG_CHMOD)     += chmod.o
+lib-$(CONFIG_CHOWN)     += chown.o
+lib-$(CONFIG_CHROOT)    += chroot.o
+lib-$(CONFIG_CKSUM)     += cksum.o
+lib-$(CONFIG_COMM)      += comm.o
+lib-$(CONFIG_CP)        += cp.o
+lib-$(CONFIG_CUT)       += cut.o
+lib-$(CONFIG_DATE)      += date.o
+lib-$(CONFIG_DD)        += dd.o
+lib-$(CONFIG_DF)        += df.o
+lib-$(CONFIG_DIRNAME)   += dirname.o
+lib-$(CONFIG_DOS2UNIX)  += dos2unix.o
+lib-$(CONFIG_DU)        += du.o
+lib-$(CONFIG_ECHO)      += echo.o
+lib-$(CONFIG_ASH)       += echo.o # used by ash
+lib-$(CONFIG_ENV)       += env.o
+lib-$(CONFIG_EXPR)      += expr.o
+lib-$(CONFIG_EXPAND)    += expand.o
+lib-$(CONFIG_FALSE)     += false.o
+lib-$(CONFIG_FOLD)      += fold.o
+lib-$(CONFIG_HEAD)      += head.o
+lib-$(CONFIG_HOSTID)    += hostid.o
+lib-$(CONFIG_ID)        += id.o
+lib-$(CONFIG_INSTALL)   += install.o
+lib-$(CONFIG_LENGTH)    += length.o
+lib-$(CONFIG_LN)        += ln.o
+lib-$(CONFIG_LOGNAME)   += logname.o
+lib-$(CONFIG_LS)        += ls.o
+lib-$(CONFIG_MD5SUM)    += md5_sha1_sum.o
+lib-$(CONFIG_MKDIR)     += mkdir.o
+lib-$(CONFIG_MKFIFO)    += mkfifo.o
+lib-$(CONFIG_MKNOD)     += mknod.o
+lib-$(CONFIG_MV)        += mv.o
+lib-$(CONFIG_NICE)      += nice.o
+lib-$(CONFIG_NOHUP)     += nohup.o
+lib-$(CONFIG_OD)        += od.o
+lib-$(CONFIG_PRINTENV)  += printenv.o
+lib-$(CONFIG_PRINTF)    += printf.o
+lib-$(CONFIG_PWD)       += pwd.o
+lib-$(CONFIG_READLINK)  += readlink.o
+lib-$(CONFIG_REALPATH)  += realpath.o
+lib-$(CONFIG_RM)        += rm.o
+lib-$(CONFIG_RMDIR)     += rmdir.o
+lib-$(CONFIG_SEQ)       += seq.o
+lib-$(CONFIG_SHA1SUM)   += md5_sha1_sum.o
+lib-$(CONFIG_SLEEP)     += sleep.o
+lib-$(CONFIG_SPLIT)     += split.o
+lib-$(CONFIG_SORT)      += sort.o
+lib-$(CONFIG_STAT)      += stat.o
+lib-$(CONFIG_STTY)      += stty.o
+lib-$(CONFIG_SUM)       += sum.o
+lib-$(CONFIG_SYNC)      += sync.o
+lib-$(CONFIG_TAIL)      += tail.o
+lib-$(CONFIG_TEE)       += tee.o
+lib-$(CONFIG_TEST)      += test.o
+lib-$(CONFIG_ASH)       += test.o # used by ash
+lib-$(CONFIG_TOUCH)     += touch.o
+lib-$(CONFIG_TR)        += tr.o
+lib-$(CONFIG_TRUE)      += true.o
+lib-$(CONFIG_TTY)       += tty.o
+lib-$(CONFIG_UNAME)     += uname.o
+lib-$(CONFIG_UNEXPAND)  += expand.o
+lib-$(CONFIG_UNIQ)      += uniq.o
+lib-$(CONFIG_USLEEP)    += usleep.o
+lib-$(CONFIG_UUDECODE)  += uudecode.o
+lib-$(CONFIG_UUENCODE)  += uuencode.o
+lib-$(CONFIG_WC)        += wc.o
+lib-$(CONFIG_WHO)       += who.o
+lib-$(CONFIG_WHOAMI)    += whoami.o
+lib-$(CONFIG_YES)       += yes.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/libcoreutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/libcoreutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/coreutils/libcoreutils/Kbuild	(revision 20)
@@ -0,0 +1,12 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_MKFIFO)	+= getopt_mk_fifo_nod.o
+lib-$(CONFIG_MKNOD)	+= getopt_mk_fifo_nod.o
+lib-$(CONFIG_INSTALL)	+= cp_mv_stat.o
+lib-$(CONFIG_CP)	+= cp_mv_stat.o
+lib-$(CONFIG_MV)	+= cp_mv_stat.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/debianutils/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/debianutils/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/debianutils/Config.in	(revision 20)
@@ -0,0 +1,83 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Debian Utilities"
+
+config MKTEMP
+	bool "mktemp"
+	default n
+	help
+	  mktemp is used to create unique temporary files
+
+config PIPE_PROGRESS
+	bool "pipe_progress"
+	default n
+	help
+	  Display a dot to indicate pipe activity.
+
+config RUN_PARTS
+	bool "run-parts"
+	default n
+	help
+	  run-parts is a utility designed to run all the scripts in a directory.
+
+	  It is useful to set up a directory like cron.daily, where you need to
+	  execute all the scripts in that directory.
+
+	  In this implementation of run-parts some features (such as report mode)
+	  are not implemented.
+
+	  Unless you know that run-parts is used in some of your scripts
+	  you can safely say N here.
+
+config FEATURE_RUN_PARTS_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on RUN_PARTS && GETOPT_LONG
+	help
+	  Support long options for the run-parts applet.
+
+config FEATURE_RUN_PARTS_FANCY
+	bool "Support additional arguments"
+	default n
+	depends on RUN_PARTS
+	help
+	  Support additional options:
+	  -l --list print the names of the all matching files (not
+	            limited to executables), but don't actually run them.
+
+config START_STOP_DAEMON
+	bool "start-stop-daemon"
+	default y
+	help
+	  start-stop-daemon is used to control the creation and
+	  termination of system-level processes, usually the ones
+	  started during the startup of the system.
+
+config FEATURE_START_STOP_DAEMON_FANCY
+	bool "Support additional arguments"
+	default y
+	depends on START_STOP_DAEMON
+	help
+	  Support additional arguments.
+	  -o|--oknodo ignored since we exit with 0 anyway
+	  -v|--verbose
+
+config FEATURE_START_STOP_DAEMON_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on START_STOP_DAEMON && GETOPT_LONG
+	help
+	  Support long options for the start-stop-daemon applet.
+
+config WHICH
+	bool "which"
+	default n
+	help
+	  which is used to find programs in your PATH and
+	  print out their pathnames.
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/debianutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/debianutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/debianutils/Kbuild	(revision 20)
@@ -0,0 +1,12 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_MKTEMP)            += mktemp.o
+lib-$(CONFIG_PIPE_PROGRESS)     += pipe_progress.o
+lib-$(CONFIG_RUN_PARTS)         += run_parts.o
+lib-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
+lib-$(CONFIG_WHICH)             += which.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/docs/busybox_footer.pod
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/docs/busybox_footer.pod	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/docs/busybox_footer.pod	(revision 20)
@@ -0,0 +1,256 @@
+=back
+
+=head1 LIBC NSS
+
+GNU Libc (glibc) uses the Name Service Switch (NSS) to configure the behavior
+of the C library for the local environment, and to configure how it reads
+system data, such as passwords and group information.  This is implemented
+using an /etc/nsswitch.conf configuration file, and using one or more of the
+/lib/libnss_* libraries.  BusyBox tries to avoid using any libc calls that make
+use of NSS.  Some applets however, such as login and su, will use libc functions
+that require NSS.
+
+If you enable CONFIG_USE_BB_PWD_GRP, BusyBox will use internal functions to
+directly access the /etc/passwd, /etc/group, and /etc/shadow files without
+using NSS.  This may allow you to run your system without the need for
+installing any of the NSS configuration files and libraries.
+
+When used with glibc, the BusyBox 'networking' applets will similarly require
+that you install at least some of the glibc NSS stuff (in particular,
+/etc/nsswitch.conf, /lib/libnss_dns*, /lib/libnss_files*, and /lib/libresolv*).
+
+Shameless Plug: As an alternative, one could use a C library such as uClibc.  In
+addition to making your system significantly smaller, uClibc does not require the
+use of any NSS support files or libraries.
+
+=head1 MAINTAINER
+
+Denis Vlasenko <vda.linux@googlemail.com>
+
+=head1 AUTHORS
+
+The following people have contributed code to BusyBox whether they know it or
+not.  If you have written code included in BusyBox, you should probably be
+listed here so you can obtain your bit of eternal glory.  If you should be
+listed here, or the description of what you have done needs more detail, or is
+incorect, please send in an update.
+
+
+=for html <br>
+
+Emanuele Aina <emanuele.aina@tiscali.it>
+	run-parts
+
+=for html <br>
+
+Erik Andersen <andersen@codepoet.org>
+
+    Tons of new stuff, major rewrite of most of the
+    core apps, tons of new apps as noted in header files.
+    Lots of tedious effort writing these boring docs that
+    nobody is going to actually read.
+
+=for html <br>
+
+Laurence Anderson <l.d.anderson@warwick.ac.uk>
+
+    rpm2cpio, unzip, get_header_cpio, read_gz interface, rpm
+
+=for html <br>
+
+Jeff Angielski <jeff@theptrgroup.com>
+
+    ftpput, ftpget
+
+=for html <br>
+
+Edward Betts <edward@debian.org>
+
+    expr, hostid, logname, whoami
+
+=for html <br>
+
+John Beppu <beppu@codepoet.org>
+
+    du, nslookup, sort
+
+=for html <br>
+
+Brian Candler <B.Candler@pobox.com>
+
+    tiny-ls(ls)
+
+=for html <br>
+
+Randolph Chung <tausq@debian.org>
+
+    fbset, ping, hostname
+
+=for html <br>
+
+Dave Cinege <dcinege@psychosis.com>
+
+    more(v2), makedevs, dutmp, modularization, auto links file,
+    various fixes, Linux Router Project maintenance
+
+=for html <br>
+
+Jordan Crouse <jordan@cosmicpenguin.net>
+
+	ipcalc
+
+=for html <br>
+
+Magnus Damm <damm@opensource.se>
+
+    tftp client insmod powerpc support
+
+=for html <br>
+
+Larry Doolittle <ldoolitt@recycle.lbl.gov>
+
+    pristine source directory compilation, lots of patches and fixes.
+
+=for html <br>
+
+Glenn Engel <glenne@engel.org>
+
+    httpd
+
+=for html <br>
+
+Gennady Feldman <gfeldman@gena01.com>
+
+    Sysklogd (single threaded syslogd, IPC Circular buffer support,
+    logread), various fixes.
+
+=for html <br>
+
+Karl M. Hegbloom <karlheg@debian.org>
+
+    cp_mv.c, the test suite, various fixes to utility.c, &c.
+
+=for html <br>
+
+Daniel Jacobowitz <dan@debian.org>
+
+    mktemp.c
+
+=for html <br>
+
+Matt Kraai <kraai@alumni.cmu.edu>
+
+    documentation, bugfixes, test suite
+
+=for html <br>
+
+Stephan Linz <linz@li-pro.net>
+
+	ipcalc, Red Hat equivalence
+
+=for html <br>
+
+John Lombardo <john@deltanet.com>
+
+    tr
+
+=for html <br>
+
+Glenn McGrath <bug1@iinet.net.au>
+
+    Common unarchving code and unarchiving applets, ifupdown, ftpgetput,
+    nameif, sed, patch, fold, install, uudecode.
+    Various bugfixes, review and apply numerous patches.
+
+=for html <br>
+
+Manuel Novoa III <mjn3@codepoet.org>
+
+    cat, head, mkfifo, mknod, rmdir, sleep, tee, tty, uniq, usleep, wc, yes,
+    mesg, vconfig, make_directory, parse_mode, dirname, mode_string,
+    get_last_path_component, simplify_path, and a number trivial libbb routines
+
+    also bug fixes, partial rewrites, and size optimizations in
+    ash, basename, cal, cmp, cp, df, du, echo, env, ln, logname, md5sum, mkdir,
+    mv, realpath, rm, sort, tail, touch, uname, watch, arith, human_readable,
+    interface, dutmp, ifconfig, route
+
+=for html <br>
+
+Vladimir Oleynik <dzo@simtreas.ru>
+
+    cmdedit; xargs(current), httpd(current);
+    ports: ash, crond, fdisk, inetd, stty, traceroute, top;
+    locale, various fixes
+    and irreconcilable critic of everything not perfect.
+
+=for html <br>
+
+Bruce Perens <bruce@pixar.com>
+
+    Original author of BusyBox in 1995, 1996. Some of his code can
+    still be found hiding here and there...
+
+=for html <br>
+
+Tim Riker <Tim@Rikers.org>
+
+    bug fixes, member of fan club
+
+=for html <br>
+
+Kent Robotti <robotti@metconnect.com>
+
+    reset, tons and tons of bug reports and patches.
+
+=for html <br>
+
+Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
+
+    wget - Contributed by permission of Covad Communications
+
+=for html <br>
+
+Pavel Roskin <proski@gnu.org>
+
+    Lots of bugs fixes and patches.
+
+=for html <br>
+
+Gyepi Sam <gyepi@praxis-sw.com>
+
+    Remote logging feature for syslogd
+
+=for html <br>
+
+Linus Torvalds <torvalds@transmeta.com>
+
+    mkswap, fsck.minix, mkfs.minix
+
+=for html <br>
+
+Mark Whitley <markw@codepoet.org>
+
+    grep, sed, cut, xargs(previous),
+    style-guide, new-applet-HOWTO, bug fixes, etc.
+
+=for html <br>
+
+Charles P. Wright <cpwright@villagenet.com>
+
+    gzip, mini-netcat(nc)
+
+=for html <br>
+
+Enrique Zanardi <ezanardi@ull.es>
+
+    tarcat (since removed), loadkmap, various fixes, Debian maintenance
+
+=for html <br>
+
+Tito Ragusa <farmatito@tiscali.it>
+
+	devfsd and size optimizations in strings, openvt and deallocvt.
+
+=cut
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/docs/busybox_header.pod
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/docs/busybox_header.pod	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/docs/busybox_header.pod	(revision 20)
@@ -0,0 +1,82 @@
+# vi: set sw=4 ts=4:
+
+=head1 NAME
+
+BusyBox - The Swiss Army Knife of Embedded Linux
+
+=head1 SYNTAX
+
+ BusyBox <function> [arguments...]  # or
+
+ <function> [arguments...]	    # if symlinked
+
+=head1 DESCRIPTION
+
+BusyBox combines tiny versions of many common UNIX utilities into a single
+small executable. It provides minimalist replacements for most of the utilities
+you usually find in GNU coreutils, util-linux, etc. The utilities in BusyBox
+generally have fewer options than their full-featured GNU cousins; however, the
+options that are included provide the expected functionality and behave very
+much like their GNU counterparts.
+
+BusyBox has been written with size-optimization and limited resources in mind.
+It is also extremely modular so you can easily include or exclude commands (or
+features) at compile time. This makes it easy to customize your embedded
+systems. To create a working system, just add /dev, /etc, and a Linux kernel.
+BusyBox provides a fairly complete POSIX environment for any small or embedded
+system.
+
+BusyBox is extremely configurable.  This allows you to include only the
+components you need, thereby reducing binary size. Run 'make config' or 'make
+menuconfig' to select the functionality that you wish to enable.  Then run
+'make' to compile BusyBox using your configuration.
+
+After the compile has finished, you should use 'make install' to install
+BusyBox. This will install the 'bin/busybox' binary, in the target directory
+specified by CONFIG_PREFIX. CONFIG_PREFIX can be set when configuring BusyBox,
+or you can specify an alternative location at install time (i.e., with a
+command line like 'make CONFIG_PREFIX=/tmp/foo install'). If you enabled
+any applet installation scheme (either as symlinks or hardlinks), these will
+also be installed in the location pointed to by CONFIG_PREFIX.
+
+=head1 USAGE
+
+BusyBox is a multi-call binary.  A multi-call binary is an executable program
+that performs the same job as more than one utility program.  That means there
+is just a single BusyBox binary, but that single binary acts like a large
+number of utilities.  This allows BusyBox to be smaller since all the built-in
+utility programs (we call them applets) can share code for many common operations.
+
+You can also invoke BusyBox by issuing a command as an argument on the
+command line.  For example, entering
+
+	/bin/busybox ls
+
+will also cause BusyBox to behave as 'ls'.
+
+Of course, adding '/bin/busybox' into every command would be painful.  So most
+people will invoke BusyBox using links to the BusyBox binary.
+
+For example, entering
+
+	ln -s /bin/busybox ls
+	./ls
+
+will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
+into BusyBox).  Generally speaking, you should never need to make all these
+links yourself, as the BusyBox build system will do this for you when you run
+the 'make install' command.
+
+If you invoke BusyBox with no arguments, it will provide you with a list of the
+applets that have been compiled into your BusyBox binary.
+
+=head1 COMMON OPTIONS
+
+Most BusyBox commands support the B<--help> argument to provide a terse runtime
+description of their behavior.  If the CONFIG_FEATURE_VERBOSE_USAGE option has
+been enabled, more detailed usage information will also be available.
+
+=head1 COMMANDS
+
+Currently defined functions include:
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/Config.in	(revision 20)
@@ -0,0 +1,67 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Linux Ext2 FS Progs"
+
+config CHATTR
+	bool "chattr"
+	default n
+	help
+	  chattr changes the file attributes on a second extended file system.
+
+### config E2FSCK
+### 	bool "e2fsck"
+### 	default n
+### 	help
+### 	  e2fsck is used to check Linux second extended file systems (ext2fs).
+### 	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
+### 	  The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
+### 	  provided.
+
+config FSCK
+	bool "fsck"
+	default n
+	help
+	  fsck is used to check and optionally repair one or more filesystems.
+	  In actuality, fsck is simply a front-end for the various file system
+	  checkers (fsck.fstype) available under Linux.
+
+config LSATTR
+	bool "lsattr"
+	default n
+	help
+	  lsattr lists the file attributes on a second extended file system.
+
+### config MKE2FS
+### 	bool "mke2fs"
+### 	default n
+### 	help
+### 	  mke2fs is used to create an ext2/ext3 filesystem.  The normal compat
+### 	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
+
+### config TUNE2FS
+### 	bool "tune2fs"
+### 	default n
+### 	help
+### 	  tune2fs allows the system administrator to adjust various tunable
+### 	  filesystem parameters on Linux ext2/ext3 filesystems.
+
+### config E2LABEL
+### 	bool "e2label"
+### 	default n
+### 	depends on TUNE2FS
+### 	help
+### 	  e2label will display or change the filesystem label on the ext2
+### 	  filesystem located on device.
+
+### config FINDFS
+### 	bool "findfs"
+### 	default n
+### 	depends on TUNE2FS
+### 	help
+### 	  findfs will search the disks in the system looking for a filesystem
+### 	  which has a label matching label or a UUID equal to uuid.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/Kbuild	(revision 20)
@@ -0,0 +1,12 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+
+lib-$(CONFIG_CHATTR) += chattr.o e2fs_lib.o
+lib-$(CONFIG_LSATTR) += lsattr.o e2fs_lib.o
+
+lib-$(CONFIG_FSCK) += fsck.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/README
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/README	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/README	(revision 20)
@@ -0,0 +1,12 @@
+Authors and contributors of original e2fsprogs:
+
+Remy Card <card@masi.ibp.fr>
+Theodore Ts'o <tytso@mit.edu>
+Stephen C. Tweedie <sct@redhat.com>
+Andreas Gruenbacher, <a.gruenbacher@computer.org>
+Kaz Kylheku <kaz@ashi.footprints.net>
+F.W. ten Wolde <franky@duteca.et.tudelft.nl>
+Jeremy Fitzhardinge <jeremy@zip.com.au>
+M.J.E. Mol <marcel@duteca.et.tudelft.nl>
+Miquel van Smoorenburg <miquels@drinkel.ow.org>
+Uwe Ohse <uwe@tirka.gun.de>
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/Config.in	(revision 20)
@@ -0,0 +1,67 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Linux Ext2 FS Progs"
+
+config CHATTR
+	bool "chattr"
+	default n
+	help
+	  chattr changes the file attributes on a second extended file system.
+
+config E2FSCK
+	bool "e2fsck"
+	default n
+	help
+	  e2fsck is used to check Linux second extended file systems (ext2fs).
+	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
+	  The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
+	  provided.
+
+config FSCK
+	bool "fsck"
+	default n
+	help
+	  fsck is used to check and optionally repair one or more filesystems.
+	  In actuality, fsck is simply a front-end for the various file system
+	  checkers (fsck.fstype) available under Linux.
+
+config LSATTR
+	bool "lsattr"
+	default n
+	help
+	  lsattr lists the file attributes on a second extended file system.
+
+config MKE2FS
+	bool "mke2fs"
+	default n
+	help
+	  mke2fs is used to create an ext2/ext3 filesystem.  The normal compat
+	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
+
+config TUNE2FS
+	bool "tune2fs"
+	default n
+	help
+	  tune2fs allows the system administrator to adjust various tunable
+	  filesystem parameters on Linux ext2/ext3 filesystems.
+
+config E2LABEL
+	bool "e2label"
+	default n
+	depends on TUNE2FS
+	help
+	  e2label will display or change the filesystem label on the ext2
+	  filesystem located on device.
+
+config FINDFS
+	bool "findfs"
+	default n
+	depends on TUNE2FS
+	help
+	  findfs will search the disks in the system looking for a filesystem
+	  which has a label matching label or a UUID equal to uuid.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/Kbuild	(revision 20)
@@ -0,0 +1,16 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+
+lib-$(CONFIG_CHATTR)     += chattr.o
+lib-$(CONFIG_E2FSCK)     += e2fsck.o util.o
+lib-$(CONFIG_FSCK)       += fsck.o util.o
+lib-$(CONFIG_LSATTR)     += lsattr.o
+lib-$(CONFIG_MKE2FS)     += mke2fs.o util.o
+lib-$(CONFIG_TUNE2FS)    += tune2fs.o util.o
+
+CFLAGS += -include $(srctree)/e2fsprogs/e2fsbb.h
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/README
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/README	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/README	(revision 20)
@@ -0,0 +1,3 @@
+This is a pretty straight rip from the e2fsprogs pkg.
+
+See README's in subdirs for specific info.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/blkid/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/blkid/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/blkid/Kbuild	(revision 20)
@@ -0,0 +1,23 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+NEEDED-$(CONFIG_E2FSCK) = y
+NEEDED-$(CONFIG_FSCK) = y
+NEEDED-$(CONFIG_MKE2FS) = y
+NEEDED-$(CONFIG_TUNE2FS) = y
+
+lib-y:=
+lib-$(NEEDED-y) += cache.o dev.o devname.o devno.o blkid_getsize.o \
+                   probe.o read.o resolve.o save.o tag.o list.o
+
+CFLAGS_dev.o     := -include $(srctree)/include/busybox.h
+CFLAGS_devname.o := -include $(srctree)/include/busybox.h
+CFLAGS_devno.o   := -include $(srctree)/include/busybox.h
+CFLAGS_blkid_getsize.o := -include $(srctree)/include/busybox.h
+CFLAGS_probe.o   := -include $(srctree)/include/busybox.h
+CFLAGS_save.o    := -include $(srctree)/include/busybox.h
+CFLAGS_tag.o     := -include $(srctree)/include/busybox.h
+CFLAGS_list.o    := -include $(srctree)/include/busybox.h
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/e2p/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/e2p/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/e2p/Kbuild	(revision 20)
@@ -0,0 +1,15 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+NEEDED-$(CONFIG_CHATTR) = y
+NEEDED-$(CONFIG_LSATTR) = y
+NEEDED-$(CONFIG_MKE2FS) = y
+NEEDED-$(CONFIG_TUNE2FS) = y
+
+lib-y:=
+lib-$(NEEDED-y) += fgetsetflags.o fgetsetversion.o pf.o iod.o mntopts.o \
+           feature.o ls.o uuid.o pe.o ostype.o ps.o hashstr.o \
+           parse_num.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild	(revision 20)
@@ -0,0 +1,23 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+NEEDED-$(CONFIG_E2FSCK) = y
+NEEDED-$(CONFIG_FSCK) = y
+NEEDED-$(CONFIG_MKE2FS) = y
+NEEDED-$(CONFIG_TUNE2FS) = y
+
+lib-y:=
+lib-$(NEEDED-y) += gen_bitmap.o bitops.o ismounted.o mkjournal.o unix_io.o \
+                   rw_bitmaps.o initialize.o bitmaps.o block.o \
+                   ind_block.o inode.o freefs.o alloc_stats.o closefs.o \
+                   openfs.o io_manager.o finddev.o read_bb.o alloc.o badblocks.o \
+                   getsize.o getsectsize.o alloc_tables.o read_bb_file.o mkdir.o \
+                   bb_inode.o newdir.o alloc_sb.o lookup.o dirblock.o expanddir.o \
+                   dir_iterate.o link.o res_gdt.o icount.o get_pathname.o dblist.o \
+                   dirhash.o version.o flushb.o unlink.o check_desc.o valid_blk.o \
+                   ext_attr.o bmap.o dblist_dir.o ext2fs_inline.o swapfs.o
+
+CFLAGS += -include $(srctree)/e2fsprogs/e2fsbb.h
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/uuid/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/uuid/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/e2fsprogs/old_e2fsprogs/uuid/Kbuild	(revision 20)
@@ -0,0 +1,14 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+NEEDED-$(CONFIG_E2FSCK) = y
+NEEDED-$(CONFIG_FSCK) = y
+NEEDED-$(CONFIG_MKE2FS) = y
+NEEDED-$(CONFIG_TUNE2FS) = y
+
+lib-y:=
+lib-$(NEEDED-y) += compare.o gen_uuid.o pack.o parse.o unpack.o unparse.o \
+                   uuid_time.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/editors/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/editors/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/editors/Config.in	(revision 20)
@@ -0,0 +1,187 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Editors"
+
+config AWK
+	bool "awk"
+	default n
+	help
+	  Awk is used as a pattern scanning and processing language.  This is
+	  the BusyBox implementation of that programming language.
+
+config FEATURE_AWK_MATH
+	bool "Enable math functions (requires libm)"
+	default y
+	depends on AWK
+	help
+	  Enable math functions of the Awk programming language.
+	  NOTE: This will require libm to be present for linking.
+
+config CMP
+	bool "cmp"
+	default n
+	help
+	  cmp is used to compare two files and returns the result
+	  to standard output.
+
+config DIFF
+	bool "diff"
+	default n
+	help
+	  diff compares two files or directories and outputs the
+	  differences between them in a form that can be given to
+	  the patch command.
+
+config FEATURE_DIFF_BINARY
+	bool "Enable checks for binary files"
+	default y
+	depends on DIFF
+	help
+	  This option enables support for checking for binary files
+	  before a comparison is carried out.
+
+config FEATURE_DIFF_DIR
+	bool "Enable directory support"
+	default y
+	depends on DIFF
+	help
+	  This option enables support for directory and subdirectory
+	  comparison.
+
+config FEATURE_DIFF_MINIMAL
+	bool "Enable -d option to find smaller sets of changes"
+	default n
+	depends on DIFF
+	help
+	  Enabling this option allows the use of -d to make diff
+	  try hard to find the smallest possible set of changes.
+
+config ED
+	bool "ed"
+	default n
+	help
+	  The original 1970's Unix text editor, from the days of teletypes.
+	  Small, simple, evil.  Part of SUSv3.  If you're not already using
+	  this, you don't need it.
+
+config PATCH
+	bool "patch"
+	default n
+	help
+	  Apply a unified diff formatted patch.
+
+config SED
+	bool "sed"
+	default n
+	help
+	  sed is used to perform text transformations on a file
+	  or input from a pipeline.
+
+config VI
+	bool "vi"
+	default n
+	help
+	  'vi' is a text editor.  More specifically, it is the One True
+	  text editor <grin>.  It does, however, have a rather steep
+	  learning curve.  If you are not already comfortable with 'vi'
+	  you may wish to use something else.
+
+config FEATURE_VI_MAX_LEN
+	int "Maximum line length in vi"
+	range 256 16384
+	default 1024
+	depends on VI
+	help
+	  vi uses on-stack buffers for intermediate line buffers.
+	  You may want to decrease this parameter if your target machine
+	  benefits from smaller stack usage.
+
+config FEATURE_VI_COLON
+	bool "Enable \":\" colon commands (no \"ex\" mode)"
+	default y
+	depends on VI
+	help
+	  Enable a limited set of colon commands for vi.  This does not
+	  provide an "ex" mode.
+
+config FEATURE_VI_YANKMARK
+	bool "Enable yank/put commands and mark cmds"
+	default y
+	depends on VI
+	help
+	  This will enable you to use yank and put, as well as mark in
+	  busybox vi.
+
+config FEATURE_VI_SEARCH
+	bool "Enable search and replace cmds"
+	default y
+	depends on VI
+	help
+	  Select this if you wish to be able to do search and replace in
+	  busybox vi.
+
+config FEATURE_VI_USE_SIGNALS
+	bool "Catch signals"
+	default y
+	depends on VI
+	help
+	  Selecting this option will make busybox vi signal aware.  This will
+	  make busybox vi support SIGWINCH to deal with Window Changes, catch
+	  Ctrl-Z and Ctrl-C and alarms.
+
+config FEATURE_VI_DOT_CMD
+	bool "Remember previous cmd and \".\" cmd"
+	default y
+	depends on VI
+	help
+	  Make busybox vi remember the last command and be able to repeat it.
+
+config FEATURE_VI_READONLY
+	bool "Enable -R option and \"view\" mode"
+	default y
+	depends on VI
+	help
+	  Enable the read-only command line option, which allows the user to
+	  open a file in read-only mode.
+
+config FEATURE_VI_SETOPTS
+	bool "Enable set-able options, ai ic showmatch"
+	default y
+	depends on VI
+	help
+	  Enable the editor to set some (ai, ic, showmatch) options.
+
+config FEATURE_VI_SET
+	bool "Support for :set"
+	default y
+	depends on VI
+	help
+	  Support for ":set".
+
+config FEATURE_VI_WIN_RESIZE
+	bool "Handle window resize"
+	default y
+	depends on VI
+	help
+	  Make busybox vi behave nicely with terminals that get resized.
+
+config FEATURE_VI_OPTIMIZE_CURSOR
+	bool "Optimize cursor movement"
+	default y
+	depends on VI
+	help
+	  This will make the cursor movement faster, but requires more memory
+	  and it makes the applet a tiny bit larger.
+
+config FEATURE_ALLOW_EXEC
+	bool "Allow vi and awk to execute shell commands"
+	default y
+	depends on VI || AWK
+	help
+	  Enables vi and awk features which allows user to execute
+	  shell commands (using system() C call).
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/editors/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/editors/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/editors/Kbuild	(revision 20)
@@ -0,0 +1,14 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_AWK)       += awk.o
+lib-$(CONFIG_CMP)       += cmp.o
+lib-$(CONFIG_DIFF)      += diff.o
+lib-$(CONFIG_ED)        += ed.o
+lib-$(CONFIG_PATCH)     += patch.o
+lib-$(CONFIG_SED)       += sed.o
+lib-$(CONFIG_VI)        += vi.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/fstab
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/fstab	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/fstab	(revision 20)
@@ -0,0 +1,2 @@
+proc		/proc	proc	defaults    0	0
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/init.d/rcS
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/init.d/rcS	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/init.d/rcS	(revision 20)
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+/bin/mount -a
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/inittab
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/inittab	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/inittab	(revision 20)
@@ -0,0 +1,5 @@
+::sysinit:/etc/init.d/rcS
+::respawn:-/bin/sh
+tty2::askfirst:-/bin/sh
+::ctrlaltdel:/bin/umount -a -r
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/profile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/profile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/etc/profile	(revision 20)
@@ -0,0 +1,8 @@
+# /etc/profile: system-wide .profile file for the Bourne shells
+
+echo
+echo -n "Processing /etc/profile... "
+# no-op
+echo "Done"
+echo
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/syslinux.cfg
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/syslinux.cfg	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/bootfloppy/syslinux.cfg	(revision 20)
@@ -0,0 +1,7 @@
+display display.txt
+default linux
+timeout 10
+prompt 1
+label linux
+	kernel linux
+	append initrd=rootfs.gz root=/dev/ram0
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/busybox.spec
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/busybox.spec	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/busybox.spec	(revision 20)
@@ -0,0 +1,44 @@
+%define name	busybox
+%define epoch   0
+%define version	0.61.pre
+%define release	%(date -I | sed -e 's/-/_/g')
+%define serial  1
+
+Name:	 %{name}
+#Epoch:   %{epoch}
+Version: %{version}
+Release: %{release}
+Serial:	 %{serial}
+Copyright: GPL
+Group: System/Utilities
+Summary: BusyBox is a tiny suite of Unix utilities in a multi-call binary.
+URL:	 http://busybox.net/
+Source:	 ftp://busybox.net/busybox/%{name}-%{version}.tar.gz
+Buildroot: /var/tmp/%{name}-%{version}
+Packager : Erik Andersen <andersen@codepoet.org>
+
+%Description
+BusyBox combines tiny versions of many common UNIX utilities into a single
+small executable. It provides minimalist replacements for most of the utilities
+you usually find in fileutils, shellutils, findutils, textutils, grep, gzip,
+tar, etc.  BusyBox provides a fairly complete POSIX environment for any small
+or emdedded system.  The utilities in BusyBox generally have fewer options then
+their full featured GNU cousins; however, the options that are provided behave
+very much like their GNU counterparts.
+
+%Prep
+%setup -q -n %{name}-%{version}
+
+%Build
+make
+
+%Install
+rm -rf $RPM_BUILD_ROOT
+make CONFIG_PREFIX=$RPM_BUILD_ROOT install
+
+%Clean
+rm -rf $RPM_BUILD_ROOT
+
+%Files
+%defattr(-,root,root)
+/
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/devfsd.conf
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/devfsd.conf	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/devfsd.conf	(revision 20)
@@ -0,0 +1,133 @@
+# Sample /etc/devfsd.conf configuration file.
+# Richard Gooch  <rgooch@atnf.csiro.au>		17-FEB-2002
+#
+# adapted for busybox devfsd implementation by Tito <farmatito@tiscali.it>
+#
+# Enable full compatibility mode for old device names. You may comment these
+# out if you don't use the old device names. Make sure you know what you're
+# doing!
+REGISTER	.*		MKOLDCOMPAT
+UNREGISTER	.*		RMOLDCOMPAT
+
+# You may comment out the above and uncomment the following if you've
+# configured your system to use the original "new" devfs names or the really
+# new names
+#REGISTER	^vc/		MKOLDCOMPAT
+#UNREGISTER	^vc/		RMOLDCOMPAT
+#REGISTER	^pty/		MKOLDCOMPAT
+#UNREGISTER	^pty/		RMOLDCOMPAT
+#REGISTER	^misc/		MKOLDCOMPAT
+#UNREGISTER	^misc/		RMOLDCOMPAT
+
+# You may comment these out if you don't use the original "new" names
+REGISTER	.*		MKNEWCOMPAT
+UNREGISTER	.*		RMNEWCOMPAT
+
+# Enable module autoloading. You may comment this out if you don't use
+# autoloading
+# Supported by busybox when CONFIG_DEVFSD_MODLOAD is set.
+# This actually doesn't work with busybox  modutils but needs
+# the real modutils' modprobe
+LOOKUP		.*		MODLOAD
+
+# Uncomment the following if you want to set the group to "tty" for the
+# pseudo-tty devices. This is necessary so that mesg(1) can later be used to
+# enable/disable talk requests and wall(1) messages.
+REGISTER	^pty/s.*	PERMISSIONS	-1.tty	0600
+#REGISTER	^pts/.*		PERMISSIONS	-1.tty	0600
+
+# Restoring /dev/log on startup would trigger the minilogd/initlog deadlock
+# (minilogd falsely assuming syslogd has been started).
+REGISTER	^log$		IGNORE
+CREATE		^log$		IGNORE
+CHANGE		^log$		IGNORE
+DELETE		^log$		IGNORE
+
+#
+# Uncomment this if you want permissions to be saved and restored
+# Do not do this for pseudo-terminal devices
+REGISTER	^pt[sy]		IGNORE
+CREATE		^pt[sy]		IGNORE
+CHANGE		^pt[sy]		IGNORE
+DELETE		^pt[sy]		IGNORE
+REGISTER	.*		COPY	/lib/dev-state/$devname $devpath
+CREATE		.*		COPY	$devpath /lib/dev-state/$devname
+CHANGE		.*		COPY	$devpath /lib/dev-state/$devname
+#DELETE		.*		CFUNCTION GLOBAL unlink /lib/dev-state/$devname
+# Busybox
+DELETE		.*		EXECUTE /bin/rm -f		/lib/dev-state/$devname
+
+RESTORE		/lib/dev-state
+
+#
+# Uncomment this if you want the old /dev/cdrom symlink
+#REGISTER	^cdroms/cdrom0$	CFUNCTION GLOBAL mksymlink $devname cdrom
+#UNREGISTER	^cdroms/cdrom0$	CFUNCTION GLOBAL unlink cdrom
+# busybox
+REGISTER	^cdroms/cdrom0$	EXECUTE /bin/ln -sf $devname cdrom
+UNREGISTER	^cdroms/cdrom0$	EXECUTE /bin/rm -f cdrom
+
+#REGISTER	^v4l/video0$	CFUNCTION GLOBAL mksymlink v4l/video0 video
+#UNREGISTER	^v4l/video0$	CFUNCTION GLOBAL unlink video
+#REGISTER	^radio0$	CFUNCTION GLOBAL mksymlink radio0 radio
+#UNREGISTER	^radio0$	CFUNCTION GLOBAL unlink radio
+# Busybox
+REGISTER	^v4l/video0$	EXECUTE /bin/ln -sf v4l/video0 video
+UNREGISTER	^v4l/video0$	EXECUTE /bin/rm -f video
+REGISTER	^radio0$		EXECUTE /bin/ln -sf  radio0 radio
+UNREGISTER	^radio0$		EXECUTE /bin/rm -f radio
+
+# ALSA stuff
+#LOOKUP 		snd 		MODLOAD ACTION snd
+
+# Uncomment this to let PAM manage devfs
+# Not supported by busybox
+#REGISTER	.*		CFUNCTION /lib/security/pam_console_apply_devfsd.so pam_console_apply_single $devpath
+
+# Uncomment this to manage USB mouse
+# Not supported by busybox
+#REGISTER	^input/mouse0$	CFUNCTION GLOBAL mksymlink $devname usbmouse
+#UNREGISTER	^input/mouse0$	CFUNCTION GLOBAL unlink usbmouse
+# Busybox
+#REGISTER	^input/mouse0$	EXECUTE /bin/ln -sf $devname usbmouse
+#UNREGISTER	^input/mouse0$	EXECUTE /bin/rm -f usbmouse
+# Not supported by busybox
+#REGISTER	^input/mice$	CFUNCTION GLOBAL mksymlink $devname usbmouse
+#UNREGISTER	^input/mice$	CFUNCTION GLOBAL unlink usbmouse
+# Busybox
+REGISTER	^input/mice$	EXECUTE /bin/ln -sf $devname usbmouse
+UNREGISTER	^input/mice$	EXECUTE /bin/rm -f usbmouse
+
+# If you have removable media and want to force media revalidation when looking
+# up new or old compatibility names, uncomment the following lines
+# SCSI NEWCOMPAT  /dev/sd/* names
+LOOKUP		^(sd/c[0-9]+b[0-9]+t[0-9]+u[0-9]+)p[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
+# SCSI OLDCOMPAT  /dev/sd?? names
+LOOKUP		^(sd[a-z]+)[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
+# IDE NEWCOMPAT   /dev/ide/hd/* names
+LOOKUP		^(ide/hd/c[0-9]+b[0-9]+t[0-9]+u[0-9]+)p[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
+# IDE OLDCOMPAT   /dev/hd?? names
+LOOKUP		^(hd[a-z])[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
+# IDE-SCSI NEWCOMPAT  /dev/sd/* names
+#LOOKUP		^(sd/c[0-9]+b[0-9]+t[0-9]+u[0-9]+)p[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
+#SCSI OLDCOMPAT  /dev/scd? names
+LOOKUP		^(scd+)[0-9]+$	EXECUTE /bin/dd if=$mntpnt/\1 of=/dev/null count=1
+
+
+REGISTER ^dvb/card[0-9]+/[^/]+$ PERMISSIONS root.video 0660
+# Not supported by busybox
+#REGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	CFUNCTION GLOBAL mksymlink /dev/$devname ost/\2\1
+#UNREGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	CFUNCTION GLOBAL unlink ost/\2\1
+# Busybox
+REGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	EXECUTE /bin/ln -sf /dev/$devname ost/\2\1
+UNREGISTER	^dvb/card([0-9]+)/([^/0-9]*)[0-9]+$	EXECUTE /bin/rm -f ost/\2\1
+
+# Include package-generated files from /etc/devfs/conf.d
+# Supported by busybox
+# INCLUDE   /etc/devfs/conf.d/
+INCLUDE   /etc/devfs/busybox/
+# Busybox: just for testing
+#INCLUDE			/etc/devfs/nothing/
+#INCLUDE			/etc/devfs/nothing/nothing
+#OPTIONAL_INCLUDE	/etc/devfs/nothing/
+#OPTIONAL_INCLUDE	/etc/devfs/nothing/nothing
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/dnsd.conf
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/dnsd.conf	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/dnsd.conf	(revision 20)
@@ -0,0 +1,1 @@
+thebox 192.168.1.5
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/inetd.conf
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/inetd.conf	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/inetd.conf	(revision 20)
@@ -0,0 +1,73 @@
+# /etc/inetd.conf:  see inetd(8) for further informations.
+#
+# Internet server configuration database
+#
+#
+# If you want to disable an entry so it isn't touched during
+# package updates just comment it out with a single '#' character.
+#
+# If you make changes to this file, either reboot your machine or
+# send the inetd process a HUP signal:
+# Do a "ps x" as root and look up the pid of inetd. Then do a
+#     kill -HUP <pid of inetd>
+# inetd will re-read this file whenever it gets that signal.
+# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
+#
+#:INTERNAL: Internal services
+# It is generally considered safer to keep these off.
+echo     stream  tcp	nowait	root	internal
+echo     dgram   udp	wait	root	internal
+#discard  stream  tcp	nowait	root	internal
+#discard  dgram   udp	wait	root	internal
+daytime  stream  tcp	nowait	root	internal
+daytime  dgram   udp	wait	root	internal
+#chargen  stream  tcp	nowait	root	internal
+#chargen  dgram   udp	wait	root	internal
+time     stream  tcp	nowait	root	internal
+time     dgram   udp	wait	root	internal
+
+# These are standard services.
+#
+#ftp	stream	tcp	nowait	root	/usr/sbin/tcpd	in.ftpd
+#telnet	stream	tcp	nowait	root	/sbin/telnetd	/sbin/telnetd
+#nntp	stream	tcp	nowait	root	tcpd	in.nntpd
+#smtp  stream  tcp     nowait  root    tcpd    sendmail -v
+#
+# Shell, login, exec and talk are BSD protocols.
+#
+# If you run an ntalk daemon (such as netkit-ntalk) on the old talk
+# port, that is, "talk" as opposed to "ntalk", it won't work and may
+# cause certain broken talk clients to malfunction.
+#
+# The talkd from netkit-ntalk 0.12 and higher, however, can speak the
+# old talk protocol and can be used safely.
+#
+#shell	stream	tcp	nowait	root	/usr/sbin/tcpd	in.rshd -L
+#login	stream	tcp	nowait	root	/usr/sbin/tcpd	in.rlogind -L
+#exec	stream	tcp	nowait	root	/usr/sbin/tcpd	in.rexecd
+#talk	dgram	udp	wait	root	/usr/sbin/tcpd	in.talkd
+#ntalk	dgram	udp	wait	root	/usr/sbin/tcpd	in.talkd
+#
+# Pop et al
+# Leave these off unless you're using them.
+#pop2	stream	tcp	nowait	root	/usr/sbin/tcpd	in.pop2d
+#pop3	stream	tcp	nowait	root	/usr/sbin/tcpd	in.pop3d
+#
+# The Internet UUCP service.
+# uucp	stream	tcp	nowait	uucp	/usr/sbin/tcpd	/usr/lib/uucp/uucico	-l
+#
+# Tftp service is provided primarily for booting.  Most sites
+# run this only on machines acting as "boot servers." If you don't
+# need it, don't use it.
+#
+#tftp	dgram	udp	wait	nobody	/usr/sbin/tcpd	in.tftpd
+#bootps	dgram	udp	wait	root	/usr/sbin/in.bootpd	in.bootpd
+#
+# Finger, systat and netstat give out user information which may be
+# valuable to potential "system crackers."  Many sites choose to disable
+# some or all of these services to improve security.
+#
+#finger	stream	tcp	nowait	nobody	/usr/sbin/tcpd	in.fingerd -w
+#systat	stream	tcp	nowait	nobody	/usr/sbin/tcpd	/bin/ps	-auwwx
+#netstat	stream	tcp	nowait	root	/bin/netstat	/bin/netstat	-a
+#ident	stream	tcp	nowait	root	/usr/sbin/in.identd	in.identd
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/inittab
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/inittab	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/inittab	(revision 20)
@@ -0,0 +1,90 @@
+# /etc/inittab init(8) configuration for BusyBox
+#
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
+#
+#
+# Note, BusyBox init doesn't support runlevels.  The runlevels field is
+# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
+#
+#
+# Format for each entry: <id>:<runlevels>:<action>:<process>
+#
+# <id>: WARNING: This field has a non-traditional meaning for BusyBox init!
+#
+#	The id field is used by BusyBox init to specify the controlling tty for
+#	the specified process to run on.  The contents of this field are
+#	appended to "/dev/" and used as-is.  There is no need for this field to
+#	be unique, although if it isn't you may have strange results.  If this
+#	field is left blank, it is completely ignored.  Also note that if
+#	BusyBox detects that a serial console is in use, then all entries
+#	containing non-empty id fields will be ignored.  BusyBox init does
+#	nothing with utmp.  We don't need no stinkin' utmp.
+#
+# <runlevels>: The runlevels field is completely ignored.
+#
+# <action>: Valid actions include: sysinit, respawn, askfirst, wait, once,
+#                                  restart, ctrlaltdel, and shutdown.
+#
+#       Note: askfirst acts just like respawn, but before running the specified
+#       process it displays the line "Please press Enter to activate this
+#       console." and then waits for the user to press enter before starting
+#       the specified process.
+#
+#       Note: unrecognised actions (like initdefault) will cause init to emit
+#       an error message, and then go along with its business.
+#
+# <process>: Specifies the process to be executed and it's command line.
+#
+# Note: BusyBox init works just fine without an inittab. If no inittab is
+# found, it has the following default behavior:
+#         ::sysinit:/etc/init.d/rcS
+#         ::askfirst:/bin/sh
+#         ::ctrlaltdel:/sbin/reboot
+#         ::shutdown:/sbin/swapoff -a
+#         ::shutdown:/bin/umount -a -r
+#         ::restart:/sbin/init
+#
+# if it detects that /dev/console is _not_ a serial console, it will
+# also run:
+#         tty2::askfirst:/bin/sh
+#         tty3::askfirst:/bin/sh
+#         tty4::askfirst:/bin/sh
+#
+# Boot-time system configuration/initialization script.
+# This is run first except when booting in single-user mode.
+#
+::sysinit:/etc/init.d/rcS
+
+# /bin/sh invocations on selected ttys
+#
+# Note below that we prefix the shell commands with a "-" to indicate to the
+# shell that it is supposed to be a login shell.  Normally this is handled by
+# login, but since we are bypassing login in this case, BusyBox lets you do
+# this yourself...
+#
+# Start an "askfirst" shell on the console (whatever that may be)
+::askfirst:-/bin/sh
+# Start an "askfirst" shell on /dev/tty2-4
+tty2::askfirst:-/bin/sh
+tty3::askfirst:-/bin/sh
+tty4::askfirst:-/bin/sh
+
+# /sbin/getty invocations for selected ttys
+tty4::respawn:/sbin/getty 38400 tty5
+tty5::respawn:/sbin/getty 38400 tty6
+
+# Example of how to put a getty on a serial line (for a terminal)
+#::respawn:/sbin/getty -L ttyS0 9600 vt100
+#::respawn:/sbin/getty -L ttyS1 9600 vt100
+#
+# Example how to put a getty on a modem line.
+#::respawn:/sbin/getty 57600 ttyS2
+
+# Stuff to do when restarting the init process
+::restart:/sbin/init
+
+# Stuff to do before rebooting
+::ctrlaltdel:/sbin/reboot
+::shutdown:/bin/umount -a -r
+::shutdown:/sbin/swapoff -a
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.bound
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.bound	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.bound	(revision 20)
@@ -0,0 +1,31 @@
+#!/bin/sh
+# Sample udhcpc renew script
+
+RESOLV_CONF="/etc/udhcpc/resolv.conf"
+
+[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+[ -n "$subnet" ] && NETMASK="netmask $subnet"
+
+/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+
+if [ -n "$router" ]
+then
+	echo "deleting routers"
+	while /sbin/route del default gw 0.0.0.0 dev $interface
+	do :
+	done
+
+	metric=0
+	for i in $router
+	do
+		/sbin/route add default gw $i dev $interface metric $((metric++))
+	done
+fi
+
+echo -n > $RESOLV_CONF
+[ -n "$domain" ] && echo domain $domain >> $RESOLV_CONF
+for i in $dns
+do
+	echo adding dns $i
+	echo nameserver $i >> $RESOLV_CONF
+done
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.deconfig
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.deconfig	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.deconfig	(revision 20)
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Sample udhcpc deconfig script
+
+/sbin/ifconfig $interface 0.0.0.0
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.nak
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.nak	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.nak	(revision 20)
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Sample udhcpc nak script
+
+echo Received a NAK: $message
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.renew
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.renew	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.renew	(revision 20)
@@ -0,0 +1,31 @@
+#!/bin/sh
+# Sample udhcpc bound script
+
+RESOLV_CONF="/etc/udhcpc/resolv.conf"
+
+[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+[ -n "$subnet" ] && NETMASK="netmask $subnet"
+
+/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+
+if [ -n "$router" ]
+then
+	echo "deleting routers"
+	while /sbin/route del default gw 0.0.0.0 dev $interface
+	do :
+	done
+
+	metric=0
+	for i in $router
+	do
+		/sbin/route add default gw $i dev $interface metric $((metric++))
+	done
+fi
+
+echo -n > $RESOLV_CONF
+[ -n "$domain" ] && echo domain $domain >> $RESOLV_CONF
+for i in $dns
+do
+	echo adding dns $i
+	echo nameserver $i >> $RESOLV_CONF
+done
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.script
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.script	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/sample.script	(revision 20)
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Currently, we only dispatch according to command.  However, a more
+# elaborate system might dispatch by command and interface or do some
+# common initialization first, especially if more dhcp event notifications
+# are added.
+
+exec /usr/share/udhcpc/sample.$1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/simple.script
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/simple.script	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/simple.script	(revision 20)
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# udhcpc script edited by Tim Riker <Tim@Rikers.org>
+
+[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+
+RESOLV_CONF="/etc/resolv.conf"
+[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+[ -n "$subnet" ] && NETMASK="netmask $subnet"
+
+case "$1" in
+	deconfig)
+		/sbin/ifconfig $interface 0.0.0.0
+		;;
+
+	renew|bound)
+		/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+
+		if [ -n "$router" ] ; then
+			echo "deleting routers"
+			while route del default gw 0.0.0.0 dev $interface ; do
+				:
+			done
+
+			metric=0
+			for i in $router ; do
+				route add default gw $i dev $interface metric $((metric++))
+			done
+		fi
+
+		echo -n > $RESOLV_CONF
+		[ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
+		for i in $dns ; do
+			echo adding dns $i
+			echo nameserver $i >> $RESOLV_CONF
+		done
+		;;
+esac
+
+exit 0
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/udhcpd.conf
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/udhcpd.conf	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/udhcp/udhcpd.conf	(revision 20)
@@ -0,0 +1,123 @@
+# Sample udhcpd configuration file (/etc/udhcpd.conf)
+
+# The start and end of the IP lease block
+
+start 		192.168.0.20	#default: 192.168.0.20
+end		192.168.0.254	#default: 192.168.0.254
+
+
+# The interface that udhcpd will use
+
+interface	eth0		#default: eth0
+
+
+# The maximim number of leases (includes addressesd reserved
+# by OFFER's, DECLINE's, and ARP conficts
+
+#max_leases	254		#default: 254
+
+
+# If remaining is true (default), udhcpd will store the time
+# remaining for each lease in the udhcpd leases file. This is
+# for embedded systems that cannot keep time between reboots.
+# If you set remaining to no, the absolute time that the lease
+# expires at will be stored in the dhcpd.leases file.
+
+#remaining	yes		#default: yes
+
+
+# The time period at which udhcpd will write out a dhcpd.leases
+# file. If this is 0, udhcpd will never automatically write a
+# lease file. (specified in seconds)
+
+#auto_time	7200		#default: 7200 (2 hours)
+
+
+# The amount of time that an IP will be reserved (leased) for if a
+# DHCP decline message is received (seconds).
+
+#decline_time	3600		#default: 3600 (1 hour)
+
+
+# The amount of time that an IP will be reserved (leased) for if an
+# ARP conflct occurs. (seconds
+
+#conflict_time	3600		#default: 3600 (1 hour)
+
+
+# How long an offered address is reserved (leased) in seconds
+
+#offer_time	60		#default: 60 (1 minute)
+
+# If a lease to be given is below this value, the full lease time is
+# instead used (seconds).
+
+#min_lease	60		#defult: 60
+
+
+# The location of the leases file
+
+#lease_file	/var/lib/misc/udhcpd.leases	#defualt: /var/lib/misc/udhcpd.leases
+
+# The location of the pid file
+#pidfile	/var/run/udhcpd.pid	#default: /var/run/udhcpd.pid
+
+# Everytime udhcpd writes a leases file, the below script will be called.
+# Useful for writing the lease file to flash every few hours.
+
+#notify_file				#default: (no script)
+
+#notify_file	dumpleases 	# <--- useful for debugging
+
+# The following are bootp specific options, setable by udhcpd.
+
+#siaddr		192.168.0.22		#default: 0.0.0.0
+
+#sname		zorak			#default: (none)
+
+#boot_file	/var/nfs_root		#default: (none)
+
+# The remainer of options are DHCP options and can be specifed with the
+# keyword 'opt' or 'option'. If an option can take multiple items, such
+# as the dns option, they can be listed on the same line, or multiple
+# lines. The only option with a default is 'lease'.
+
+#Examles
+opt	dns	192.168.10.2 192.168.10.10
+option	subnet	255.255.255.0
+opt	router	192.168.10.2
+opt	wins	192.168.10.10
+option	dns	129.219.13.81	# appened to above DNS servers for a total of 3
+option	domain	local
+option	lease	864000		# 10 days of seconds
+
+
+# Currently supported options, for more info, see options.c
+#opt subnet
+#opt timezone
+#opt router
+#opt timesvr
+#opt namesvr
+#opt dns
+#opt logsvr
+#opt cookiesvr
+#opt lprsvr
+#opt bootsize
+#opt domain
+#opt swapsvr
+#opt rootpath
+#opt ipttl
+#opt mtu
+#opt broadcast
+#opt wins
+#opt lease
+#opt ntpsrv
+#opt tftp
+#opt bootfile
+
+
+# Static leases map
+#static_lease 00:60:08:11:CE:4E 192.168.0.54
+#static_lease 00:60:08:11:CE:3E 192.168.0.44
+
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/undeb
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/undeb	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/undeb	(revision 20)
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# This should work with the GNU version of tar and gzip!
+# This should work with the bash or ash shell!
+# Requires the programs (ar, tar, gzip, and the pager more or less).
+#
+usage() {
+echo "Usage: undeb -c package.deb            <Print control file info>"
+echo "       undeb -l package.deb            <List contents of deb package>"
+echo "       undeb -x package.deb /foo/boo   <Extract deb package to this directory,"
+echo "                                        put . for current directory>"
+exit
+}
+
+deb=$2
+
+exist() {
+if [ "$deb" = "" ]; then
+usage
+elif [ ! -s "$deb" ]; then
+echo "Can't find $deb!"
+exit
+fi
+}
+
+if [ "$1" = "" ]; then
+usage
+elif [ "$1" = "-l" ]; then
+exist
+type more >/dev/null 2>&1 && pager=more
+type less >/dev/null 2>&1 && pager=less
+[ "$pager" = "" ] && echo "No pager found!" && exit
+(ar -p $deb control.tar.gz | tar -xzO *control ; echo -e "\nPress enter to scroll, q to Quit!\n" ; ar -p $deb data.tar.gz | tar -tzv) | $pager
+exit
+elif [ "$1" = "-c" ]; then
+exist
+ar -p $deb control.tar.gz | tar -xzO *control
+exit
+elif [ "$1" = "-x" ]; then
+exist
+if [ "$3" = "" ]; then
+usage
+elif [ ! -d "$3" ]; then
+echo "No such directory $3!"
+exit
+fi
+ar -p $deb data.tar.gz | tar -xzvpf - -C $3 || exit
+echo
+echo "Extracted $deb to $3!"
+exit
+else
+usage
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/unrpm
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/unrpm	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/unrpm	(revision 20)
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# This should work with the GNU version of cpio and gzip!
+# This should work with the bash or ash shell!
+# Requires the programs (cpio, gzip, and the pager more or less).
+#
+usage() {
+echo "Usage: unrpm -l package.rpm            <List contents of rpm package>"
+echo "       unrpm -x package.rpm /foo/boo   <Extract rpm package to this directory,"
+echo "                                        put . for current directory>"
+exit
+}
+
+rpm=$2
+
+exist() {
+if [ "$rpm" = "" ]; then
+usage
+elif [ ! -s "$rpm" ]; then
+echo "Can't find $rpm!"
+exit
+fi
+}
+
+if [ "$1" = "" ]; then
+usage
+elif [ "$1" = "-l" ]; then
+exist
+type more >/dev/null 2>&1 && pager=more
+type less >/dev/null 2>&1 && pager=less
+[ "$pager" = "" ] && echo "No pager found!" && exit
+(echo -e "\nPress enter to scroll, q to Quit!\n" ; rpm2cpio $rpm | cpio -tv --quiet) | $pager
+exit
+elif [ "$1" = "-x" ]; then
+exist
+if [ "$3" = "" ]; then
+usage
+elif [ ! -d "$3" ]; then
+echo "No such directory $3!"
+exit
+fi
+rpm2cpio $rpm | (umask 0 ; cd $3 ; cpio -idmuv) || exit
+echo
+echo "Extracted $rpm to $3!"
+exit
+else
+usage
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/examples/zcip.script
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/examples/zcip.script	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/examples/zcip.script	(revision 20)
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# only for use as a "zcip" callback script
+if [ "x$interface" = x ]
+then
+	exit 1
+fi
+
+# zcip should start on boot/resume and various media changes
+case "$1" in
+init)
+	# for now, zcip requires the link to be already up,
+	# and it drops links when they go down.  that isn't
+	# the most robust model...
+	exit 0
+	;;
+config)
+	if [ "x$ip" = x ]
+	then
+		exit 1
+	fi
+	# remember $ip for $interface, to use on restart
+	if [ "x$IP" != x -a -w "$IP.$interface" ]
+	then
+		echo $ip > "$IP.$interface"
+	fi
+	exec ip address add dev $interface \
+		scope link local "$ip/16" broadcast +
+	;;
+deconfig)
+	if [ x$ip = x ]
+	then
+		exit 1
+	fi
+	exec ip address del dev $interface local $ip
+	;;
+esac
+exit 1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/findutils/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/findutils/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/findutils/Config.in	(revision 20)
@@ -0,0 +1,247 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Finding Utilities"
+
+config FIND
+	bool "find"
+	default n
+	help
+	  find is used to search your system to find specified files.
+
+config FEATURE_FIND_PRINT0
+	bool "Enable -print0 option"
+	default y
+	depends on FIND
+	help
+	  Causes output names to be separated by a null character
+	  rather than a newline.  This allows names that contain
+	  newlines and other whitespace to be more easily
+	  interpreted by other programs.
+
+config FEATURE_FIND_MTIME
+	bool "Enable modified time matching (-mtime) option"
+	default y
+	depends on FIND
+	help
+	  Allow searching based on the modification time of
+	  files, in days.
+
+config FEATURE_FIND_MMIN
+	bool "Enable modified time matching (-mmin) option"
+	default y
+	depends on FIND
+	help
+	  Allow searching based on the modification time of
+	  files, in minutes.
+
+config FEATURE_FIND_PERM
+	bool "Enable permissions matching (-perm) option"
+	default y
+	depends on FIND
+	help
+	  Enable searching based on file permissions.
+
+config FEATURE_FIND_TYPE
+	bool "Enable filetype matching (-type) option"
+	default y
+	depends on FIND
+	help
+	  Enable searching based on file type (file,
+	  directory, socket, device, etc.).
+
+config FEATURE_FIND_XDEV
+	bool "Enable stay in filesystem (-xdev) option"
+	default y
+	depends on FIND
+	help
+	  This option allows find to restrict searches to a single filesystem.
+
+config FEATURE_FIND_MAXDEPTH
+	bool "Enable -maxdepth N option"
+	default y
+	depends on FIND
+	help
+	  This option enables -maxdepth N option.
+
+config FEATURE_FIND_NEWER
+	bool "Enable -newer option for comparing file mtimes"
+	default y
+	depends on FIND
+	help
+	  Support the 'find -newer' option for finding any files which have
+	  a modified time that is more recent than the specified FILE.
+
+config FEATURE_FIND_INUM
+	bool "Enable inode number matching (-inum) option"
+	default y
+	depends on FIND
+	help
+	  Support the 'find -inum' option for searching by inode number.
+
+config FEATURE_FIND_EXEC
+	bool "Enable (-exec) option allowing execution of commands"
+	default y
+	depends on FIND
+	help
+	  Support the 'find -exec' option for executing commands based upon
+	  the files matched.
+
+config FEATURE_FIND_USER
+	bool "Enable username/uid matching (-user) option"
+	default y
+	depends on FIND
+	help
+	  Support the 'find -user' option for searching by username or uid.
+
+config FEATURE_FIND_GROUP
+	bool "Enable group/gid matching (-group) option"
+	default y
+	depends on FIND
+	help
+	  Support the 'find -group' option for searching by group name or gid.
+
+config FEATURE_FIND_NOT
+	bool "Enable the 'not' (!) operator"
+	default y
+	depends on FIND
+	help
+	  Support the '!' operator to invert the test results.
+	  If 'Enable full-blown desktop' is enabled, then will also support
+	  the non-POSIX notation '-not'.
+
+config FEATURE_FIND_DEPTH
+	bool "Enable the -depth option"
+	default y
+	depends on FIND
+	help
+	  Process each directory's contents before the directory itself.
+
+config FEATURE_FIND_PAREN
+	bool "Enable parens in options"
+	default y
+	depends on FIND
+	help
+	  Enable usage of parens '(' to specify logical order of arguments.
+
+config FEATURE_FIND_SIZE
+	bool "Enable (-size) option allowing matching for file size"
+	default y
+	depends on FIND
+	help
+	  Support the 'find -size' option for searching by file size.
+
+config FEATURE_FIND_PRUNE
+	bool "Enable (-prune) option allowing to exclude subdirectories"
+	default y
+	depends on FIND
+	help
+	  If the file is a directory, dont descend into it. Useful for
+	  exclusion .svn and CVS directories.
+
+config FEATURE_FIND_DELETE
+	bool "Enable -delete option allowing to delete files"
+	default n
+	depends on FIND && FEATURE_FIND_DEPTH
+	help
+	  Support the 'find -delete' option for deleting files and direcotries.
+	  WARNING: This option can do much harm if used wrong. Busybox will not
+	  try to protect the user from doing stupid things. Use with care.
+
+config FEATURE_FIND_PATH
+	bool "Enable -path option allowing to match pathname patterns"
+	default y
+	depends on FIND
+	help
+	  The -path option matches whole pathname instead of just filename.
+
+config FEATURE_FIND_REGEX
+	bool "Enable -regex: match pathname to regex"
+	default y
+	depends on FIND
+	help
+	  The -regex option matches whole pathname against regular expression.
+
+config FEATURE_FIND_CONTEXT
+	bool "Enable (-context) option for matching security context"
+	default n
+	depends on FIND && SELINUX
+	help
+	  Support the 'find -context' option for matching security context.
+
+config GREP
+	bool "grep"
+	default n
+	help
+	  grep is used to search files for a specified pattern.
+
+config FEATURE_GREP_EGREP_ALIAS
+	bool "Support extended regular expressions (egrep & grep -E)"
+	default y
+	depends on GREP
+	help
+	  Enabled support for extended regular expressions.  Extended
+	  regular expressions allow for alternation (foo|bar), grouping,
+	  and various repetition operators.
+
+config FEATURE_GREP_FGREP_ALIAS
+	bool "Alias fgrep to grep -F"
+	default y
+	depends on GREP
+	help
+	  fgrep sees the search pattern as a normal string rather than
+	  regular expressions.
+	  grep -F is always builtin, this just creates the fgrep alias.
+
+config FEATURE_GREP_CONTEXT
+	bool "Enable before and after context flags (-A, -B and -C)"
+	default y
+	depends on GREP
+	help
+	  Print the specified number of leading (-B) and/or trailing (-A)
+	  context surrounding our matching lines.
+	  Print the specified number of context lines (-C).
+
+config XARGS
+	bool "xargs"
+	default n
+	help
+	  xargs is used to execute a specified command on
+	  every item from standard input.
+
+config FEATURE_XARGS_SUPPORT_CONFIRMATION
+	bool "Enable prompt and confirmation option -p"
+	default n
+	depends on XARGS
+	help
+	  Support prompt the user about whether to run each command
+	  line and read a line from the terminal.
+
+config FEATURE_XARGS_SUPPORT_QUOTES
+	bool "Enable support single and double quotes and backslash"
+	default n
+	depends on XARGS
+	help
+	  Default xargs unsupport single and double quotes
+	  and backslash for can use aruments with spaces.
+
+config FEATURE_XARGS_SUPPORT_TERMOPT
+	bool "Enable support options -x"
+	default n
+	depends on XARGS
+	help
+	  Enable support exit if the size (see the -s or -n option)
+	  is exceeded.
+
+config FEATURE_XARGS_SUPPORT_ZERO_TERM
+	bool "Enable null terminated option -0"
+	default n
+	depends on XARGS
+	help
+	  Enable input filenames are terminated by a null character
+	  instead of by whitespace, and the quotes and backslash
+	  are not special.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/findutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/findutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/findutils/Kbuild	(revision 20)
@@ -0,0 +1,10 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_FIND)	+= find.o
+lib-$(CONFIG_GREP)	+= grep.o
+lib-$(CONFIG_XARGS)	+= xargs.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/init/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/init/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/init/Config.in	(revision 20)
@@ -0,0 +1,89 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Init Utilities"
+
+config INIT
+	bool "init"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  init is the first program run when the system boots.
+
+config DEBUG_INIT
+	bool "debugging aid"
+	default n
+	depends on INIT
+	help
+	  Turn this on to disable all the dangerous
+	  rebooting stuff when debugging.
+
+config FEATURE_USE_INITTAB
+	bool "Support reading an inittab file"
+	default y
+	depends on INIT
+	help
+	  Allow init to read an inittab file when the system boot.
+
+config FEATURE_INIT_SCTTY
+	bool "Support running commands with a controlling-tty"
+	default n
+	depends on INIT
+	help
+	  If this option is enabled a command starting with hyphen (-)
+	  is run in its own session (setsid(2)) and possibly with a
+	  controlling tty (TIOCSCTTY).  This is not the traditional init
+	  behavour, but is often what you want in an embedded system where
+	  the console is only accessed during development or for maintenance.
+
+config FEATURE_INIT_SYSLOG
+	bool "Enable init to write to syslog"
+	default n
+	depends on INIT
+
+config FEATURE_EXTRA_QUIET
+	bool "Be _extra_ quiet on boot"
+	default y
+	depends on INIT
+	help
+	  Prevent init from logging some messages to the console during boot.
+
+config FEATURE_INIT_COREDUMPS
+	bool "Support dumping core for child processes (debugging only)"
+	default n
+	depends on INIT
+	help
+	  If this option is enabled and the file /.init_enable_core
+	  exists, then init will call setrlimit() to allow unlimited
+	  core file sizes.  If this option is disabled, processes
+	  will not generate any core files.
+
+
+
+config FEATURE_INITRD
+	bool "Support running init from within an initrd (not initramfs)"
+	default y
+	depends on INIT
+	help
+	  Legacy support for running init under the old-style initrd.  Allows
+	  the name linuxrc to act as init, and it doesn't assume init is PID 1.
+
+	  This does not apply to initramfs, which runs /init as PID 1 and
+	  requires no special support.
+
+config HALT
+	bool "poweroff, halt, and reboot"
+	default y
+	help
+	  Stop all processes and either halt, reboot, or power off the system.
+
+config MESG
+	bool "mesg"
+	default y
+	help
+	  Mesg controls access to your terminal by others.  It is typically
+	  used to allow or disallow other users to write to your terminal
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/init/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/init/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/init/Kbuild	(revision 20)
@@ -0,0 +1,10 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_HALT)	+= halt.o
+lib-$(CONFIG_INIT)	+= init.o
+lib-$(CONFIG_MESG)	+= mesg.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/ipsvd/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/ipsvd/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/ipsvd/Config.in	(revision 20)
@@ -0,0 +1,20 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "ipsvd utilities"
+
+config TCPSVD
+	bool "tcpsvd"
+	default n
+	help
+	  tcpsvd listens on a tcp port and runs a program for each new connection
+
+config UDPSVD
+	bool "udpsvd"
+	default n
+	help
+	  udpsvd listens on a udp port and runs a program for each new connection
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/ipsvd/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/ipsvd/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/ipsvd/Kbuild	(revision 20)
@@ -0,0 +1,9 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_TCPSVD) += tcpudp.o ipsvd_perhost.o
+lib-$(CONFIG_UDPSVD) += tcpudp.o ipsvd_perhost.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/Config.in	(revision 20)
@@ -0,0 +1,130 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Busybox Library Tuning"
+
+config PASSWORD_MINLEN
+	int "Minimum password length"
+	default 6
+	range 5 32
+	help
+	  Minimum allowable password length.
+
+config MD5_SIZE_VS_SPEED
+	int " MD5: Trade Bytes for Speed"
+	default 2
+	range 0 3
+	help
+	  Trade binary size versus speed for the md5sum algorithm.
+	  Approximate values running uClibc and hashing
+	  linux-2.4.4.tar.bz2 were:
+	                    user times (sec)  text size (386)
+	  0 (fastest)         1.1                6144
+	  1                   1.4                5392
+	  2                   3.0                5088
+	  3 (smallest)        5.1                4912
+
+config FEATURE_FAST_TOP
+	bool "Faster /proc scanning code (+100 bytes)"
+	default n
+	help
+	  This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
+	  but code size is slightly bigger.
+
+config FEATURE_ETC_NETWORKS
+	bool "Support for /etc/networks"
+	default n
+	help
+	  Enable support for network names in /etc/networks. This is
+	  a rarely used feature which allows you to use names
+	  instead of IP/mask pairs in route command.
+
+config FEATURE_EDITING
+	bool "Command line editing"
+	default n
+	help
+	  Enable line editing (mainly for shell command line).
+
+config FEATURE_EDITING_MAX_LEN
+	int "Maximum length of input"
+	range 128 8192
+	default 1024
+	depends on FEATURE_EDITING
+	help
+	  Line editing code uses on-stack buffers for storage.
+	  You may want to decrease this parameter if your target machine
+	  benefits from smaller stack usage.
+
+config FEATURE_EDITING_FANCY_KEYS
+	bool "Additional editing keys"
+	default n
+	depends on FEATURE_EDITING
+	help
+	  Enable additonal editing keys (Ctrl-E, Ctrl-U etc).
+	  Arrow keys, Home/End/Delete and Ctrl-W work even without this option.
+
+config FEATURE_EDITING_VI
+	bool "vi-style line editing commands"
+	default n
+	depends on FEATURE_EDITING
+	help
+	  Enable vi-style line editing.  In shells, this mode can be
+	  turned on and off with "set -o vi" and "set +o vi".
+
+config FEATURE_EDITING_HISTORY
+	int "History size"
+	range 0 99999
+	default 15
+	depends on FEATURE_EDITING
+	help
+	  Specify command history size.
+
+config FEATURE_EDITING_SAVEHISTORY
+	bool "History saving"
+	default n
+	depends on ASH && FEATURE_EDITING
+	help
+	  Enable history saving in ash shell.
+
+config FEATURE_TAB_COMPLETION
+	bool "Tab completion"
+	default n
+	depends on FEATURE_EDITING
+	help
+	  Enable tab completion.
+
+config FEATURE_USERNAME_COMPLETION
+	bool "Username completion"
+	default n
+	depends on FEATURE_TAB_COMPLETION
+	help
+	  Enable username completion.
+
+config FEATURE_EDITING_FANCY_PROMPT
+	bool "Fancy shell prompts"
+	default n
+	depends on FEATURE_EDITING
+	help
+	  Setting this option allows for prompts to use things like \w and
+	  \$ and escape codes.
+
+config MONOTONIC_SYSCALL
+	bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
+	default y
+	help
+	  Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
+	  time intervals (time, ping, traceroute etc need this).
+	  Probably requires Linux 2.6+. If not selected, gettimeofday
+	  will be used instead (which gives wrong results if date/time
+	  is reset).
+
+config IOCTL_HEX2STR_ERROR
+	bool "Use ioctl names rather than hex values in error messages"
+	default y
+	help
+	  Use ioctl names rather than hex values in error messages
+	  (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
+	  saves about 1400 bytes.
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/Kbuild	(revision 20)
@@ -0,0 +1,127 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+
+lib-y += ask_confirmation.o
+lib-y += bb_askpass.o
+lib-y += bb_basename.o
+lib-y += bb_do_delay.o
+lib-y += bb_pwd.o
+lib-y += bb_strtonum.o
+lib-y += change_identity.o
+lib-y += chomp.o
+lib-y += compare_string_array.o
+lib-y += concat_path_file.o
+lib-y += concat_subpath_file.o
+lib-y += copy_file.o
+lib-y += copyfd.o
+lib-y += crc32.o
+lib-y += create_icmp6_socket.o
+lib-y += create_icmp_socket.o
+lib-y += default_error_retval.o
+lib-y += device_open.o
+lib-y += dump.o
+lib-y += error_msg.o
+lib-y += error_msg_and_die.o
+lib-y += execable.o
+lib-y += fclose_nonstdin.o
+lib-y += fflush_stdout_and_exit.o
+lib-y += fgets_str.o
+lib-y += find_pid_by_name.o
+lib-y += find_root_device.o
+lib-y += full_write.o
+lib-y += get_console.o
+lib-y += get_last_path_component.o
+lib-y += get_line_from_file.o
+lib-y += getopt32.o
+lib-y += herror_msg.o
+lib-y += herror_msg_and_die.o
+lib-y += human_readable.o
+lib-y += inet_common.o
+lib-y += info_msg.o
+lib-y += inode_hash.o
+lib-y += isdirectory.o
+lib-y += kernel_version.o
+lib-y += last_char_is.o
+lib-y += lineedit.o
+lib-y += llist.o
+lib-y += login.o
+lib-y += make_directory.o
+lib-y += makedev.o
+lib-y += match_fstype.o
+lib-y += md5.o
+lib-y += messages.o
+lib-y += mode_string.o
+lib-y += mtab_file.o
+lib-y += obscure.o
+lib-y += parse_mode.o
+lib-y += perror_msg.o
+lib-y += perror_msg_and_die.o
+lib-y += perror_nomsg.o
+lib-y += perror_nomsg_and_die.o
+lib-y += pidfile.o
+lib-y += process_escape_sequence.o
+lib-y += procps.o
+lib-y += read.o
+lib-y += recursive_action.o
+lib-y += remove_file.o
+lib-y += restricted_shell.o
+lib-y += run_shell.o
+lib-y += safe_strncpy.o
+lib-y += safe_write.o
+lib-y += setup_environment.o
+lib-y += sha1.o
+lib-y += simplify_path.o
+lib-y += skip_whitespace.o
+lib-y += speed_table.o
+lib-y += str_tolower.o
+lib-y += time.o
+lib-y += trim.o
+lib-y += u_signal_names.o
+lib-y += udp_io.o
+lib-y += uuencode.o
+lib-y += vdprintf.o
+lib-y += verror_msg.o
+lib-y += vfork_daemon_rexec.o
+lib-y += warn_ignoring_args.o
+lib-y += wfopen.o
+lib-y += wfopen_input.o
+lib-y += xatonum.o
+lib-y += xconnect.o
+lib-y += xfuncs.o
+lib-y += xgetcwd.o
+lib-y += xgethostbyname.o
+lib-y += xreadlink.o
+
+# conditionally compiled objects:
+lib-$(CONFIG_FEATURE_MOUNT_LOOP) += loop.o
+lib-$(CONFIG_LOSETUP) += loop.o
+lib-$(CONFIG_FEATURE_MTAB_SUPPORT) += mtab.o
+lib-$(CONFIG_PASSWD) += pw_encrypt.o crypt_make_salt.o update_passwd.o
+lib-$(CONFIG_CHPASSWD) += pw_encrypt.o crypt_make_salt.o update_passwd.o
+lib-$(CONFIG_CRYPTPW) += pw_encrypt.o crypt_make_salt.o
+lib-$(CONFIG_SULOGIN) += pw_encrypt.o
+lib-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) += pw_encrypt.o
+lib-$(CONFIG_VLOCK) += correct_password.o
+lib-$(CONFIG_SU) += correct_password.o
+lib-$(CONFIG_LOGIN) += correct_password.o
+lib-$(CONFIG_DF) += find_mount_point.o
+lib-$(CONFIG_MKFS_MINIX) += find_mount_point.o
+lib-$(CONFIG_SELINUX) += selinux_common.o
+
+# We shouldn't build xregcomp.c if we don't need it - this ensures we don't
+# require regex.h to be in the include dir even if we don't need it thereby
+# allowing us to build busybox even if uclibc regex support is disabled.
+
+lib-$(CONFIG_AWK) += xregcomp.o
+lib-$(CONFIG_SED) += xregcomp.o
+lib-$(CONFIG_GREP) += xregcomp.o
+lib-$(CONFIG_EXPR) += xregcomp.o
+lib-$(CONFIG_MDEV) += xregcomp.o
+lib-$(CONFIG_LESS) += xregcomp.o
+lib-$(CONFIG_DEVFSD) += xregcomp.o
+lib-$(CONFIG_FEATURE_FIND_REGEX) += xregcomp.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/README
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/README	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/libbb/README	(revision 20)
@@ -0,0 +1,11 @@
+Please see the LICENSE file for copyright information (GPLv2)
+
+libbb is BusyBox's utility library.  All of this stuff used to be stuffed into
+a single file named utility.c.  When I split utility.c to create libbb, some of
+the very oldest stuff ended up without their original copyright and licensing
+information (which is now lost in the mists of time).  If you see something
+that you wrote that is mis-attributed, do let me know so we can fix that up.
+
+	Erik Andersen
+	<andersen@codepoet.org>
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/libpwdgrp/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/libpwdgrp/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/libpwdgrp/Kbuild	(revision 20)
@@ -0,0 +1,9 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y := uidgid_get.o
+
+lib-$(CONFIG_USE_BB_PWD_GRP) += pwd_grp.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/loginutils/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/loginutils/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/loginutils/Config.in	(revision 20)
@@ -0,0 +1,239 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Login/Password Management Utilities"
+
+config FEATURE_SHADOWPASSWDS
+	bool "Support for shadow passwords"
+	default n
+	help
+	  Build support for shadow password in /etc/shadow.  This file is only
+	  readable by root and thus the encrypted passwords are no longer
+	  publicly readable.
+
+config USE_BB_SHADOW
+	bool "  Use busybox shadow password functions"
+	default y
+	depends on USE_BB_PWD_GRP && FEATURE_SHADOWPASSWDS
+	help
+	    If you leave this disabled, busybox will use the system's shadow
+	    password handling functions.  And if you are using the GNU C library
+	    (glibc), you will then need to install the /etc/nsswitch.conf
+	    configuration file and the required /lib/libnss_* libraries in
+	    order for the shadow password functions to work.  This generally
+	    makes your embedded system quite a bit larger.
+
+	    Enabling this option will cause busybox to directly access the
+	    system's /etc/shadow file when handling shadow passwords.  This
+	    makes your system smaller and I will get fewer emails asking about
+	    how glibc NSS works).  When this option is enabled, you will not be
+	    able to use PAM to access shadow passwords from remote LDAP
+	    password servers and whatnot.
+
+config USE_BB_PWD_GRP
+	bool "Use internal password and group functions rather than system functions"
+	default n
+	help
+	    If you leave this disabled, busybox will use the system's password
+	    and group functions.  And if you are using the GNU C library
+	    (glibc), you will then need to install the /etc/nsswitch.conf
+	    configuration file and the required /lib/libnss_* libraries in
+	    order for the password and group functions to work.  This generally
+	    makes your embedded system quite a bit larger.
+
+	    Enabling this option will cause busybox to directly access the
+	    system's /etc/password, /etc/group files (and your system will be
+	    smaller, and I will get fewer emails asking about how glibc NSS
+	    works).  When this option is enabled, you will not be able to use
+	    PAM to access remote LDAP password servers and whatnot.  And if you
+	    want hostname resolution to work with glibc, you still need the
+	    /lib/libnss_* libraries.
+
+	    If you enable this option, it will add about 1.5k to busybox.
+
+config ADDGROUP
+	bool "addgroup"
+	default n
+	help
+	  Utility for creating a new group account.
+
+config FEATURE_ADDUSER_TO_GROUP
+	bool "Support for adding users to groups"
+	default n
+	depends on ADDGROUP
+	help
+	  If  called  with two non-option arguments,
+	  addgroup will add an existing user to an
+	  existing group.
+
+config DELGROUP
+	bool "delgroup"
+	default n
+	help
+	  Utility for deleting a group account.
+
+config FEATURE_DEL_USER_FROM_GROUP
+	bool "Support for removing users from groups."
+	default n
+	depends on DELGROUP
+	help
+	  If called with two non-option arguments, deluser
+	  or delgroup will remove an user from a specified group.
+
+config ADDUSER
+	bool "adduser"
+	default n
+	help
+	  Utility for creating a new user account.
+
+config DELUSER
+	bool "deluser"
+	default n
+	help
+	  Utility for deleting a user account.
+
+config GETTY
+	bool "getty"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  getty lets you log in on a tty, it is normally invoked by init.
+
+config FEATURE_UTMP
+	bool "Support utmp file"
+	depends on GETTY || LOGIN || SU || WHO
+	default n
+	help
+	  The file /var/run/utmp is used to track who is currently logged in.
+
+config FEATURE_WTMP
+	bool "Support wtmp file"
+	depends on GETTY || LOGIN || SU || LAST
+	default n
+	select FEATURE_UTMP
+	help
+	  The file /var/run/wtmp is used to track when user's have logged into
+	  and logged out of the system.
+
+config LOGIN
+	bool "login"
+	default n
+	select FEATURE_SUID
+	select FEATURE_SYSLOG
+	help
+	  login is used when signing onto a system.
+
+	  Note that Busybox binary must be setuid root for this applet to
+	  work properly.
+
+config PAM
+	bool "Support for PAM (Pluggable Authentication Modules)"
+	default n
+	depends on LOGIN
+	help
+	  Use PAM in login(1) instead of direct access to password database.
+
+config LOGIN_SCRIPTS
+	bool "Support for login scripts"
+	depends on LOGIN
+	default n
+	help
+	  Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
+	  just prior to switching from root to logged-in user.
+
+config FEATURE_NOLOGIN
+	bool "Support for /etc/nologin"
+	default y
+	depends on LOGIN
+	help
+	  The file /etc/nologin is used by (some versions of) login(1).
+	  If it exists, non-root logins are prohibited.
+
+config FEATURE_SECURETTY
+	bool "Support for /etc/securetty"
+	default y
+	depends on LOGIN
+	help
+	  The file /etc/securetty is used by (some versions of) login(1).
+	  The file contains the device names of tty lines (one per line,
+	  without leading /dev/) on which root is allowed to login.
+
+config PASSWD
+	bool "passwd"
+	default n
+	select FEATURE_SUID
+	select FEATURE_SYSLOG
+	help
+	  passwd changes passwords for user and group accounts.  A normal user
+	  may only change the password for his/her own account, the super user
+	  may change the password for any account.  The administrator of a group
+	  may change the password for the group.
+
+	  Note that Busybox binary must be setuid root for this applet to
+	  work properly.
+
+config FEATURE_PASSWD_WEAK_CHECK
+	bool "Check new passwords for weakness"
+	default y
+	depends on PASSWD
+	help
+	  With this option passwd will refuse new passwords which are "weak".
+
+config CRYPTPW
+	bool "cryptpw"
+	default n
+	help
+	  Applet for crypting a string.
+
+config CHPASSWD
+       bool "chpasswd"
+       default n
+       help
+         chpasswd  reads  a  file  of user name and password pairs from
+         standard input and uses this information to update a group of
+         existing users.
+
+config SU
+	bool "su"
+	default n
+	select FEATURE_SUID
+	select FEATURE_SYSLOG
+	help
+	  su is used to become another user during a login session.
+	  Invoked without a username, su defaults to becoming the super user.
+
+	  Note that Busybox binary must be setuid root for this applet to
+	  work properly.
+
+config FEATURE_SU_SYSLOG
+	bool "Enable su to write to syslog"
+	default y
+	depends on SU
+
+config FEATURE_SU_CHECKS_SHELLS
+	bool "Enable su to check user's shell to be listed in /etc/shells"
+	depends on SU
+	default y
+
+config SULOGIN
+	bool "sulogin"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  sulogin is invoked when the system goes into single user
+	  mode (this is done through an entry in inittab).
+
+config VLOCK
+	bool "vlock"
+	default n
+	select FEATURE_SUID
+	help
+	  Build the "vlock" applet which allows you to lock (virtual) terminals.
+
+	  Note that Busybox binary must be setuid root for this applet to
+	  work properly.
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/loginutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/loginutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/loginutils/Kbuild	(revision 20)
@@ -0,0 +1,19 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_ADDGROUP)	+= addgroup.o
+lib-$(CONFIG_ADDUSER)	+= adduser.o
+lib-$(CONFIG_CRYPTPW)	+= cryptpw.o
+lib-$(CONFIG_CHPASSWD)	+= chpasswd.o
+lib-$(CONFIG_GETTY)	+= getty.o
+lib-$(CONFIG_LOGIN)	+= login.o
+lib-$(CONFIG_PASSWD)	+= passwd.o
+lib-$(CONFIG_SU)	+= su.o
+lib-$(CONFIG_SULOGIN)	+= sulogin.o
+lib-$(CONFIG_VLOCK)	+= vlock.o
+lib-$(CONFIG_DELUSER)	+= deluser.o
+lib-$(CONFIG_DELGROUP)	+= deluser.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/miscutils/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/miscutils/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/miscutils/Config.in	(revision 20)
@@ -0,0 +1,389 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Miscellaneous Utilities"
+
+config ADJTIMEX
+	bool "adjtimex"
+	default n
+	help
+	  Adjtimex reads and optionally sets adjustment parameters for
+	  the Linux clock adjustment algorithm.
+
+config BBCONFIG
+	bool "bbconfig"
+	default n
+	help
+	  The bbconfig applet will print the config file with which
+	  busybox was built.
+
+config CHRT
+	bool "chrt"
+	default n
+	help
+	  manipulate real-time attributes of a process.
+	  This requires sched_{g,s}etparam support in your libc.
+
+config CROND
+	bool "crond"
+	default n
+	select FEATURE_SUID
+	select FEATURE_SYSLOG
+	help
+	  Crond is a background daemon that parses individual crontab
+	  files and executes commands on behalf of the users in question.
+	  This is a port of dcron from slackware.  It uses files of the
+	  format /var/spool/cron/crontabs/<username> files, for example:
+	      $ cat /var/spool/cron/crontabs/root
+	      # Run daily cron jobs at 4:40 every day:
+	      40 4 * * * /etc/cron/daily > /dev/null 2>&1
+	  Note that Busybox binary must be setuid root for this applet to
+	  work properly.
+
+config DEBUG_CROND_OPTION
+	bool "Support debug option -d"
+	depends on CROND
+	default n
+	help
+	  Support option -d to enter debug mode.
+
+config FEATURE_CROND_CALL_SENDMAIL
+	bool "Using /usr/sbin/sendmail?"
+	default n
+	depends on CROND
+	help
+	  Support calling /usr/sbin/sendmail for send cmd outputs.
+
+config CRONTAB
+	bool "crontab"
+	default n
+	select FEATURE_SUID
+	help
+	  Crontab manipulates the crontab for a particular user.  Only
+	  the superuser may specify a different user and/or crontab directory.
+
+config DC
+	bool "dc"
+	default n
+	help
+	  Dc is a reverse-polish desk calculator which supports unlimited
+	  precision arithmetic.
+
+config DEVFSD
+	bool "devfsd (obsolete)"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  This is deprecated, and will be removed at the end of 2008.
+
+	  Provides compatibility with old device names on a devfs systems.
+	  You should set it to true if you have devfs enabled.
+	  The following keywords in devsfd.conf are supported:
+	  "CLEAR_CONFIG", "INCLUDE", "OPTIONAL_INCLUDE", "RESTORE",
+	  "PERMISSIONS", "EXECUTE", "COPY", "IGNORE",
+	  "MKOLDCOMPAT", "MKNEWCOMPAT","RMOLDCOMPAT", "RMNEWCOMPAT".
+
+	   But only if they are written UPPERCASE!!!!!!!!
+
+config DEVFSD_MODLOAD
+	bool "Adds support for MODLOAD keyword in devsfd.conf"
+	default n
+	depends on DEVFSD
+	help
+	  This actually doesn't work with busybox modutils but needs
+	  the external modutils.
+
+config DEVFSD_FG_NP
+	bool "Enables the -fg and -np options"
+	default n
+	depends on DEVFSD
+	help
+		-fg	Run the daemon in the foreground.
+		-np	Exit  after  parsing  the configuration file. Do not poll for events.
+
+config DEVFSD_VERBOSE
+	bool "Increases logging (and size)"
+	default n
+	depends on DEVFSD
+	help
+	  Increases logging to stderr or syslog.
+
+config FEATURE_DEVFS
+	bool "  Use devfs names for all devices (obsolete)"
+	default n
+	help
+	  This is obsolete and will be going away at the end of 2008..
+
+	  This tells busybox to look for names like /dev/loop/0 instead of
+	  /dev/loop0.  If your /dev directory has normal names instead of
+	  devfs names, you don't want this.
+
+config EJECT
+	bool "eject"
+	default n
+	help
+	  Used to eject cdroms.  (defaults to /dev/cdrom)
+
+config LAST
+	bool "last"
+	default n
+	select FEATURE_WTMP
+	help
+	  'last' displays a list of the last users that logged into the system.
+
+config LESS
+	bool "less"
+	default n
+	help
+	  'less' is a pager, meaning that it displays text files. It possesses
+	  a wide array of features, and is an improvement over 'more'.
+
+config FEATURE_LESS_MAXLINES
+	int "Max number of input lines less will try to eat"
+	default 9999999
+	depends on LESS
+
+config FEATURE_LESS_BRACKETS
+	bool "Enable bracket searching"
+	default y
+	depends on LESS
+	help
+	  This option adds the capability to search for matching left and right
+	  brackets, facilitating programming.
+
+config FEATURE_LESS_FLAGS
+	bool "Enable extra flags"
+	default y
+	depends on LESS
+	help
+	  The extra flags provided do the following:
+
+	  The -M flag enables a more sophisticated status line.
+	  The -m flag enables a simpler status line with a percentage.
+
+config FEATURE_LESS_FLAGCS
+	bool "Enable flag changes"
+	default n
+	depends on LESS
+	help
+	  This enables the ability to change command-line flags within
+	  less itself.
+
+config FEATURE_LESS_MARKS
+	bool "Enable marks"
+	default n
+	depends on LESS
+	help
+	  Marks enable positions in a file to be stored for easy reference.
+
+config FEATURE_LESS_REGEXP
+	bool "Enable regular expressions"
+	default n
+	depends on LESS
+	help
+	  Enable regular expressions, allowing complex file searches.
+
+config HDPARM
+	bool "hdparm"
+	default n
+	help
+	  Get/Set hard drive parameters.  Primarily intended for ATA
+	  drives.  Adds about 13k (or around 30k if you enable the
+	  FEATURE_HDPARM_GET_IDENTITY option)....
+
+config FEATURE_HDPARM_GET_IDENTITY
+	bool "Support obtaining detailed information directly from drives"
+	default y
+	depends on HDPARM
+	help
+	  Enables the -I and -i options to obtain detailed information
+	  directly from drives about their capabilities and supported ATA
+	  feature set. If no device name is specified, hdparm will read
+	  identify data from stdin. Enabling this option will add about 16k...
+
+config FEATURE_HDPARM_HDIO_SCAN_HWIF
+	bool "Register an IDE interface (DANGEROUS)"
+	default n
+	depends on HDPARM
+	help
+	  Enables the 'hdparm -R' option to register an IDE interface.
+	  This is dangerous stuff, so you should probably say N.
+
+config FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
+	bool "Un-register an IDE interface (DANGEROUS)"
+	default n
+	depends on HDPARM
+	help
+	  Enables the 'hdparm -U' option to un-register an IDE interface.
+	  This is dangerous stuff, so you should probably say N.
+
+config FEATURE_HDPARM_HDIO_DRIVE_RESET
+	bool "perform device reset (DANGEROUS)"
+	default n
+	depends on HDPARM
+	help
+	  Enables the 'hdparm -w' option to perform a device reset.
+	  This is dangerous stuff, so you should probably say N.
+
+config FEATURE_HDPARM_HDIO_TRISTATE_HWIF
+	bool "tristate device for hotswap (DANGEROUS)"
+	default n
+	depends on HDPARM
+	help
+	  Enables the 'hdparm -x' option to tristate device for hotswap,
+	  and the '-b' option to get/set bus state.  This is dangerous
+	  stuff, so you should probably say N.
+
+config FEATURE_HDPARM_HDIO_GETSET_DMA
+	bool "get/set using_dma flag (DANGEROUS)"
+	default n
+	depends on HDPARM
+	help
+	  Enables the 'hdparm -d' option to get/set using_dma flag.
+	  This is dangerous stuff, so you should probably say N.
+
+config MAKEDEVS
+	bool "makedevs"
+	default n
+	help
+	  'makedevs' is a utility used to create a batch of devices with
+	  one command.
+	  .
+	  There are two choices for command line behaviour, the interface
+	  as used by LEAF/Linux Router Project, or a device table file.
+	  .
+	  'leaf' is traditionally what busybox follows, it allows multiple
+	  devices of a particluar type to be created per command.
+	  e.g. /dev/hda[0-9]
+	  Device properties are passed as command line arguments.
+	  .
+	  'table' reads device properties from a file or stdin, allowing
+	  a batch of unrelated devices to be made with one command.
+	  User/group names are allowed as an alternative to uid/gid.
+
+choice
+	prompt "Choose makedevs behaviour"
+	depends on MAKEDEVS
+	default FEATURE_MAKEDEVS_TABLE
+
+config FEATURE_MAKEDEVS_LEAF
+	bool "leaf"
+
+config FEATURE_MAKEDEVS_TABLE
+	bool "table"
+
+endchoice
+
+config MOUNTPOINT
+	bool "mountpoint"
+	default n
+	help
+	  mountpoint checks if the directory is a mountpoint.
+
+config MT
+	bool "mt"
+	default n
+	help
+	  mt is used to control tape devices.  You can use the mt utility
+	  to advance or rewind a tape past a specified number of archive
+	  files on the tape.
+
+config RAIDAUTORUN
+	bool "raidautorun"
+	default n
+	help
+	  raidautorun tells the kernel md driver to
+	  search and start RAID arrays.
+
+config READAHEAD
+	bool "readahead"
+	default n
+	depends on LFS
+	help
+	  Preload the files listed on the command line into RAM cache so that
+	  subsequent reads on these files will not block on disk I/O.
+
+	  This applet just calls the readahead(2) system call on each file.
+	  It is mainly useful in system startup scripts to preload files
+	  or executables before they are used.  When used at the right time
+	  (in particular when a CPU boundprocess is running) it can
+	  significantly speed up system startup.
+
+	  As readahead(2) blocks until each file has been read, it is best to
+	  run this applet as a background job.
+
+config RUNLEVEL
+	bool "runlevel"
+	default n
+	help
+	  find the current and previous system runlevel.
+
+	  This applet uses utmp but does not rely on busybox supporing
+	  utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc.
+
+config RX
+	bool "rx"
+	default n
+	help
+	  Receive files using the Xmodem protocol.
+
+config STRINGS
+	bool "strings"
+	default n
+	help
+	  strings prints the printable character sequences for each file
+	  specified.
+
+config SETSID
+	bool "setsid"
+	default n
+	help
+	  setsid runs a program in a new session
+
+config TASKSET
+	bool "taskset"
+	default n
+	help
+	  Retrieve or set a processes's CPU affinity.
+	  This requires sched_{g,s}etaffinity support in your libc.
+
+config FEATURE_TASKSET_FANCY
+	bool "fancy output"
+	default y
+	depends on TASKSET
+	help
+	  Add code for fancy output. This merely silences a compiler-warning
+	  and adds about 135 Bytes. May be needed for machines with alot
+	  of CPUs.
+
+config TIME
+	bool "time"
+	default n
+	help
+	  The time command runs the specified program with the given arguments.
+	  When the command finishes, time writes a message to standard output
+	  giving timing statistics about this program run.
+
+config TTYSIZE
+	bool "ttysize"
+	default n
+	help
+	  A replacement for "stty size". Unlike stty, can report only width,
+	  only height, or both, in any order. It also does not complain on error,
+	  but returns default 80x24. Usage in shell scripts: width=`ttysize w`.
+
+config WATCHDOG
+	bool "watchdog"
+	default n
+	help
+	  The watchdog utility is used with hardware or software watchdog
+	  device drivers.  It opens the specified watchdog device special file
+	  and periodically writes a magic character to the device.  If the
+	  watchdog applet ever fails to write the magic character within a
+	  certain amount of time, the watchdog device assumes the system has
+	  hung, and will cause the hardware to reboot.
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/miscutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/miscutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/miscutils/Kbuild	(revision 20)
@@ -0,0 +1,31 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_ADJTIMEX)    += adjtimex.o
+lib-$(CONFIG_BBCONFIG)    += bbconfig.o
+lib-$(CONFIG_CHRT)        += chrt.o
+lib-$(CONFIG_CROND)       += crond.o
+lib-$(CONFIG_CRONTAB)     += crontab.o
+lib-$(CONFIG_DC)          += dc.o
+lib-$(CONFIG_DEVFSD)      += devfsd.o
+lib-$(CONFIG_EJECT)       += eject.o
+lib-$(CONFIG_HDPARM)      += hdparm.o
+lib-$(CONFIG_LAST)        += last.o
+lib-$(CONFIG_LESS)        += less.o
+lib-$(CONFIG_MAKEDEVS)    += makedevs.o
+lib-$(CONFIG_MOUNTPOINT)  += mountpoint.o
+lib-$(CONFIG_MT)          += mt.o
+lib-$(CONFIG_RAIDAUTORUN) += raidautorun.o
+lib-$(CONFIG_READAHEAD)   += readahead.o
+lib-$(CONFIG_RUNLEVEL)    += runlevel.o
+lib-$(CONFIG_RX)          += rx.o
+lib-$(CONFIG_SETSID)      += setsid.o
+lib-$(CONFIG_STRINGS)     += strings.o
+lib-$(CONFIG_TASKSET)     += taskset.o
+lib-$(CONFIG_TIME)        += time.o
+lib-$(CONFIG_TTYSIZE)     += ttysize.o
+lib-$(CONFIG_WATCHDOG)    += watchdog.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/modutils/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/modutils/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/modutils/Config.in	(revision 20)
@@ -0,0 +1,158 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Linux Module Utilities"
+
+config INSMOD
+	bool "insmod"
+	default n
+	help
+	  insmod is used to load specified modules in the running kernel.
+
+config FEATURE_INSMOD_VERSION_CHECKING
+	bool "Module version checking"
+	default n
+	depends on INSMOD && FEATURE_2_4_MODULES
+	help
+	  Support checking of versions for modules.  This is used to
+	  ensure that the kernel and module are made for each other.
+
+config FEATURE_INSMOD_KSYMOOPS_SYMBOLS
+	bool "Add module symbols to kernel symbol table"
+	default n
+	depends on INSMOD && FEATURE_2_4_MODULES
+	help
+	  By adding module symbols to the kernel symbol table, Oops messages
+	  occuring within kernel modules can be properly debugged.  By enabling
+	  this feature, module symbols will always be added to the kernel symbol
+	  table for properly debugging support.  If you are not interested in
+	  Oops messages from kernel modules, say N.
+
+config FEATURE_INSMOD_LOADINKMEM
+	bool "In kernel memory optimization (uClinux only)"
+	default n
+	depends on INSMOD && FEATURE_2_4_MODULES
+	help
+	  This is a special uClinux only memory optimization that lets insmod
+	  load the specified kernel module directly into kernel space, reducing
+	  memory usage by preventing the need for two copies of the module
+	  being loaded into memory.
+
+config FEATURE_INSMOD_LOAD_MAP
+	bool "Enable load map (-m) option"
+	default n
+	depends on INSMOD && ( FEATURE_2_4_MODULES || FEATURE_2_6_MODULES )
+	help
+	  Enabling this, one would be able to get a load map
+	  output on stdout. This makes kernel module debugging
+	  easier.
+	  If you don't plan to debug kernel modules, you
+	  don't need this option.
+
+config FEATURE_INSMOD_LOAD_MAP_FULL
+	bool "Symbols in load map"
+	default y
+	depends on FEATURE_INSMOD_LOAD_MAP
+	help
+	  Without this option, -m will only output section
+	  load map.  With this option, -m will also output
+	  symbols load map.
+
+config RMMOD
+	bool "rmmod"
+	default n
+	help
+	  rmmod is used to unload specified modules from the kernel.
+
+config LSMOD
+	bool "lsmod"
+	default n
+	help
+	  lsmod is used to display a list of loaded modules.
+
+config FEATURE_LSMOD_PRETTY_2_6_OUTPUT
+	bool "lsmod pretty output for 2.6.x Linux kernels "
+	default n
+	depends on LSMOD
+	help
+	  This option makes output format of lsmod adjusted to
+	  the format of module-init-tools for Linux kernel 2.6.
+
+config MODPROBE
+	bool "modprobe"
+	default n
+	help
+	  Handle the loading of modules, and their dependencies on a high
+	  level.
+
+	  Note that in the state, modprobe does not understand multiple
+	  module options from the configuration file. See option below.
+
+config FEATURE_MODPROBE_MULTIPLE_OPTIONS
+	bool
+	prompt "Multiple options parsing" if NITPICK
+	default y
+	depends on MODPROBE
+	help
+	  Allow modprobe to understand more than one option to pass to
+	  modules.
+
+	  This is a WIP, while waiting for a common argument parsing
+	  common amongst all BB applets (shell, modprobe, etc...) and
+	  adds around 600 bytes on x86, 700 bytes on ARM. The code is
+	  biggish and uggly, but just works.
+
+	  Saying Y here is not a bad idea if you're not that short
+	  on storage capacity.
+
+config FEATURE_MODPROBE_FANCY_ALIAS
+	bool
+	prompt "Fancy alias parsing" if NITPICK
+	default y
+	depends on MODPROBE && FEATURE_2_6_MODULES
+	help
+	  Say 'y' here to enable parsing of aliases with underscore/dash
+	  mismatch between module name and file name, along with bus-specific
+	  aliases (such as pci:... or usb:... aliases).
+
+comment "Options common to multiple modutils"
+	depends on INSMOD || RMMOD || MODPROBE || LSMOD
+
+config FEATURE_CHECK_TAINTED_MODULE
+	# Simulate indentation
+	bool "Support tainted module checking with new kernels"
+	default y
+	depends on INSMOD || LSMOD
+	help
+	  Support checking for tainted modules.  These are usually binary
+	  only modules that will make the linux-kernel list ignore your
+	  support request.
+	  This option is required to support GPLONLY modules.
+
+config FEATURE_2_4_MODULES
+	# Simulate indentation
+	bool "Support version 2.2.x to 2.4.x Linux kernels"
+	default y
+	depends on INSMOD || RMMOD || MODPROBE
+	help
+	  Support module loading for 2.2.x and 2.4.x Linux kernels.
+
+config FEATURE_2_6_MODULES
+	# Simulate indentation
+	bool "Support version 2.6.x Linux kernels"
+	default y
+	depends on INSMOD || RMMOD || MODPROBE
+	help
+	  Support module loading for newer 2.6.x Linux kernels.
+
+
+config FEATURE_QUERY_MODULE_INTERFACE
+	bool
+	default y
+	depends on FEATURE_2_4_MODULES && !FEATURE_2_6_MODULES
+
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/modutils/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/modutils/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/modutils/Kbuild	(revision 20)
@@ -0,0 +1,11 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_INSMOD)		+= insmod.o
+lib-$(CONFIG_LSMOD)		+= lsmod.o
+lib-$(CONFIG_MODPROBE)		+= modprobe.o
+lib-$(CONFIG_RMMOD)		+= rmmod.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/networking/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/networking/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/networking/Config.in	(revision 20)
@@ -0,0 +1,781 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Networking Utilities"
+
+config FEATURE_IPV6
+	bool "Enable IPv6 support"
+	default n
+	help
+	  Enable IPv6 support in busybox.
+	  This adds IPv6 support in the networking applets.
+
+config VERBOSE_RESOLUTION_ERRORS
+	bool "Verbose resolution errors"
+	default n
+	help
+	  Enable if you are not satisfied with simplistic
+	  "can't resolve 'hostname.com'" and want to know more.
+	  This may increase size of your executable a bit.
+
+config ARP
+	bool "arp"
+	default n
+	help
+	  Manipulate the system ARP cache.
+
+config ARPING
+	bool "arping"
+	default n
+	help
+	  Ping hosts by ARP packets.
+
+config DNSD
+	bool "dnsd"
+	default n
+	help
+	  Small and static DNS server daemon.
+
+config ETHER_WAKE
+	bool "ether-wake"
+	default n
+	help
+	  Send a magic packet to wake up sleeping machines.
+
+config FAKEIDENTD
+	bool "fakeidentd"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  fakeidentd listens on the ident port and returns a predefined
+	  fake value on any query.
+
+config FTPGET
+	bool "ftpget"
+	default n
+	help
+	  Retrieve a remote file via FTP.
+
+config FTPPUT
+	bool "ftpput"
+	default n
+	help
+	  Store a remote file via FTP.
+
+config FEATURE_FTPGETPUT_LONG_OPTIONS
+	bool "Enable long options in ftpget/ftpput"
+	default n
+	depends on GETOPT_LONG && (FTPGET || FTPPUT)
+	help
+	  Support long options for the ftpget/ftpput applet.
+
+config HOSTNAME
+	bool "hostname"
+	default n
+	help
+	  Show or set the system's host name.
+
+config HTTPD
+	bool "httpd"
+	default n
+	help
+	  Serve web pages via an HTTP server.
+
+config FEATURE_HTTPD_USE_SENDFILE
+	bool "Use sendfile system call"
+	default n
+	depends on HTTPD
+	help
+	  When enabled, httpd will use the kernel sendfile() function
+	  instead of read/write loop.
+
+config FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
+	bool "Support reloading the global config file using hup signal"
+	default n
+	depends on HTTPD
+	help
+	  This option enables processing of SIGHUP to reload cached
+	  configuration settings.
+
+config FEATURE_HTTPD_SETUID
+	bool "Enable -u <user> option"
+	default n
+	depends on HTTPD
+	help
+	  This option allows the server to run as a specific user
+	  rather than defaulting to the user that starts the server.
+	  Use of this option requires special privileges to change to a
+	  different user.
+
+config FEATURE_HTTPD_BASIC_AUTH
+	bool "Enable Basic http Authentication"
+	default y
+	depends on HTTPD
+	help
+	  Utilizes password settings from /etc/httpd.conf for basic
+	  authentication on a per url basis.
+
+config FEATURE_HTTPD_AUTH_MD5
+	bool "Support MD5 crypted passwords for http Authentication"
+	default n
+	depends on FEATURE_HTTPD_BASIC_AUTH
+	help
+	  Enables basic per URL authentication from /etc/httpd.conf
+	  using md5 passwords.
+
+config FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES
+	bool "Support loading additional MIME types at run-time"
+	default n
+	depends on HTTPD
+	help
+	  This option enables support for additional MIME types at
+	  run-time to be specified in the configuration file.
+
+config FEATURE_HTTPD_CGI
+	bool "Support Common Gateway Interface (CGI)"
+	default y
+	depends on HTTPD
+	help
+	  This option allows scripts and executables to be invoked
+	  when specific URLs are requested.
+
+config FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
+	bool "Enable support for running scripts through an interpreter"
+	default n
+	depends on FEATURE_HTTPD_CGI
+	help
+	  This option enables support for running scripts through an
+	  interpreter. Turn this on if you want PHP scripts to work
+	  properly. You need to supply an additional line in your httpd
+	  config file:
+	  *.php:/path/to/your/php
+
+config FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
+	bool "Support the REMOTE_PORT environment variable for CGI"
+	default n
+	depends on FEATURE_HTTPD_CGI
+	help
+	  Use of this option can assist scripts in generating
+	  references that contain a unique port number.
+
+config FEATURE_HTTPD_ENCODE_URL_STR
+	bool "Enable the -e option for shell script CGI simplification."
+	default y
+	depends on HTTPD
+	help
+	  This option allows html encoding arbitrary
+	  strings for display of the browser.  Output goes to stdout.
+	  For example, httpd -e "<Hello World>" as
+	  "&#60Hello&#32World&#62".
+
+config FEATURE_HTTPD_ERROR_PAGES
+	bool "Enable support for custom error pages"
+	default n
+	depends on HTTPD
+	help
+	  This option allows you to define custom error pages in
+	  the configuration file instead of the default HTTP status
+	  error pages. For instance, if you add the line:
+	        E404:/path/e404.html
+	  in the config file, the server will respond the specified
+	  '/path/e404.html' file instead of the terse '404 NOT FOUND'
+	  message.
+
+config IFCONFIG
+	bool "ifconfig"
+	default n
+	help
+	  Ifconfig is used to configure the kernel-resident network interfaces.
+
+config FEATURE_IFCONFIG_STATUS
+	bool "Enable status reporting output (+7k)"
+	default y
+	depends on IFCONFIG
+	help
+	  If ifconfig is called with no arguments it will display the status
+	  of the currently active interfaces.
+
+config FEATURE_IFCONFIG_SLIP
+	bool "Enable slip-specific options \"keepalive\" and \"outfill\""
+	default n
+	depends on IFCONFIG
+	help
+	  Allow "keepalive" and "outfill" support for SLIP.  If you're not
+	  planning on using serial lines, leave this unchecked.
+
+config FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
+	bool "Enable options \"mem_start\", \"io_addr\", and \"irq\""
+	default n
+	depends on IFCONFIG
+	help
+	  Allow the start address for shared memory, start address for I/O,
+	  and/or the interrupt line used by the specified device.
+
+config FEATURE_IFCONFIG_HW
+	bool "Enable option \"hw\" (ether only)"
+	default y
+	depends on IFCONFIG
+	help
+	  Set the hardware address of this interface, if the device driver
+	  supports  this  operation.  Currently, we only support the 'ether'
+	  class.
+
+config FEATURE_IFCONFIG_BROADCAST_PLUS
+	bool "Set the broadcast automatically"
+	default n
+	depends on IFCONFIG
+	help
+	  Setting this will make ifconfig attempt to find the broadcast
+	  automatically if the value '+' is used.
+
+config IFUPDOWN
+	bool "ifupdown"
+	default n
+	help
+	  Activate or deactivate the specified interfaces.  This applet makes
+	  use of either "ifconfig" and "route" or the "ip" command to actually
+	  configure network interfaces.  Therefore, you will probably also want
+	  to enable either IFCONFIG and ROUTE, or enable
+	  FEATURE_IFUPDOWN_IP and the various IP options.  Of
+	  course you could use non-busybox versions of these programs, so
+	  against my better judgement (since this will surely result in plenty
+	  of support questions on the mailing list), I do not force you to
+	  enable these additional options.  It is up to you to supply either
+	  "ifconfig", "route" and "run-parts" or the "ip" command, either
+	  via busybox or via standalone utilities.
+
+config IFUPDOWN_IFSTATE_PATH
+	string "Absolute path to ifstate file"
+	default "/var/run/ifstate"
+	help
+	  ifupdown keeps state information in a file called ifstate.
+	  Typically it is located in /var/run/ifstate, however
+	  some distributions tend to put it in other places
+	  (debian, for example, uses /etc/network/run/ifstate).
+	  This config option defines location of ifstate.
+
+config FEATURE_IFUPDOWN_IP
+	bool "Use ip applet"
+	default n
+	depends on IFUPDOWN
+	help
+	  Use the iproute "ip" command to implement "ifup" and "ifdown", rather
+	  than the default of using the older 'ifconfig' and 'route' utilities.
+
+config FEATURE_IFUPDOWN_IP_BUILTIN
+	bool "Use busybox ip applet"
+	default y
+	depends on FEATURE_IFUPDOWN_IP
+	select IP
+	select FEATURE_IP_ADDRESS
+	select FEATURE_IP_LINK
+	select FEATURE_IP_ROUTE
+	help
+	  Use the busybox iproute "ip" applet to implement "ifupdown".
+
+	  If left disabled, you must install the full-blown iproute2
+	  utility or the  "ifup" and "ifdown" applets will not work.
+
+config FEATURE_IFUPDOWN_IFCONFIG_BUILTIN
+	bool "Use busybox ifconfig and route applets"
+	default y
+	depends on IFUPDOWN && !FEATURE_IFUPDOWN_IP
+	select IFCONFIG
+	select ROUTE
+	help
+	  Use the busybox iproute "ifconfig" and "route" applets to
+	  implement the "ifup" and "ifdown" utilities.
+
+	  If left disabled, you must install the full-blown ifconfig
+	  and route utilities, or the  "ifup" and "ifdown" applets will not
+	  work.
+
+config FEATURE_IFUPDOWN_IPV4
+	bool "Enable support for IPv4"
+	default y
+	depends on IFUPDOWN
+	help
+	  If you want ifup/ifdown to talk IPv4, leave this on.
+
+config FEATURE_IFUPDOWN_IPV6
+	bool "Enable support for IPv6"
+	default n
+	depends on IFUPDOWN && FEATURE_IPV6
+	help
+	  If you need support for IPv6, turn this option on.
+
+### UNUSED
+### config FEATURE_IFUPDOWN_IPX
+### 	bool "Enable support for IPX"
+### 	default n
+### 	depends on IFUPDOWN
+### 	help
+### 	  If this option is selected you can use busybox to work with IPX
+### 	  networks.
+
+config FEATURE_IFUPDOWN_MAPPING
+	bool "Enable mapping support"
+	default n
+	depends on IFUPDOWN
+	help
+	  This enables support for the "mapping" stanza, unless you have
+	  a weird network setup you don't need it.
+
+config FEATURE_IFUPDOWN_EXTERNAL_DHCP
+	bool "Enable support for external dhcp clients"
+	default n
+	depends on IFUPDOWN
+	help
+	  This enables support for the external dhcp clients. Clients are
+	  tried in the following order: dhcpcd, dhclient, pump and udhcpc.
+	  Otherwise, if udhcpc applet is enabled, it is used.
+	  Otherwise, ifup/ifdown will have no support for DHCP.
+
+config INETD
+	bool "inetd"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  Internet superserver daemon
+
+config FEATURE_INETD_SUPPORT_BUILTIN_ECHO
+	bool "Support echo service"
+	default y
+	depends on INETD
+	help
+	  Echo received data internal inetd service
+
+config FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
+	bool "Support discard service"
+	default y
+	depends on INETD
+	help
+	  Internet /dev/null internal inetd service
+
+config FEATURE_INETD_SUPPORT_BUILTIN_TIME
+	bool "Support time service"
+	default y
+	depends on INETD
+	help
+	  Return 32 bit time since 1900 internal inetd service
+
+config FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
+	bool "Support daytime service"
+	default y
+	depends on INETD
+	help
+	  Return human-readable time internal inetd service
+
+config FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
+	bool "Support chargen service"
+	default y
+	depends on INETD
+	help
+	  Familiar character generator internal inetd service
+
+config FEATURE_INETD_RPC
+	bool "Support RPC services"
+	default n
+	depends on INETD
+	select FEATURE_HAVE_RPC
+	help
+	  Support Sun-RPC based services
+
+config IP
+	bool "ip"
+	default n
+	help
+	  The "ip" applet is a TCP/IP interface configuration and routing
+	  utility.  You generally don't need "ip" to use busybox with
+	  TCP/IP.
+
+config FEATURE_IP_ADDRESS
+	bool "ip address"
+	default y
+	depends on IP
+	help
+	  Address manipulation support for the "ip" applet.
+
+config FEATURE_IP_LINK
+	bool "ip link"
+	default y
+	depends on IP
+	help
+	  Configure network devices with "ip".
+
+config FEATURE_IP_ROUTE
+	bool "ip route"
+	default y
+	depends on IP
+	help
+	  Add support for routing table management to "ip".
+
+config FEATURE_IP_TUNNEL
+	bool "ip tunnel"
+	default n
+	depends on IP
+	help
+	  Add support for tunneling commands to "ip".
+
+config FEATURE_IP_RULE
+	bool "ip rule"
+	default n
+	depends on IP
+	help
+	  Add support for rule commands to "ip".
+
+config FEATURE_IP_SHORT_FORMS
+	bool "Support short forms of ip commands."
+	default n
+	depends on IP
+	help
+	  Also support short-form of ip <OBJECT> commands:
+	  ip addr   -> ipaddr
+	  ip link   -> iplink
+	  ip route  -> iproute
+	  ip tunnel -> iptunnel
+	  ip rule   -> iprule
+
+	  Say N unless you desparately need the short form of the ip
+	  object commands.
+
+config IPADDR
+	bool
+	default y
+	depends on FEATURE_IP_SHORT_FORMS && FEATURE_IP_ADDRESS
+
+config IPLINK
+	bool
+	default y
+	depends on FEATURE_IP_SHORT_FORMS && FEATURE_IP_LINK
+
+config IPROUTE
+	bool
+	default y
+	depends on FEATURE_IP_SHORT_FORMS && FEATURE_IP_ROUTE
+
+config IPTUNNEL
+	bool
+	default y
+	depends on FEATURE_IP_SHORT_FORMS && FEATURE_IP_TUNNEL
+
+config IPRULE
+	bool
+	default y
+	depends on FEATURE_IP_SHORT_FORMS && FEATURE_IP_RULE
+
+config IPCALC
+	bool "ipcalc"
+	default n
+	help
+	  ipcalc takes an IP address and netmask and calculates the
+	  resulting broadcast, network, and host range.
+
+config FEATURE_IPCALC_FANCY
+	bool "Fancy IPCALC, more options, adds 1 kbyte"
+	default y
+	depends on IPCALC
+	help
+	  Adds the options hostname, prefix and silent to the output of "ipcalc".
+
+config FEATURE_IPCALC_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on IPCALC && GETOPT_LONG
+	help
+	  Support long options for the ipcalc applet.
+
+config NAMEIF
+	bool "nameif"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  nameif is used to rename network interface by its MAC address.
+	  Renamed interfaces MUST be in the down state.
+	  It is possible to use a file (default: /etc/mactab)
+	  with list of new interface names and MACs.
+	  Maximum interface name length: IF_NAMESIZE = 16
+	  File fields are separated by space or tab.
+	  File format:
+	  # Comment
+	  new_interface_name    XX:XX:XX:XX:XX:XX
+
+config NC
+	bool "nc"
+	default n
+	help
+	  A simple Unix utility which reads and writes data across network
+	  connections.
+
+config NC_SERVER
+	bool "Netcat server options (-l)"
+	default n
+	depends on NC
+	help
+	  Allow netcat to act as a server.
+
+config NC_EXTRA
+	bool "Netcat extensions (-eiw and filename)"
+	default n
+	depends on NC
+	help
+	  Add -e (support for executing the rest of the command line after
+	  making or receiving a successful connection), -i (delay interval for
+	  lines sent), -w (timeout for initial connection).
+
+config NETSTAT
+	bool "netstat"
+	default n
+	help
+	  netstat prints information about the Linux networking subsystem.
+
+config FEATURE_NETSTAT_WIDE
+	bool "  Enable wide netstat output"
+	default n
+	depends on NETSTAT
+	help
+	  Add support for wide columns. Useful when displaying IPv6 addresses
+	  (-W option).
+
+config NSLOOKUP
+	bool "nslookup"
+	default n
+	help
+	  nslookup is a tool to query Internet name servers.
+
+config PING
+	bool "ping"
+	default n
+	help
+	  ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
+	  elicit an ICMP ECHO_RESPONSE from a host or gateway.
+
+config PING6
+	bool "ping6"
+	default n
+	depends on FEATURE_IPV6 && PING
+	help
+	  This will give you a ping that can talk IPv6.
+
+config PSCAN
+	bool "pscan"
+	default n
+	help
+	  Simple network port scanner.
+
+config FEATURE_FANCY_PING
+	bool "Enable fancy ping output"
+	default y
+	depends on PING
+	help
+	  Make the output from the ping applet include statistics, and at the
+	  same time provide full support for ICMP packets.
+
+config ROUTE
+	bool "route"
+	default n
+	help
+	  Route displays or manipulates the kernel's IP routing tables.
+
+config SLATTACH
+	bool "slattach"
+	default n
+	help
+	  slattach is a small utility to attach network interfaces to serial lines.
+
+config TELNET
+	bool "telnet"
+	default n
+	help
+	  Telnet is an interface to the TELNET protocol, but is also commonly
+	  used to test other simple protocols.
+
+config FEATURE_TELNET_TTYPE
+	bool "Pass TERM type to remote host"
+	default y
+	depends on TELNET
+	help
+	  Setting this option will forward the TERM environment variable to the
+	  remote host you are connecting to.  This is useful to make sure that
+	  things like ANSI colors and other control sequences behave.
+
+config FEATURE_TELNET_AUTOLOGIN
+	bool "Pass USER type to remote host"
+	default y
+	depends on TELNET
+	help
+	  Setting this option will forward the USER environment variable to the
+	  remote host you are connecting to. This is useful when you need to
+	  log into a machine without telling the username (autologin). This
+	  option enables `-a' and `-l USER' arguments.
+
+config TELNETD
+	bool "telnetd"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  A daemon for the TELNET protocol, allowing you to log onto the host
+	  running the daemon.  Please keep in mind that the TELNET protocol
+	  sends passwords in plain text.  If you can't afford the space for an
+	  SSH daemon and you trust your network, you may say 'y' here.  As a
+	  more secure alternative, you should seriously consider installing the
+	  very small Dropbear SSH daemon instead:
+		http://matt.ucc.asn.au/dropbear/dropbear.html
+
+	  Note that for busybox telnetd to work you need several things:
+	  First of all, your kernel needs:
+		  UNIX98_PTYS=y
+		  DEVPTS_FS=y
+
+	  Next, you need a /dev/pts directory on your root filesystem:
+
+		  $ ls -ld /dev/pts
+		  drwxr-xr-x  2 root root 0 Sep 23 13:21 /dev/pts/
+
+	  Next you need the pseudo terminal master multiplexer /dev/ptmx:
+
+		  $ ls -la /dev/ptmx
+		  crw-rw-rw-  1 root tty 5, 2 Sep 23 13:55 /dev/ptmx
+
+	  Any /dev/ttyp[0-9]* files you may have can be removed.
+	  Next, you need to mount the devpts filesystem on /dev/pts using:
+
+		  mount -t devpts devpts /dev/pts
+
+	  You need to be sure that Busybox has LOGIN and
+	  FEATURE_SUID enabled.  And finally, you should make
+	  certain that Busybox has been installed setuid root:
+
+		chown root.root /bin/busybox
+		chmod 4755 /bin/busybox
+
+	  with all that done, telnetd _should_ work....
+
+
+config FEATURE_TELNETD_STANDALONE
+	bool "Support standalone telnetd (not inetd only)"
+	default n
+	depends on TELNETD
+	help
+	  Selecting this will make telnetd able to run standalone.
+
+config TFTP
+	bool "tftp"
+	default n
+	help
+	  This enables the Trivial File Transfer Protocol client program.  TFTP
+	  is usually used for simple, small transfers such as a root image
+	  for a network-enabled bootloader.
+
+config FEATURE_TFTP_GET
+	bool "Enable \"get\" command"
+	default y
+	depends on TFTP
+	help
+	  Add support for the GET command within the TFTP client.  This allows
+	  a client to retrieve a file from a TFTP server.
+
+config FEATURE_TFTP_PUT
+	bool "Enable \"put\" command"
+	default y
+	depends on TFTP
+	help
+	  Add support for the PUT command within the TFTP client.  This allows
+	  a client to transfer a file to a TFTP server.
+
+config FEATURE_TFTP_BLOCKSIZE
+	bool "Enable \"blocksize\" command"
+	default n
+	depends on TFTP
+	help
+	  Allow the client to specify the desired block size for transfers.
+
+config DEBUG_TFTP
+	bool "Enable debug"
+	default n
+	depends on TFTP
+	help
+	  Enable debug settings for tftp.  This is useful if you're running
+	  into problems with tftp as the protocol doesn't help you much when
+	  you run into problems.
+
+config TRACEROUTE
+	bool "traceroute"
+	default n
+	help
+	  Utility to trace the route of IP packets
+
+config FEATURE_TRACEROUTE_VERBOSE
+	bool "Enable verbose output"
+	default n
+	depends on TRACEROUTE
+	help
+	  Add some verbosity to traceroute.  This includes amongst other things
+	  hostnames and ICMP response types.
+
+config FEATURE_TRACEROUTE_SOURCE_ROUTE
+	bool "Enable loose source route"
+	default n
+	depends on TRACEROUTE
+	help
+	  Add option to specify a loose source route gateway
+	  (8 maximum).
+
+config FEATURE_TRACEROUTE_USE_ICMP
+	bool "Use ICMP instead of UDP"
+	default n
+	depends on TRACEROUTE
+	help
+	  Add feature to allow for ICMP ECHO instead of UDP datagrams.
+
+source networking/udhcp/Config.in
+
+config VCONFIG
+	bool "vconfig"
+	default n
+	help
+	  Creates, removes, and configures VLAN interfaces
+
+config WGET
+	bool "wget"
+	default n
+	help
+	  wget is a utility for non-interactive download of files from HTTP,
+	  HTTPS, and FTP servers.
+
+config FEATURE_WGET_STATUSBAR
+	bool "Enable a nifty process meter (+2k)"
+	default y
+	depends on WGET
+	help
+	  Enable the transfer progress bar for wget transfers.
+
+config FEATURE_WGET_AUTHENTICATION
+	bool "Enable HTTP authentication"
+	default y
+	depends on WGET
+	help
+	  Support authenticated HTTP transfers.
+
+config FEATURE_WGET_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on WGET && GETOPT_LONG
+	help
+	  Support long options for the wget applet.
+
+config ZCIP
+	bool "zcip"
+	default n
+	select FEATURE_SYSLOG
+	help
+	  ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.
+	  It's a daemon that allocates and defends a dynamically assigned
+	  address on the 169.254/16 network, requiring no system administrator.
+
+	  See http://www.zeroconf.org for further details, and "zcip.script"
+	  in the busybox examples.
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/networking/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/networking/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/networking/Kbuild	(revision 20)
@@ -0,0 +1,37 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_ARP)          += arp.o interface.o
+lib-$(CONFIG_ARPING)       += arping.o
+lib-$(CONFIG_DNSD)         += dnsd.o
+lib-$(CONFIG_ETHER_WAKE)   += ether-wake.o
+lib-$(CONFIG_FAKEIDENTD)   += isrv_identd.o isrv.o
+lib-$(CONFIG_FTPGET)       += ftpgetput.o
+lib-$(CONFIG_FTPPUT)       += ftpgetput.o
+lib-$(CONFIG_HOSTNAME)     += hostname.o
+lib-$(CONFIG_HTTPD)        += httpd.o
+lib-$(CONFIG_IFCONFIG)     += ifconfig.o interface.o
+lib-$(CONFIG_IFUPDOWN)     += ifupdown.o
+lib-$(CONFIG_INETD)        += inetd.o
+lib-$(CONFIG_IP)           += ip.o
+lib-$(CONFIG_IPCALC)       += ipcalc.o
+lib-$(CONFIG_NAMEIF)       += nameif.o
+lib-$(CONFIG_NC)           += nc.o
+lib-$(CONFIG_NETSTAT)      += netstat.o
+lib-$(CONFIG_NSLOOKUP)     += nslookup.o
+lib-$(CONFIG_PING)         += ping.o
+lib-$(CONFIG_PING6)        += ping.o
+lib-$(CONFIG_PSCAN)        += pscan.o
+lib-$(CONFIG_ROUTE)        += route.o
+lib-$(CONFIG_SLATTACH)     += slattach.o
+lib-$(CONFIG_TELNET)       += telnet.o
+lib-$(CONFIG_TELNETD)      += telnetd.o
+lib-$(CONFIG_TFTP)         += tftp.o
+lib-$(CONFIG_TRACEROUTE)   += traceroute.o
+lib-$(CONFIG_VCONFIG)      += vconfig.o
+lib-$(CONFIG_WGET)         += wget.o
+lib-$(CONFIG_ZCIP)         += zcip.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/networking/libiproute/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/networking/libiproute/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/networking/libiproute/Kbuild	(revision 20)
@@ -0,0 +1,65 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+#
+
+lib-y:=
+
+lib-$(CONFIG_SLATTACH) += \
+	utils.o
+
+lib-$(CONFIG_IP) += \
+	ip_parse_common_args.o \
+	libnetlink.o \
+	ll_addr.o \
+	ll_map.o \
+	ll_proto.o \
+	ll_types.o \
+	rt_names.o \
+	rtm_map.o \
+	utils.o
+
+lib-$(CONFIG_FEATURE_IP_ADDRESS) += \
+	ip_parse_common_args.o \
+	ipaddress.o \
+	libnetlink.o \
+	ll_addr.o \
+	ll_map.o \
+	ll_types.o \
+	rt_names.o \
+	utils.o
+
+lib-$(CONFIG_FEATURE_IP_LINK) += \
+	ip_parse_common_args.o \
+	ipaddress.o \
+	iplink.o \
+	libnetlink.o \
+	ll_addr.o \
+	ll_map.o \
+	ll_types.o \
+	rt_names.o \
+	utils.o
+
+lib-$(CONFIG_FEATURE_IP_ROUTE) += \
+	ip_parse_common_args.o \
+	iproute.o \
+	libnetlink.o \
+	ll_map.o \
+	rt_names.o \
+	rtm_map.o \
+	utils.o
+
+lib-$(CONFIG_FEATURE_IP_TUNNEL) += \
+	ip_parse_common_args.o \
+	iptunnel.o \
+	rt_names.o \
+	utils.o
+
+lib-$(CONFIG_FEATURE_IP_RULE) += \
+	ip_parse_common_args.o \
+	iprule.o \
+	rt_names.o \
+	utils.o
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/networking/udhcp/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/networking/udhcp/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/networking/udhcp/Config.in	(revision 20)
@@ -0,0 +1,74 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+config APP_UDHCPD
+	bool "udhcp Server (udhcpd)"
+	default n
+	help
+	  uDHCPd is a DHCP server geared primarily toward embedded systems,
+	  while striving to be fully functional and RFC compliant.
+
+	  See http://udhcp.busybox.net for further details.
+
+config APP_DHCPRELAY
+	bool "dhcprelay"
+	default n
+	depends on APP_UDHCPD
+	help
+	  dhcprelay listens for dhcp requests on one or more interfaces
+	  and forwards these requests to a different interface or dhcp
+	  server.
+
+config APP_DUMPLEASES
+	bool "Lease display utility (dumpleases)"
+	default n
+	depends on APP_UDHCPD
+	help
+	  dumpleases displays the leases written out by the udhcpd server.
+	  Lease times are stored in the file by time remaining in lease, or
+	  by the absolute time that it expires in seconds from epoch.
+
+	  See http://udhcp.busybox.net for further details.
+
+config FEATURE_UDHCPD_WRITE_LEASES_EARLY
+	bool "Rewrite the lease file at every new acknowledge"
+	default n
+	depends on APP_UDHCPD
+	help
+	  If selected, udhcpd will write a new file with leases every
+	  time a new lease has been accepted, thus eleminating the need
+	  to send SIGUSR1 for the initial writing, or updating. Any timed
+	  rewriting remains undisturbed
+
+config APP_UDHCPC
+	bool "udhcp Client (udhcpc)"
+	default n
+	help
+	  uDHCPc is a DHCP client geared primarily toward embedded systems,
+	  while striving to be fully functional and RFC compliant.
+
+	  The udhcp client negotiates a lease with the DHCP server and
+	  notifies a set of scripts when a lease is obtained or lost.
+
+	  See http://udhcp.busybox.net for further details.
+
+config FEATURE_UDHCP_DEBUG
+	bool "Compile udhcp with noisy debugging messages"
+	default n
+	depends on APP_UDHCPD || APP_UDHCPC
+	help
+	  If selected, udhcpd will output extra debugging output.  If using
+	  this option, compile uDHCP with "-g", and do not fork the daemon to
+	  the background.
+
+	  See http://udhcp.busybox.net for further details.
+
+config FEATURE_RFC3397
+	bool "Support for RFC3397 domain search (experimental)"
+	default n
+	depends on APP_UDHCPD || APP_UDHCPC
+	help
+	  If selected, both client and server will support passing of domain
+	  search lists via option 119, specified in RFC3397.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/networking/udhcp/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/networking/udhcp/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/networking/udhcp/Kbuild	(revision 20)
@@ -0,0 +1,19 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+#
+
+lib-y:=
+lib-$(CONFIG_APP_UDHCPC)        += common.o options.o packet.o \
+                                   signalpipe.o socket.o
+lib-$(CONFIG_APP_UDHCPD)        += common.o options.o packet.o \
+                                   signalpipe.o socket.o
+lib-$(CONFIG_APP_UDHCPC)        += dhcpc.o clientpacket.o clientsocket.o \
+                                   script.o
+lib-$(CONFIG_APP_UDHCPD)        += dhcpd.o arpping.o files.o leases.o \
+                                   serverpacket.o static_leases.o
+lib-$(CONFIG_APP_DUMPLEASES)    += dumpleases.o
+lib-$(CONFIG_APP_DHCPRELAY)     += dhcprelay.o
+lib-$(CONFIG_FEATURE_RFC3397)   += domain_codec.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/procps/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/procps/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/procps/Config.in	(revision 20)
@@ -0,0 +1,149 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Process Utilities"
+
+config FREE
+	bool "free"
+	default n
+	help
+	  free displays the total amount of free and used physical and swap
+	  memory in the system, as well as the buffers used by the kernel.
+	  The shared memory column should be ignored; it is obsolete.
+
+config FUSER
+	bool "fuser"
+	default n
+	help
+	  fuser lists all PIDs (Process IDs) that currently have a given
+	  file open.  fuser can also list all PIDs that have a given network
+	  (TCP or UDP) port open.
+
+config KILL
+	bool "kill"
+	default n
+	help
+	  The command kill sends the specified signal to the specified
+	  process or process group.  If no signal is specified, the TERM
+	  signal is sent.
+
+config KILLALL
+	bool "killall"
+	default n
+	depends on KILL
+	help
+	  killall sends a signal to all processes running any of the
+	  specified commands.  If no signal name is specified, SIGTERM is
+	  sent.
+
+config KILLALL5
+	bool "killall5"
+	default n
+	depends on KILL
+
+config NMETER
+	bool "nmeter"
+	default n
+	help
+	  Prints selected system stats continuously, one line per update.
+
+config PIDOF
+	bool "pidof"
+	default n
+	help
+	  Pidof finds the process id's (pids) of the named programs. It prints
+	  those id's on the standard output.
+
+config FEATURE_PIDOF_SINGLE
+	bool "Enable argument for single shot (-s)"
+	default n
+	depends on PIDOF
+	help
+	  Support argument '-s' for returning only the first pid found.
+
+config FEATURE_PIDOF_OMIT
+	bool "Enable argument for omitting pids (-o)"
+	default n
+	depends on PIDOF
+	help
+	  Support argument '-o' for omitting the given pids in output.
+	  The special pid %PPID can be used to name the parent process
+	  of the pidof, in other words the calling shell or shell script.
+
+config PS
+	bool "ps"
+	default n
+	help
+	  ps gives a snapshot of the current processes.
+
+config FEATURE_PS_WIDE
+	bool "Enable argument for wide output (-w)"
+	default n
+	depends on PS
+	help
+	  Support argument 'w' for wide output.
+	  If given once, 132 chars are printed and given more than
+	  one, the length is unlimited.
+
+config RENICE
+	bool "renice"
+	default n
+	help
+	  Renice alters the scheduling priority of one or more running
+	  processes.
+
+config BB_SYSCTL
+	bool "sysctl"
+	default n
+	help
+	  Configure kernel parameters at runtime.
+
+config TOP
+	bool "top"
+	default n
+	help
+	  The top program provides a dynamic real-time view of a running
+	  system.
+
+config FEATURE_TOP_CPU_USAGE_PERCENTAGE
+	bool "Show CPU per-process usage percentage (adds 2k bytes)"
+	default y
+	depends on TOP
+	help
+	  Make top display CPU usage for each process.
+
+config FEATURE_TOP_CPU_GLOBAL_PERCENTS
+	bool "Show CPU global usage percentage (adds 0.5k bytes)"
+	default y
+	depends on FEATURE_TOP_CPU_USAGE_PERCENTAGE
+	help
+	  Makes top display "CPU: NN% usr NN% sys..." line.
+
+config FEATURE_TOP_DECIMALS
+	bool "Show 1/10th of a percent in CPU/mem statistics (adds 0.3k bytes)"
+	default n
+	depends on FEATURE_TOP_CPU_USAGE_PERCENTAGE
+	help
+	  Show 1/10th of a percent in CPU/mem statistics.
+
+config UPTIME
+	bool "uptime"
+	default n
+	help
+	  uptime gives a one line display of the current time, how long
+	  the system has been running, how many users are currently logged
+	  on, and the system load averages for the past 1, 5, and 15 minutes.
+
+config WATCH
+	bool "watch"
+	default n
+	#huh?? select DATE
+	help
+	  watch is used to execute a program periodically, showing
+	  output to the screen.
+
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/procps/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/procps/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/procps/Kbuild	(revision 20)
@@ -0,0 +1,19 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_FREE)	+= free.o
+lib-$(CONFIG_FUSER)	+= fuser.o
+lib-$(CONFIG_KILL)	+= kill.o
+lib-$(CONFIG_ASH)	+= kill.o  # used for built-in kill by ash
+lib-$(CONFIG_NMETER)    += nmeter.o
+lib-$(CONFIG_PIDOF)	+= pidof.o
+lib-$(CONFIG_PS)	+= ps.o
+lib-$(CONFIG_RENICE)	+= renice.o
+lib-$(CONFIG_BB_SYSCTL)	+= sysctl.o
+lib-$(CONFIG_TOP)	+= top.o
+lib-$(CONFIG_UPTIME)	+= uptime.o
+lib-$(CONFIG_WATCH)     += watch.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/procps/ps.posix
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/procps/ps.posix	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/procps/ps.posix	(revision 20)
@@ -0,0 +1,175 @@
+This is what POSIX 2003 says about ps:
+
+By default, ps shall select  all processes with the same effective user
+ID as the current user and the same controlling terminal as the invoker
+
+ps [-aA][-defl][-G grouplist][-o format]...[-p proclist][-t termlist]
+[-U userlist][-g grouplist][-n namelist][-u userlist]
+
+-a     Write information for all processes associated  with  terminals.
+       Implementations may omit session leaders from this list.
+
+-A     Write information for all processes.
+
+-d     Write information for all processes, except session leaders.
+
+-e     Write information for all processes.  (Equivalent to -A.)
+
+-f     Generate  a  full  listing. (See the STDOUT section for the con-
+       tents of a full listing.)
+
+-g  grouplist
+       Write information for processes whose session leaders are  given
+       in grouplist. The application shall ensure that the grouplist is
+       a single argument in the form of a  <blank>  or  comma-separated
+       list.
+
+-G  grouplist
+       Write  information for processes whose real group ID numbers are
+       given in grouplist. The application shall ensure that the  grou-
+       plist  is  a  single argument in the form of a <blank> or comma-
+       separated list.
+
+-l     Generate a long listing. (See STDOUT for the contents of a  long
+       listing.)
+
+-n  namelist
+       Specify the name of an alternative system namelist file in place
+       of the default. The name of the default file and the format of a
+       namelist file are unspecified.
+
+-o  format
+       Write information according to the format specification given in
+       format.  Multiple -o options can be specified; the format speci-
+       fication shall be interpreted as the  <space>-separated concate-
+       nation of all the format option-arguments.
+
+-p  proclist
+       Write  information  for  processes  whose process ID numbers are
+       given in proclist. The application shall ensure  that  the  pro-
+       clist  is  a  single argument in the form of a <blank> or comma-
+       separated list.
+
+-t  termlist
+       Write information for processes associated with terminals  given
+       in termlist. The application shall ensure that the termlist is a
+       single argument in the form  of  a  <blank>  or  comma-separated
+       list.  Terminal identifiers shall be given in an implementation-
+       defined format.    On  XSI-conformant  systems,  they  shall  be
+       given  in  one of two forms: the device's filename (for example,
+       tty04) or, if the device's filename starts with  tty,  just  the
+       identifier following the characters tty (for example, "04" ).
+
+-u  userlist
+       Write  information  for processes whose user ID numbers or login
+       names are given in userlist. The application shall  ensure  that
+       the  userlist  is  a single argument in the form of a <blank> or
+       comma-separated list. In the  listing,  the  numerical  user  ID
+       shall be written unless the -f option is used, in which case the
+       login name shall be written.
+
+-U  userlist
+       Write information for processes whose real user  ID  numbers  or
+       login  names are given in userlist. The application shall ensure
+       that the userlist is a single argument in the form of a  <blank>
+       or comma-separated list.
+
+With  the  exception of -o format, all of the options shown are used to
+select processes. If any are  specified,  the  default  list  shall  be
+ignored  and ps shall select the processes represented by the inclusive
+OR of all the selection-criteria options.
+
+The  -o option allows the output format to be specified under user con-
+trol.
+
+The application shall ensure that the format specification is a list of
+names  presented as a single argument, <blank> or comma-separated. Each
+variable has a default header. The default header can be overridden  by
+appending  an  equals  sign and the new text of the header. The rest of
+the characters in the argument shall be used as the  header  text.  The
+fields specified shall be written in the order specified on the command
+line, and should be arranged in columns in the output. The field widths
+shall  be  selected  by the system to be at least as wide as the header
+text (default or overridden value). If the header text is null, such as
+-o  user=,  the  field  width  shall be at least as wide as the default
+header text. If all header text fields are null, no header  line  shall
+be written.
+
+ruser  The  real user ID of the process. This shall be the textual user
+       ID, if it can be obtained and the field width permits, or a dec-
+       imal representation otherwise.
+
+user   The  effective user ID of the process. This shall be the textual
+       user ID, if it can be obtained and the field width permits, or a
+       decimal representation otherwise.
+
+rgroup The  real  group  ID  of  the process. This shall be the textual
+       group ID, if it can be obtained and the field width permits,  or
+       a decimal representation otherwise.
+
+group  The effective group ID of the process. This shall be the textual
+       group ID, if it can be obtained and the field width permits,  or
+       a decimal representation otherwise.
+
+pid    The decimal value of the process ID.
+
+ppid   The decimal value of the parent process ID.
+
+pgid   The decimal value of the process group ID.
+
+pcpu   The ratio of CPU time used recently to CPU time available in the
+       same  period,  expressed  as  a  percentage.  The   meaning   of
+       "recently"  in  this context is unspecified. The CPU time avail-
+       able is determined in an unspecified manner.
+
+vsz    The size of the process in (virtual) memory in 1024  byte  units
+       as a decimal integer.
+
+nice   The decimal value of the nice value of the process; see nice() .
+
+etime  In the POSIX locale, the elapsed  time  since  the  process  was
+       started, in the form: [[dd-]hh:]mm:ss
+
+time   In the POSIX locale, the cumulative CPU time of the  process  in
+       the form: [dd-]hh:mm:ss
+
+tty    The name of the controlling terminal of the process (if any)  in
+       the same format used by the who utility.
+
+comm   The  name  of  the  command being executed ( argv[0] value) as a
+       string.
+
+args   The command with all its arguments as a string. The  implementa-
+       tion may truncate this value to the field width; it is implemen-
+       tation-defined whether any  further  truncation  occurs.  It  is
+       unspecified  whether  the string represented is a version of the
+       argument list as it was passed to the command when  it  started,
+       or  is a version of the arguments as they may have been modified
+       by the application. Applications cannot depend on being able  to
+       modify  their  argument  list  and  having  that modification be
+       reflected in the output of ps.
+
+Any field need not be meaningful in all implementations. In such a case
+a hyphen ( '-' ) should be output in place of the field value.
+
+Only  comm  and  args  shall be allowed to contain <blank>s; all others
+shall not.
+
+The following table specifies the default header  to  be  used  in  the
+POSIX locale corresponding to each format specifier.
+
+    Format Specifier Default Header Format Specifier Default Header
+    args             COMMAND        ppid             PPID
+    comm             COMMAND        rgroup           RGROUP
+    etime            ELAPSED        ruser            RUSER
+    group            GROUP          time             TIME
+    nice             NI             tty              TT
+    pcpu             %CPU           user             USER
+    pgid             PGID           vsz              VSZ
+    pid              PID
+
+There  is no special quoting mechanism for header text. The header text
+is the rest of the argument. If multiple  header  changes  are  needed,
+multiple -o options can be used, such as:
+
+        ps -o "user=User Name" -o pid=Process\ ID
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/runit/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/runit/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/runit/Config.in	(revision 20)
@@ -0,0 +1,66 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Runit Utilities"
+
+config RUNSV
+	bool "runsv"
+	default n
+	help
+	  runsv starts and monitors a service and optionally an appendant log
+	  service.
+
+config RUNSVDIR
+	bool "runsvdir"
+	default n
+	help
+	  runsvdir starts a runsv process for each subdirectory, or symlink to
+	  a directory, in the services directory dir, up to a limit of 1000
+	  subdirectories, and restarts a runsv process if it terminates.
+
+config SV
+	bool "sv"
+	default n
+	help
+	  sv reports the current status and controls the state of services
+	  monitored by the runsv supervisor.
+
+config SVLOGD
+	bool "svlogd"
+	default n
+	help
+	  svlogd continuously reads log data from its standard input, optionally
+	  filters log messages, and writes the data to one or more automatically
+	  rotated logs.
+
+config CHPST
+	bool "chpst"
+	default n
+	help
+	  chpst changes the process state according to the given options, and
+	  execs specified program.
+
+config SETUIDGID
+	bool "setuidgid"
+	help
+	  Sets soft resource limits as specified by options
+
+config ENVUIDGID
+	bool "envuidgid"
+	help
+	  Sets $UID to account's uid and $GID to account's gid
+
+config ENVDIR
+	bool "envdir"
+	help
+	  Sets various environment variables as specified by files
+	  in the given directory
+
+config SOFTLIMIT
+	bool "softlimit"
+	help
+	  Sets soft resource limits as specified by options
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/runit/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/runit/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/runit/Kbuild	(revision 20)
@@ -0,0 +1,17 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_RUNSV) += runsv.o runit_lib.o
+lib-$(CONFIG_RUNSVDIR) += runsvdir.o runit_lib.o
+lib-$(CONFIG_SV) += sv.o runit_lib.o
+lib-$(CONFIG_SVLOGD) += svlogd.o runit_lib.o
+lib-$(CONFIG_CHPST) += chpst.o
+
+lib-$(CONFIG_ENVDIR) += chpst.o
+lib-$(CONFIG_ENVUIDGID) += chpst.o
+lib-$(CONFIG_SETUIDGID) += chpst.o
+lib-$(CONFIG_SOFTLIMIT) += chpst.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Kbuild	(revision 20)
@@ -0,0 +1,7 @@
+###
+# scripts contains sources for various helper programs used throughout
+# the kernel for the build process.
+# ---------------------------------------------------------------------------
+
+# Let clean descend into subdirs
+subdir- += basic kconfig
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Kbuild.include
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Kbuild.include	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Kbuild.include	(revision 20)
@@ -0,0 +1,154 @@
+####
+# kbuild: Generic definitions
+
+# Convinient variables
+comma   := ,
+squote  := '
+empty   :=
+space   := $(empty) $(empty)
+
+###
+# The temporary file to save gcc -MD generated dependencies must not
+# contain a comma
+depfile = $(subst $(comma),_,$(@D)/.$(@F).d)
+
+###
+# Escape single quote for use in echo statements
+escsq = $(subst $(squote),'\$(squote)',$1)
+
+###
+# filechk is used to check if the content of a generated file is updated.
+# Sample usage:
+# define filechk_sample
+#	echo $KERNELRELEASE
+# endef
+# version.h : Makefile
+#	$(call filechk,sample)
+# The rule defined shall write to stdout the content of the new file.
+# The existing file will be compared with the new one.
+# - If no file exist it is created
+# - If the content differ the new file is used
+# - If they are equal no change, and no timestamp update
+# - stdin is piped in from the first prerequisite ($<) so one has
+#   to specify a valid file as first prerequisite (often the kbuild file)
+define filechk
+	$(Q)set -e;				\
+	echo '  CHK     $@';			\
+	mkdir -p $(dir $@);			\
+	$(filechk_$(1)) < $< > $@.tmp;		\
+	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
+		rm -f $@.tmp;			\
+	else					\
+		echo '  UPD     $@';		\
+		mv -f $@.tmp $@;		\
+	fi
+endef
+
+######
+# gcc support functions
+# See documentation in Documentation/kbuild/makefiles.txt
+
+# as-option
+# Usage: cflags-y += $(call as-option, -Wa$(comma)-isa=foo,)
+
+as-option = $(shell if $(CC) $(CFLAGS) $(1) -Wa,-Z -c -o /dev/null \
+	     -xassembler /dev/null > /dev/null 2>&1; then echo "$(1)"; \
+	     else echo "$(2)"; fi ;)
+
+# cc-option
+# Usage: cflags-y += $(call cc-option, -march=winchip-c6, -march=i586)
+
+cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
+             > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
+
+# hostcc-option
+# Usage: hostcflags-y += $(call hostcc-option, -march=winchip-c6, -march=i586)
+
+hostcc-option = $(shell if $(HOSTCC) $(HOSTCFLAGS) $(1) -S -o /dev/null -xc /dev/null \
+             > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
+
+# cc-option-yn
+# Usage: flag := $(call cc-option-yn, -march=winchip-c6)
+cc-option-yn = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
+                > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
+
+# cc-option-align
+# Prefix align with either -falign or -malign
+cc-option-align = $(subst -functions=0,,\
+	$(call cc-option,-falign-functions=0,-malign-functions=0))
+
+# cc-version
+# Usage gcc-ver := $(call cc-version, $(CC))
+cc-version = $(shell PATH="$(PATH)" $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
+              $(if $(1), $(1), $(CC)))
+
+# cc-ifversion
+# Usage:  EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
+cc-ifversion = $(shell if [ $(call cc-version, $(CC)) $(1) $(2) ]; then \
+                       echo $(3); fi;)
+
+###
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
+# Usage:
+# $(Q)$(MAKE) $(build)=dir
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
+
+# Prefix -I with $(srctree) if it is not an absolute path
+addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
+# Find all -I options and call addtree
+flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
+
+# If quiet is set, only print short version of command
+cmd = @$(echo-cmd) $(cmd_$(1))
+
+# Add $(obj)/ for paths that is not absolute
+objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
+
+###
+# if_changed      - execute command if any prerequisite is newer than
+#                   target, or command line has changed
+# if_changed_dep  - as if_changed, but uses fixdep to reveal dependencies
+#                   including used config symbols
+# if_changed_rule - as if_changed but execute rule instead
+# See Documentation/kbuild/makefiles.txt for more info
+
+ifneq ($(KBUILD_NOCMDDEP),1)
+# Check if both arguments has same arguments. Result in empty string if equal
+# User may override this check using make KBUILD_NOCMDDEP=1
+arg-check = $(strip $(filter-out $(1), $(2)) $(filter-out $(2), $(1)) )
+endif
+
+# echo command. Short version is $(quiet) equals quiet, otherwise full command
+echo-cmd = $(if $($(quiet)cmd_$(1)), \
+	echo '  $(call escsq,$($(quiet)cmd_$(1)))';)
+
+make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))
+
+# function to only execute the passed command if necessary
+# >'< substitution is for echo to work, >$< substitution to preserve $ when reloading .cmd file
+# note: when using inline perl scripts [perl -e '...$$t=1;...'] in $(cmd_xxx) double $$ your perl vars
+#
+if_changed = $(if $(strip $(filter-out $(PHONY),$?)          \
+		$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
+	@set -e; \
+	$(echo-cmd) $(cmd_$(1)); \
+	echo 'cmd_$@ := $(make-cmd)' > $(@D)/.$(@F).cmd)
+
+# execute the command and also postprocess generated .d dependencies
+# file
+if_changed_dep = $(if $(strip $(filter-out $(PHONY),$?)  \
+		$(filter-out FORCE $(wildcard $^),$^)    \
+	$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),     \
+	@set -e; \
+	$(echo-cmd) $(cmd_$(1)); \
+	scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(@D)/.$(@F).tmp; \
+	rm -f $(depfile); \
+	mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)
+
+# Usage: $(call if_changed_rule,foo)
+# will check if $(cmd_foo) changed, or any of the prequisites changed,
+# and if so will execute $(rule_foo)
+if_changed_rule = $(if $(strip $(filter-out $(PHONY),$?)            \
+			$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\
+			@set -e; \
+			$(rule_$(1)))
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.IMA
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.IMA	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.IMA	(revision 20)
@@ -0,0 +1,143 @@
+# This is completely unsupported.
+# Fix COMBINED_COMPILE upstream (in the Kbuild) and propagate
+# the changes back
+srctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
+objtree		:= $(CURDIR)
+src		:= $(srctree)
+obj		:= $(objtree)
+
+default: busybox
+include .config
+ifdef CONFIG_FEATURE_COMPRESS_USAGE
+usage_stuff = include/usage_compressed.h
+endif
+
+# pull in the config stuff
+lib-all-y := applets/applets.o
+lib-y:=
+include procps/Kbuild
+lib-all-y += $(patsubst %,procps/%,$(sort $(lib-y)))
+lib-y:=
+include networking/Kbuild
+lib-all-y += $(patsubst %,networking/%,$(sort $(lib-y)))
+lib-y:=
+include networking/udhcp/Kbuild
+lib-all-y += $(patsubst %,networking/udhcp/%,$(sort $(lib-y)))
+lib-y:=
+include networking/libiproute/Kbuild
+lib-all-y += $(patsubst %,networking/libiproute/%,$(sort $(lib-y)))
+lib-y:=
+include loginutils/Kbuild
+lib-all-y += $(patsubst %,loginutils/%,$(sort $(lib-y)))
+lib-y:=
+include archival/Kbuild
+lib-all-y += $(patsubst %,archival/%,$(sort $(lib-y)))
+lib-y:=
+include archival/libunarchive/Kbuild
+lib-all-y += $(patsubst %,archival/libunarchive/%,$(sort $(lib-y)))
+lib-y:=
+include applets/Kbuild
+lib-all-y += $(patsubst %,applets/%,$(sort $(lib-y)))
+lib-y:=
+include e2fsprogs/Kbuild
+lib-all-y += $(patsubst %,e2fsprogs/%,$(sort $(lib-y)))
+lib-y:=
+#include e2fsprogs/old_e2fsprogs/Kbuild
+#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/%,$(sort $(lib-y)))
+#lib-y:=
+#include e2fsprogs/old_e2fsprogs/ext2fs/Kbuild
+#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/ext2fs/%,$(sort $(lib-y)))
+#lib-y:=
+#include e2fsprogs/old_e2fsprogs/blkid/Kbuild
+#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/blkid/%,$(sort $(lib-y)))
+#lib-y:=
+#include e2fsprogs/old_e2fsprogs/uuid/Kbuild
+#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/uuid/%,$(sort $(lib-y)))
+#lib-y:=
+#include e2fsprogs/old_e2fsprogs/e2p/Kbuild
+#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/e2p/%,$(sort $(lib-y)))
+#lib-y:=
+include debianutils/Kbuild
+lib-all-y += $(patsubst %,debianutils/%,$(sort $(lib-y)))
+lib-y:=
+include runit/Kbuild
+lib-all-y += $(patsubst %,runit/%,$(sort $(lib-y)))
+lib-y:=
+include modutils/Kbuild
+lib-all-y += $(patsubst %,modutils/%,$(sort $(lib-y)))
+lib-y:=
+include miscutils/Kbuild
+lib-all-y += $(patsubst %,miscutils/%,$(sort $(lib-y)))
+lib-y:=
+include coreutils/libcoreutils/Kbuild
+lib-all-y += $(patsubst %,coreutils/libcoreutils/%,$(sort $(lib-y)))
+lib-y:=
+include coreutils/Kbuild
+lib-all-y += $(patsubst %,coreutils/%,$(sort $(lib-y)))
+lib-y:=
+include sysklogd/Kbuild
+lib-all-y += $(patsubst %,sysklogd/%,$(sort $(lib-y)))
+lib-y:=
+include shell/Kbuild
+lib-all-y += $(patsubst %,shell/%,$(sort $(lib-y)))
+lib-y:=
+include console-tools/Kbuild
+lib-all-y += $(patsubst %,console-tools/%,$(sort $(lib-y)))
+lib-y:=
+include findutils/Kbuild
+lib-all-y += $(patsubst %,findutils/%,$(sort $(lib-y)))
+lib-y:=
+include util-linux/Kbuild
+lib-all-y += $(patsubst %,util-linux/%,$(sort $(lib-y)))
+lib-y:=
+include init/Kbuild
+lib-all-y += $(patsubst %,init/%,$(sort $(lib-y)))
+lib-y:=
+include libpwdgrp/Kbuild
+lib-all-y += $(patsubst %,libpwdgrp/%,$(sort $(lib-y)))
+lib-y:=
+include editors/Kbuild
+lib-all-y += $(patsubst %,editors/%,$(sort $(lib-y)))
+lib-y:=
+include selinux/Kbuild
+lib-all-y += $(patsubst %,selinux/%,$(sort $(lib-y)))
+lib-y:=
+include scripts/Kbuild
+lib-all-y += $(patsubst %,scripts/%,$(sort $(lib-y)))
+lib-y:=
+include libbb/Kbuild
+lib-all-y += $(patsubst %,libbb/%,$(sort $(lib-y)))
+lib-y:=
+
+include Makefile.flags
+ifndef BB_VER
+BB_VER:=""
+endif
+
+CPPFLAGS+= -D"KBUILD_STR(s)=\#s" #-Q
+
+HOSTCC = gcc
+AS              = $(CROSS_COMPILE)as
+CC              = $(CROSS_COMPILE)gcc
+LD              = $(CC) -nostdlib
+CPP             = $(CC) -E
+AR              = $(CROSS_COMPILE)ar
+NM              = $(CROSS_COMPILE)nm
+STRIP           = $(CROSS_COMPILE)strip
+OBJCOPY         = $(CROSS_COMPILE)objcopy
+OBJDUMP         = $(CROSS_COMPILE)objdump
+
+WHOLE_PROGRAM:=$(call cc-option,-fwhole-program,)
+busybox: $(usage_stuff)
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) --combine $(WHOLE_PROGRAM) \
+		-funit-at-a-time -Wno-error -std=gnu99  \
+		-o $(@)_unstripped $(lib-all-y:.o=.c) \
+		-Wl,--start-group -lcrypt -lm -Wl,--end-group
+	cp -f $(@)_unstripped $@
+	-$(STRIP) -s -R .note -R .comment -R .version $@
+
+applets/usage:
+	$(HOSTCC) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer      -I$(srctree)/include -o applets/usage applets/usage.c
+include/usage_compressed.h: $(srctree)/include/usage.h applets/usage
+	$(srctree)/applets/usage_compressed include/usage_compressed.h applets
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.build
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.build	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.build	(revision 20)
@@ -0,0 +1,338 @@
+# ==========================================================================
+# Building
+# ==========================================================================
+
+src := $(obj)
+
+PHONY := __build
+__build:
+
+# Read .config if it exist, otherwise ignore
+-include .config
+
+include scripts/Kbuild.include
+
+# The filename Kbuild has precedence over Makefile
+kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
+include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
+
+include scripts/Makefile.lib
+
+ifdef host-progs
+ifneq ($(hostprogs-y),$(host-progs))
+$(warning kbuild: $(obj)/Makefile - Usage of host-progs is deprecated. Please replace with hostprogs-y!)
+hostprogs-y += $(host-progs)
+endif
+endif
+
+# Do not include host rules unles needed
+ifneq ($(hostprogs-y)$(hostprogs-m),)
+include scripts/Makefile.host
+endif
+
+ifneq ($(KBUILD_SRC),)
+# Create output directory if not already present
+_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
+
+# Create directories for object files if directory does not exist
+# Needed when obj-y := dir/file.o syntax is used
+_dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d)))
+endif
+
+
+ifdef EXTRA_TARGETS
+$(warning kbuild: $(obj)/Makefile - Usage of EXTRA_TARGETS is obsolete in 2.6. Please fix!)
+endif
+
+ifdef build-targets
+$(warning kbuild: $(obj)/Makefile - Usage of build-targets is obsolete in 2.6. Please fix!)
+endif
+
+ifdef export-objs
+$(warning kbuild: $(obj)/Makefile - Usage of export-objs is obsolete in 2.6. Please fix!)
+endif
+
+ifdef O_TARGET
+$(warning kbuild: $(obj)/Makefile - Usage of O_TARGET := $(O_TARGET) is obsolete in 2.6. Please fix!)
+endif
+
+ifdef L_TARGET
+$(error kbuild: $(obj)/Makefile - Use of L_TARGET is replaced by lib-y in 2.6. Please fix!)
+endif
+
+ifdef list-multi
+$(warning kbuild: $(obj)/Makefile - list-multi := $(list-multi) is obsolete in 2.6. Please fix!)
+endif
+
+ifndef obj
+$(warning kbuild: Makefile.build is included improperly)
+endif
+
+# ===========================================================================
+
+ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),)
+lib-target := $(obj)/lib.a
+endif
+
+ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(lib-target)),)
+builtin-target := $(obj)/built-in.o
+endif
+
+# We keep a list of all modules in $(MODVERDIR)
+
+__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
+	 $(if $(KBUILD_MODULES),$(obj-m)) \
+	 $(subdir-ym) $(always)
+	@:
+
+# Linus' kernel sanity checking tool
+ifneq ($(KBUILD_CHECKSRC),0)
+  ifeq ($(KBUILD_CHECKSRC),2)
+    quiet_cmd_force_checksrc = CHECK   $<
+          cmd_force_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $< ;
+  else
+      quiet_cmd_checksrc     = CHECK   $<
+            cmd_checksrc     = $(CHECK) $(CHECKFLAGS) $(c_flags) $< ;
+  endif
+endif
+
+
+# Compile C sources (.c)
+# ---------------------------------------------------------------------------
+
+# Default is built-in, unless we know otherwise
+modkern_cflags := $(CFLAGS_KERNEL)
+quiet_modtag := $(empty)   $(empty)
+
+$(real-objs-m)        : modkern_cflags := $(CFLAGS_MODULE)
+$(real-objs-m:.o=.i)  : modkern_cflags := $(CFLAGS_MODULE)
+$(real-objs-m:.o=.s)  : modkern_cflags := $(CFLAGS_MODULE)
+$(real-objs-m:.o=.lst): modkern_cflags := $(CFLAGS_MODULE)
+
+$(real-objs-m)        : quiet_modtag := [M]
+$(real-objs-m:.o=.i)  : quiet_modtag := [M]
+$(real-objs-m:.o=.s)  : quiet_modtag := [M]
+$(real-objs-m:.o=.lst): quiet_modtag := [M]
+
+$(obj-m)              : quiet_modtag := [M]
+
+# Default for not multi-part modules
+modname = $(*F)
+
+$(multi-objs-m)         : modname = $(modname-multi)
+$(multi-objs-m:.o=.i)   : modname = $(modname-multi)
+$(multi-objs-m:.o=.s)   : modname = $(modname-multi)
+$(multi-objs-m:.o=.lst) : modname = $(modname-multi)
+$(multi-objs-y)         : modname = $(modname-multi)
+$(multi-objs-y:.o=.i)   : modname = $(modname-multi)
+$(multi-objs-y:.o=.s)   : modname = $(modname-multi)
+$(multi-objs-y:.o=.lst) : modname = $(modname-multi)
+
+quiet_cmd_cc_s_c = CC $(quiet_modtag)  $@
+cmd_cc_s_c       = $(CC) $(c_flags) -fverbose-asm -S -o $@ $<
+
+%.s: %.c FORCE
+	$(call if_changed_dep,cc_s_c)
+
+quiet_cmd_cc_i_c = CPP $(quiet_modtag) $@
+cmd_cc_i_c       = $(CPP) $(c_flags)   -o $@ $<
+
+%.i: %.c FORCE
+	$(call if_changed_dep,cc_i_c)
+
+# C (.c) files
+# The C file is compiled and updated dependency information is generated.
+# (See cmd_cc_o_c + relevant part of rule_cc_o_c)
+
+quiet_cmd_cc_o_c = CC $(quiet_modtag)  $@
+
+ifndef CONFIG_MODVERSIONS
+cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
+
+else
+# When module versioning is enabled the following steps are executed:
+# o compile a .tmp_<file>.o from <file>.c
+# o if .tmp_<file>.o doesn't contain a __ksymtab version, i.e. does
+#   not export symbols, we just rename .tmp_<file>.o to <file>.o and
+#   are done.
+# o otherwise, we calculate symbol versions using the good old
+#   genksyms on the preprocessed source and postprocess them in a way
+#   that they are usable as a linker script
+# o generate <file>.o from .tmp_<file>.o using the linker to
+#   replace the unresolved symbols __crc_exported_symbol with
+#   the actual value of the checksum generated by genksyms
+
+cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
+cmd_modversions =							\
+	if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then	\
+		$(CPP) -D__GENKSYMS__ $(c_flags) $<			\
+		| $(GENKSYMS) -a $(ARCH)				\
+		> $(@D)/.tmp_$(@F:.o=.ver);				\
+									\
+		$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) 		\
+			-T $(@D)/.tmp_$(@F:.o=.ver);			\
+		rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver);	\
+	else								\
+		mv -f $(@D)/.tmp_$(@F) $@;				\
+	fi;
+endif
+
+define rule_cc_o_c
+	$(call echo-cmd,checksrc) $(cmd_checksrc)			  \
+	$(call echo-cmd,cc_o_c) $(cmd_cc_o_c);				  \
+	$(cmd_modversions)						  \
+	scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > $(@D)/.$(@F).tmp;  \
+	rm -f $(depfile);						  \
+	mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd
+endef
+
+# Built-in and composite module parts
+
+%.o: %.c FORCE
+	$(call cmd,force_checksrc)
+	$(call if_changed_rule,cc_o_c)
+
+# Single-part modules are special since we need to mark them in $(MODVERDIR)
+
+$(single-used-m): %.o: %.c FORCE
+	$(call cmd,force_checksrc)
+	$(call if_changed_rule,cc_o_c)
+	@{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
+
+quiet_cmd_cc_lst_c = MKLST   $@
+      cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \
+		     $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \
+				     System.map $(OBJDUMP) > $@
+
+%.lst: %.c FORCE
+	$(call if_changed_dep,cc_lst_c)
+
+# Compile assembler sources (.S)
+# ---------------------------------------------------------------------------
+
+modkern_aflags := $(AFLAGS_KERNEL)
+
+$(real-objs-m)      : modkern_aflags := $(AFLAGS_MODULE)
+$(real-objs-m:.o=.s): modkern_aflags := $(AFLAGS_MODULE)
+
+quiet_cmd_as_s_S = CPP $(quiet_modtag) $@
+cmd_as_s_S       = $(CPP) $(a_flags)   -o $@ $<
+
+%.s: %.S FORCE
+	$(call if_changed_dep,as_s_S)
+
+quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
+cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $<
+
+%.o: %.S FORCE
+	$(call if_changed_dep,as_o_S)
+
+targets += $(real-objs-y) $(real-objs-m) $(lib-y)
+targets += $(extra-y) $(MAKECMDGOALS) $(always)
+
+# Linker scripts preprocessor (.lds.S -> .lds)
+# ---------------------------------------------------------------------------
+quiet_cmd_cpp_lds_S = LDS     $@
+      cmd_cpp_lds_S = $(CPP) $(cpp_flags) -D__ASSEMBLY__ -o $@ $<
+
+%.lds: %.lds.S FORCE
+	$(call if_changed_dep,cpp_lds_S)
+
+# Build the compiled-in targets
+# ---------------------------------------------------------------------------
+
+# To build objects in subdirs, we need to descend into the directories
+$(sort $(subdir-obj-y)): $(subdir-ym) ;
+
+#
+# Rule to compile a set of .o files into one .o file
+#
+ifdef builtin-target
+quiet_cmd_link_o_target = LD      $@
+# If the list of objects to link is empty, just create an empty built-in.o
+cmd_link_o_target = $(if $(strip $(obj-y)),\
+		      $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^),\
+		      rm -f $@; $(AR) rcs $@)
+
+$(builtin-target): $(obj-y) FORCE
+	$(call if_changed,link_o_target)
+
+targets += $(builtin-target)
+endif # builtin-target
+
+#
+# Rule to compile a set of .o files into one .a file
+#
+ifdef lib-target
+quiet_cmd_link_l_target = AR      $@
+cmd_link_l_target = rm -f $@; $(AR) $(EXTRA_ARFLAGS) rcs $@ $(lib-y)
+
+$(lib-target): $(lib-y) FORCE
+	$(call if_changed,link_l_target)
+
+targets += $(lib-target)
+endif
+
+#
+# Rule to link composite objects
+#
+#  Composite objects are specified in kbuild makefile as follows:
+#    <composite-object>-objs := <list of .o files>
+#  or
+#    <composite-object>-y    := <list of .o files>
+link_multi_deps =                     \
+$(filter $(addprefix $(obj)/,         \
+$($(subst $(obj)/,,$(@:.o=-objs)))    \
+$($(subst $(obj)/,,$(@:.o=-y)))), $^)
+
+quiet_cmd_link_multi-y = LD      $@
+cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps)
+
+quiet_cmd_link_multi-m = LD [M]  $@
+cmd_link_multi-m = $(LD) $(ld_flags) $(LDFLAGS_MODULE) -o $@ $(link_multi_deps)
+
+# We would rather have a list of rules like
+# 	foo.o: $(foo-objs)
+# but that's not so easy, so we rather make all composite objects depend
+# on the set of all their parts
+$(multi-used-y) : %.o: $(multi-objs-y) FORCE
+	$(call if_changed,link_multi-y)
+
+$(multi-used-m) : %.o: $(multi-objs-m) FORCE
+	$(call if_changed,link_multi-m)
+	@{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod)
+
+targets += $(multi-used-y) $(multi-used-m)
+
+
+# Descending
+# ---------------------------------------------------------------------------
+
+PHONY += $(subdir-ym)
+$(subdir-ym):
+	$(Q)$(MAKE) $(build)=$@
+
+# Add FORCE to the prequisites of a target to force it to be always rebuilt.
+# ---------------------------------------------------------------------------
+
+PHONY += FORCE
+
+FORCE:
+
+# Read all saved command lines and dependencies for the $(targets) we
+# may be building above, using $(if_changed{,_dep}). As an
+# optimization, we don't need to read them if the target does not
+# exist, we will rebuild anyway in that case.
+
+targets := $(wildcard $(sort $(targets)))
+cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
+
+ifneq ($(cmd_files),)
+  include $(cmd_files)
+endif
+
+
+# Declare the contents of the .PHONY variable as phony.  We keep that
+# information in a variable se we can use it in if_changed and friends.
+
+.PHONY: $(PHONY)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.clean
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.clean	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.clean	(revision 20)
@@ -0,0 +1,102 @@
+# ==========================================================================
+# Cleaning up
+# ==========================================================================
+
+src := $(obj)
+
+PHONY := __clean
+__clean:
+
+# Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir
+# Usage:
+# $(Q)$(MAKE) $(clean)=dir
+clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
+
+# The filename Kbuild has precedence over Makefile
+kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
+include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
+
+# Figure out what we need to build from the various variables
+# ==========================================================================
+
+__subdir-y	:= $(patsubst %/,%,$(filter %/, $(obj-y)))
+subdir-y	+= $(__subdir-y)
+__subdir-m	:= $(patsubst %/,%,$(filter %/, $(obj-m)))
+subdir-m	+= $(__subdir-m)
+__subdir-n	:= $(patsubst %/,%,$(filter %/, $(obj-n)))
+subdir-n	+= $(__subdir-n)
+__subdir-	:= $(patsubst %/,%,$(filter %/, $(obj-)))
+subdir-		+= $(__subdir-)
+
+# Subdirectories we need to descend into
+
+subdir-ym	:= $(sort $(subdir-y) $(subdir-m))
+subdir-ymn      := $(sort $(subdir-ym) $(subdir-n) $(subdir-))
+
+# Add subdir path
+
+subdir-ymn	:= $(addprefix $(obj)/,$(subdir-ymn))
+
+# build a list of files to remove, usually releative to the current
+# directory
+
+__clean-files	:= $(extra-y) $(EXTRA_TARGETS) $(always) \
+		   $(targets) $(clean-files)             \
+		   $(host-progs)                         \
+		   $(hostprogs-y) $(hostprogs-m) $(hostprogs-)
+
+# as clean-files is given relative to the current directory, this adds
+# a $(obj) prefix, except for absolute paths
+
+__clean-files   := $(wildcard                                               \
+                   $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \
+		   $(filter /%, $(__clean-files)))
+
+# as clean-dirs is given relative to the current directory, this adds
+# a $(obj) prefix, except for absolute paths
+
+__clean-dirs    := $(wildcard                                               \
+                   $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs)))    \
+		   $(filter /%, $(clean-dirs)))
+
+# ==========================================================================
+
+quiet_cmd_clean    = CLEAN   $(obj)
+      cmd_clean    = rm -f $(__clean-files)
+quiet_cmd_cleandir = CLEAN   $(__clean-dirs)
+      cmd_cleandir = rm -rf $(__clean-dirs)
+
+
+__clean: $(subdir-ymn)
+ifneq ($(strip $(__clean-files)),)
+	+$(call cmd,clean)
+endif
+ifneq ($(strip $(__clean-dirs)),)
+	+$(call cmd,cleandir)
+endif
+ifneq ($(strip $(clean-rule)),)
+	+$(clean-rule)
+endif
+	@:
+
+
+# ===========================================================================
+# Generic stuff
+# ===========================================================================
+
+# Descending
+# ---------------------------------------------------------------------------
+
+PHONY += $(subdir-ymn)
+$(subdir-ymn):
+	$(Q)$(MAKE) $(clean)=$@
+
+# If quiet is set, only print short version of command
+
+cmd = @$(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
+
+
+# Declare the contents of the .PHONY variable as phony.  We keep that
+# information in a variable se we can use it in if_changed and friends.
+
+.PHONY: $(PHONY)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.host
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.host	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.host	(revision 20)
@@ -0,0 +1,156 @@
+# ==========================================================================
+# Building binaries on the host system
+# Binaries are used during the compilation of the kernel, for example
+# to preprocess a data file.
+#
+# Both C and C++ is supported, but preferred language is C for such utilities.
+#
+# Samle syntax (see Documentation/kbuild/makefile.txt for reference)
+# hostprogs-y := bin2hex
+# Will compile bin2hex.c and create an executable named bin2hex
+#
+# hostprogs-y    := lxdialog
+# lxdialog-objs := checklist.o lxdialog.o
+# Will compile lxdialog.c and checklist.c, and then link the executable
+# lxdialog, based on checklist.o and lxdialog.o
+#
+# hostprogs-y      := qconf
+# qconf-cxxobjs   := qconf.o
+# qconf-objs      := menu.o
+# Will compile qconf as a C++ program, and menu as a C program.
+# They are linked as C++ code to the executable qconf
+
+# hostprogs-y := conf
+# conf-objs  := conf.o libkconfig.so
+# libkconfig-objs := expr.o type.o
+# Will create a shared library named libkconfig.so that consist of
+# expr.o and type.o (they are both compiled as C code and the object file
+# are made as position independent code).
+# conf.c is compiled as a c program, and conf.o is linked together with
+# libkconfig.so as the executable conf.
+# Note: Shared libraries consisting of C++ files are not supported
+
+__hostprogs := $(sort $(hostprogs-y)$(hostprogs-m))
+
+# hostprogs-y := tools/build may have been specified. Retreive directory
+obj-dirs += $(foreach f,$(__hostprogs), $(if $(dir $(f)),$(dir $(f))))
+obj-dirs := $(strip $(sort $(filter-out ./,$(obj-dirs))))
+
+
+# C code
+# Executables compiled from a single .c file
+host-csingle	:= $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
+
+# C executables linked based on several .o files
+host-cmulti	:= $(foreach m,$(__hostprogs),\
+		   $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
+
+# Object (.o) files compiled from .c files
+host-cobjs	:= $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
+
+# C++ code
+# C++ executables compiled from at least on .cc file
+# and zero or more .c files
+host-cxxmulti	:= $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m)))
+
+# C++ Object (.o) files compiled from .cc files
+host-cxxobjs	:= $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs)))
+
+# Shared libaries (only .c supported)
+# Shared libraries (.so) - all .so files referenced in "xxx-objs"
+host-cshlib	:= $(sort $(filter %.so, $(host-cobjs)))
+# Remove .so files from "xxx-objs"
+host-cobjs	:= $(filter-out %.so,$(host-cobjs))
+
+#Object (.o) files used by the shared libaries
+host-cshobjs	:= $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs))))
+
+__hostprogs     := $(addprefix $(obj)/,$(__hostprogs))
+host-csingle	:= $(addprefix $(obj)/,$(host-csingle))
+host-cmulti	:= $(addprefix $(obj)/,$(host-cmulti))
+host-cobjs	:= $(addprefix $(obj)/,$(host-cobjs))
+host-cxxmulti	:= $(addprefix $(obj)/,$(host-cxxmulti))
+host-cxxobjs	:= $(addprefix $(obj)/,$(host-cxxobjs))
+host-cshlib	:= $(addprefix $(obj)/,$(host-cshlib))
+host-cshobjs	:= $(addprefix $(obj)/,$(host-cshobjs))
+obj-dirs        := $(addprefix $(obj)/,$(obj-dirs))
+
+#####
+# Handle options to gcc. Support building with separate output directory
+
+_hostc_flags   = $(HOSTCFLAGS)   $(HOST_EXTRACFLAGS)   $(HOSTCFLAGS_$(*F).o)
+_hostcxx_flags = $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) $(HOSTCXXFLAGS_$(*F).o)
+
+ifeq ($(KBUILD_SRC),)
+__hostc_flags	= $(_hostc_flags)
+__hostcxx_flags	= $(_hostcxx_flags)
+else
+__hostc_flags	= -I$(obj) $(call flags,_hostc_flags)
+__hostcxx_flags	= -I$(obj) $(call flags,_hostcxx_flags)
+endif
+
+hostc_flags    = -Wp,-MD,$(depfile) $(__hostc_flags)
+hostcxx_flags  = -Wp,-MD,$(depfile) $(__hostcxx_flags)
+
+#####
+# Compile programs on the host
+
+# Create executable from a single .c file
+# host-csingle -> Executable
+quiet_cmd_host-csingle 	= HOSTCC  $@
+      cmd_host-csingle	= $(HOSTCC) $(hostc_flags) -o $@ $< \
+	  	$(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
+$(host-csingle): %: %.c FORCE
+	$(call if_changed_dep,host-csingle)
+
+# Link an executable based on list of .o files, all plain c
+# host-cmulti -> executable
+quiet_cmd_host-cmulti	= HOSTLD  $@
+      cmd_host-cmulti	= $(HOSTCC) $(HOSTLDFLAGS) -o $@ \
+			  $(addprefix $(obj)/,$($(@F)-objs)) \
+			  $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
+$(host-cmulti): %: $(host-cobjs) $(host-cshlib) FORCE
+	$(call if_changed,host-cmulti)
+
+# Create .o file from a single .c file
+# host-cobjs -> .o
+quiet_cmd_host-cobjs	= HOSTCC  $@
+      cmd_host-cobjs	= $(HOSTCC) $(hostc_flags) -c -o $@ $<
+$(host-cobjs): %.o: %.c FORCE
+	$(call if_changed_dep,host-cobjs)
+
+# Link an executable based on list of .o files, a mixture of .c and .cc
+# host-cxxmulti -> executable
+quiet_cmd_host-cxxmulti	= HOSTLD  $@
+      cmd_host-cxxmulti	= $(HOSTCXX) $(HOSTLDFLAGS) -o $@ \
+			  $(foreach o,objs cxxobjs,\
+			  $(addprefix $(obj)/,$($(@F)-$(o)))) \
+			  $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
+$(host-cxxmulti): %: $(host-cobjs) $(host-cxxobjs) $(host-cshlib) FORCE
+	$(call if_changed,host-cxxmulti)
+
+# Create .o file from a single .cc (C++) file
+quiet_cmd_host-cxxobjs	= HOSTCXX $@
+      cmd_host-cxxobjs	= $(HOSTCXX) $(hostcxx_flags) -c -o $@ $<
+$(host-cxxobjs): %.o: %.cc FORCE
+	$(call if_changed_dep,host-cxxobjs)
+
+# Compile .c file, create position independent .o file
+# host-cshobjs -> .o
+quiet_cmd_host-cshobjs	= HOSTCC  -fPIC $@
+      cmd_host-cshobjs	= $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $<
+$(host-cshobjs): %.o: %.c FORCE
+	$(call if_changed_dep,host-cshobjs)
+
+# Link a shared library, based on position independent .o files
+# *.o -> .so shared library (host-cshlib)
+quiet_cmd_host-cshlib	= HOSTLLD -shared $@
+      cmd_host-cshlib	= $(HOSTCC) $(HOSTLDFLAGS) -shared -o $@ \
+			  $(addprefix $(obj)/,$($(@F:.so=-objs))) \
+			  $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
+$(host-cshlib): %: $(host-cshobjs) FORCE
+	$(call if_changed,host-cshlib)
+
+targets += $(host-csingle)  $(host-cmulti) $(host-cobjs)\
+	   $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.lib
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.lib	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/Makefile.lib	(revision 20)
@@ -0,0 +1,165 @@
+# Backward compatibility - to be removed...
+extra-y	+= $(EXTRA_TARGETS)
+# Figure out what we need to build from the various variables
+# ===========================================================================
+
+# When an object is listed to be built compiled-in and modular,
+# only build the compiled-in version
+
+obj-m := $(filter-out $(obj-y),$(obj-m))
+
+# Libraries are always collected in one lib file.
+# Filter out objects already built-in
+
+lib-y := $(filter-out $(obj-y), $(sort $(lib-y) $(lib-m)))
+
+
+# Handle objects in subdirs
+# ---------------------------------------------------------------------------
+# o if we encounter foo/ in $(obj-y), replace it by foo/built-in.o
+#   and add the directory to the list of dirs to descend into: $(subdir-y)
+# o if we encounter foo/ in $(obj-m), remove it from $(obj-m)
+#   and add the directory to the list of dirs to descend into: $(subdir-m)
+
+__subdir-y	:= $(patsubst %/,%,$(filter %/, $(obj-y)))
+subdir-y	+= $(__subdir-y)
+__subdir-m	:= $(patsubst %/,%,$(filter %/, $(obj-m)))
+subdir-m	+= $(__subdir-m)
+obj-y		:= $(patsubst %/, %/built-in.o, $(obj-y))
+obj-m		:= $(filter-out %/, $(obj-m))
+
+# Subdirectories we need to descend into
+
+subdir-ym	:= $(sort $(subdir-y) $(subdir-m))
+
+# if $(foo-objs) exists, foo.o is a composite object
+multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
+multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
+multi-used   := $(multi-used-y) $(multi-used-m)
+single-used-m := $(sort $(filter-out $(multi-used-m),$(obj-m)))
+
+# Build list of the parts of our composite objects, our composite
+# objects depend on those (obviously)
+multi-objs-y := $(foreach m, $(multi-used-y), $($(m:.o=-objs)) $($(m:.o=-y)))
+multi-objs-m := $(foreach m, $(multi-used-m), $($(m:.o=-objs)) $($(m:.o=-y)))
+multi-objs   := $(multi-objs-y) $(multi-objs-m)
+
+# $(subdir-obj-y) is the list of objects in $(obj-y) which do not live
+# in the local directory
+subdir-obj-y := $(foreach o,$(obj-y),$(if $(filter-out $(o),$(notdir $(o))),$(o)))
+
+# $(obj-dirs) is a list of directories that contain object files
+obj-dirs := $(dir $(multi-objs) $(subdir-obj-y))
+
+# Replace multi-part objects by their individual parts, look at local dir only
+real-objs-y := $(foreach m, $(filter-out $(subdir-obj-y), $(obj-y)), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) $(extra-y)
+real-objs-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m)))
+
+# Add subdir path
+
+extra-y		:= $(addprefix $(obj)/,$(extra-y))
+always		:= $(addprefix $(obj)/,$(always))
+targets		:= $(addprefix $(obj)/,$(targets))
+obj-y		:= $(addprefix $(obj)/,$(obj-y))
+obj-m		:= $(addprefix $(obj)/,$(obj-m))
+lib-y		:= $(addprefix $(obj)/,$(lib-y))
+subdir-obj-y	:= $(addprefix $(obj)/,$(subdir-obj-y))
+real-objs-y	:= $(addprefix $(obj)/,$(real-objs-y))
+real-objs-m	:= $(addprefix $(obj)/,$(real-objs-m))
+single-used-m	:= $(addprefix $(obj)/,$(single-used-m))
+multi-used-y	:= $(addprefix $(obj)/,$(multi-used-y))
+multi-used-m	:= $(addprefix $(obj)/,$(multi-used-m))
+multi-objs-y	:= $(addprefix $(obj)/,$(multi-objs-y))
+multi-objs-m	:= $(addprefix $(obj)/,$(multi-objs-m))
+subdir-ym	:= $(addprefix $(obj)/,$(subdir-ym))
+obj-dirs	:= $(addprefix $(obj)/,$(obj-dirs))
+
+# These flags are needed for modversions and compiling, so we define them here
+# already
+# $(modname_flags) #defines KBUILD_MODNAME as the name of the module it will
+# end up in (or would, if it gets compiled in)
+# Note: It's possible that one object gets potentially linked into more
+#       than one module. In that case KBUILD_MODNAME will be set to foo_bar,
+#       where foo and bar are the name of the modules.
+name-fix = $(subst $(comma),_,$(subst -,_,$1))
+basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(*F)))"
+modname_flags  = $(if $(filter 1,$(words $(modname))),\
+                 -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))")
+
+_c_flags       = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o)
+_a_flags       = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o)
+_cpp_flags     = $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CPPFLAGS_$(@F))
+
+# If building the kernel in a separate objtree expand all occurrences
+# of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
+
+ifeq ($(KBUILD_SRC),)
+__c_flags	= $(_c_flags)
+__a_flags	= $(_a_flags)
+__cpp_flags     = $(_cpp_flags)
+else
+
+# -I$(obj) locates generated .h files
+# $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
+#   and locates generated .h files
+# FIXME: Replace both with specific CFLAGS* statements in the makefiles
+__c_flags	= $(call addtree,-I$(obj)) $(call flags,_c_flags)
+__a_flags	=                          $(call flags,_a_flags)
+__cpp_flags     =                          $(call flags,_cpp_flags)
+endif
+
+c_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
+		 $(__c_flags) $(modkern_cflags) \
+		 -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags)
+
+a_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
+		 $(__a_flags) $(modkern_aflags)
+
+cpp_flags      = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(__cpp_flags)
+
+ld_flags       = $(LDFLAGS) $(EXTRA_LDFLAGS)
+
+# Finds the multi-part object the current object will be linked into
+modname-multi = $(sort $(foreach m,$(multi-used),\
+		$(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=))))
+
+# Shipped files
+# ===========================================================================
+
+quiet_cmd_shipped = SHIPPED $@
+cmd_shipped = cat $< > $@
+
+$(obj)/%:: $(src)/%_shipped
+	$(call cmd,shipped)
+
+# Commands useful for building a boot image
+# ===========================================================================
+#
+#	Use as following:
+#
+#	target: source(s) FORCE
+#		$(if_changed,ld/objcopy/gzip)
+#
+#	and add target to EXTRA_TARGETS so that we know we have to
+#	read in the saved command line
+
+# Linking
+# ---------------------------------------------------------------------------
+
+quiet_cmd_ld = LD      $@
+cmd_ld = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$(@F)) \
+	       $(filter-out FORCE,$^) -o $@
+
+# Objcopy
+# ---------------------------------------------------------------------------
+
+quiet_cmd_objcopy = OBJCOPY $@
+cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
+
+# Gzip
+# ---------------------------------------------------------------------------
+
+quiet_cmd_gzip = GZIP    $@
+cmd_gzip = gzip -f -9 < $< > $@
+
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.docproc.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.docproc.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.docproc.cmd	(revision 20)
@@ -0,0 +1,94 @@
+cmd_scripts/basic/docproc := gcc -Wp,-MD,scripts/basic/.docproc.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/docproc scripts/basic/docproc.c  
+
+deps_scripts/basic/docproc := \
+  scripts/basic/docproc.c \
+  /usr/include/stdio.h \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/.h) \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/ern/inlines.h) \
+    $(wildcard include/config/tify/level.h) \
+  /usr/include/features.h \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/ix199506.h) \
+    $(wildcard include/config/en/extended.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/i.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/bits/types.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/include/stdlib.h \
+  /usr/include/sys/types.h \
+  /usr/include/time.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/alloca.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  /usr/include/ctype.h \
+  /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h \
+  /usr/include/bits/confname.h \
+  /usr/include/getopt.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h \
+  /usr/include/limits.h \
+  /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h \
+  /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h \
+  /usr/include/sys/wait.h \
+  /usr/include/signal.h \
+  /usr/include/bits/signum.h \
+  /usr/include/bits/siginfo.h \
+  /usr/include/bits/sigaction.h \
+  /usr/include/bits/sigcontext.h \
+  /usr/include/asm/sigcontext.h \
+  /usr/include/asm-i386/sigcontext.h \
+  /usr/include/bits/sigstack.h \
+  /usr/include/bits/sigthread.h \
+  /usr/include/sys/resource.h \
+  /usr/include/bits/resource.h \
+  /usr/include/bits/waitflags.h \
+  /usr/include/bits/waitstatus.h \
+
+scripts/basic/docproc: $(deps_scripts/basic/docproc)
+
+$(deps_scripts/basic/docproc):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.fixdep.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.fixdep.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.fixdep.cmd	(revision 20)
@@ -0,0 +1,105 @@
+cmd_scripts/basic/fixdep := gcc -Wp,-MD,scripts/basic/.fixdep.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/fixdep scripts/basic/fixdep.c  
+
+deps_scripts/basic/fixdep := \
+  scripts/basic/fixdep.c \
+    $(wildcard include/config/his/driver.h) \
+    $(wildcard include/config/my/option.h) \
+    $(wildcard include/config/.h) \
+    $(wildcard include/config/foo.h) \
+    $(wildcard include/config/boom.h) \
+    $(wildcard include/config/4.h) \
+  /usr/include/sys/types.h \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/ix199506.h) \
+  /usr/include/features.h \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/en/extended.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/tify/level.h) \
+    $(wildcard include/config/i.h) \
+    $(wildcard include/config/ern/inlines.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/include/bits/types.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/time.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/sys/stat.h \
+  /usr/include/bits/stat.h \
+  /usr/include/sys/mman.h \
+  /usr/include/bits/mman.h \
+  /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h \
+  /usr/include/bits/confname.h \
+  /usr/include/getopt.h \
+  /usr/include/fcntl.h \
+  /usr/include/bits/fcntl.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  /usr/include/stdlib.h \
+  /usr/include/alloca.h \
+  /usr/include/stdio.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h \
+  /usr/include/limits.h \
+  /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h \
+  /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h \
+  /usr/include/ctype.h \
+  /usr/include/arpa/inet.h \
+  /usr/include/netinet/in.h \
+  /usr/include/stdint.h \
+  /usr/include/sys/socket.h \
+  /usr/include/sys/uio.h \
+  /usr/include/bits/uio.h \
+  /usr/include/bits/socket.h \
+  /usr/include/bits/sockaddr.h \
+  /usr/include/asm/socket.h \
+  /usr/include/asm-i386/socket.h \
+  /usr/include/asm/sockios.h \
+  /usr/include/asm-i386/sockios.h \
+  /usr/include/bits/in.h \
+  /usr/include/bits/byteswap.h \
+
+scripts/basic/fixdep: $(deps_scripts/basic/fixdep)
+
+$(deps_scripts/basic/fixdep):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.split-include.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.split-include.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/.split-include.cmd	(revision 20)
@@ -0,0 +1,84 @@
+cmd_scripts/basic/split-include := gcc -Wp,-MD,scripts/basic/.split-include.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/split-include scripts/basic/split-include.c  
+
+deps_scripts/basic/split-include := \
+  scripts/basic/split-include.c \
+    $(wildcard include/config/.h) \
+  /usr/include/sys/stat.h \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/en/extended.h) \
+  /usr/include/features.h \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/ix199506.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/tify/level.h) \
+    $(wildcard include/config/i.h) \
+    $(wildcard include/config/ern/inlines.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/include/bits/types.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/time.h \
+  /usr/include/bits/stat.h \
+  /usr/include/sys/types.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/ctype.h \
+  /usr/include/errno.h \
+  /usr/include/bits/errno.h \
+  /usr/include/linux/errno.h \
+  /usr/include/asm/errno.h \
+  /usr/include/asm-i386/errno.h \
+  /usr/include/asm-generic/errno.h \
+  /usr/include/asm-generic/errno-base.h \
+  /usr/include/fcntl.h \
+  /usr/include/bits/fcntl.h \
+  /usr/include/stdio.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/include/stdlib.h \
+  /usr/include/alloca.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h \
+  /usr/include/bits/confname.h \
+  /usr/include/getopt.h \
+
+scripts/basic/split-include: $(deps_scripts/basic/split-include)
+
+$(deps_scripts/basic/split-include):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/Makefile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/Makefile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/basic/Makefile	(revision 20)
@@ -0,0 +1,18 @@
+###
+# Makefile.basic list the most basic programs used during the build process.
+# The programs listed herein is what is needed to do the basic stuff,
+# such as splitting .config and fix dependency file.
+# This initial step is needed to avoid files to be recompiled
+# when busybox configuration changes (which is what happens when
+# .config is included by main Makefile.
+# ---------------------------------------------------------------------------
+# fixdep: 	 Used to generate dependency information during build process
+# split-include: Divide all config symbols up in a number of files in
+#                include/config/...
+# docproc:	 Used in Documentation/docbook
+
+hostprogs-y	:= fixdep split-include docproc
+always		:= $(hostprogs-y)
+
+# fixdep is needed to compile other host programs
+$(addprefix $(obj)/,$(filter-out fixdep,$(always))): $(obj)/fixdep
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/bloat-o-meter
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/bloat-o-meter	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/bloat-o-meter	(revision 20)
@@ -0,0 +1,70 @@
+#!/usr/bin/python
+#
+# Copyright 2004 Matt Mackall <mpm@selenic.com>
+#
+# inspired by perl Bloat-O-Meter (c) 1997 by Andi Kleen
+#
+# This software may be used and distributed according to the terms
+# of the GNU General Public License, incorporated herein by reference.
+
+import sys, os, re
+
+if len(sys.argv) != 3:
+    sys.stderr.write("usage: %s file1 file2\n" % sys.argv[0])
+    sys.exit(-1)
+
+for f in sys.argv[1], sys.argv[2]:
+    if not os.path.exists(f):
+        sys.stderr.write("Error: file '%s' does not exist\n" % f)
+        sys.exit(-1)
+
+def getsizes(file):
+    sym = {}
+    for l in os.popen("nm --size-sort " + file).readlines():
+        size, type, name = l[:-1].split()
+        if type in "tTdDbBrR":
+            if "." in name: name = "static." + name.split(".")[0]
+            sym[name] = sym.get(name, 0) + int(size, 16)
+    for l in os.popen("readelf -S " + file).readlines():
+        x = l.split()
+        if len(x)<6 or x[1] != ".rodata": continue
+        sym[".rodata"] = int(x[5], 16)
+    return sym
+
+old = getsizes(sys.argv[1])
+new = getsizes(sys.argv[2])
+grow, shrink, add, remove, up, down = 0, 0, 0, 0, 0, 0
+delta, common = [], {}
+
+for a in old:
+    if a in new:
+        common[a] = 1
+
+for name in old:
+    if name not in common:
+        remove += 1
+        down += old[name]
+        delta.append((-old[name], name))
+
+for name in new:
+    if name not in common:
+        add += 1
+        up += new[name]
+        delta.append((new[name], name))
+
+for name in common:
+        d = new.get(name, 0) - old.get(name, 0)
+        if d>0: grow, up = grow+1, up+d
+        if d<0: shrink, down = shrink+1, down-d
+        delta.append((d, name))
+
+delta.sort()
+delta.reverse()
+
+print "%-48s %7s %7s %+7s" % ("function", "old", "new", "delta")
+for d, n in delta:
+    if d: print "%-48s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d)
+print "-"*78
+total="(add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s)%%sTotal: %s bytes"\
+    % (add, remove, grow, shrink, up, -down, up-down)
+print total % (" "*(80-len(total)))
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/checkhelp.awk
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/checkhelp.awk	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/checkhelp.awk	(revision 20)
@@ -0,0 +1,40 @@
+#!/usr/bin/awk -f
+# AWK script to check for missing help entries for config options
+#
+# Copyright (C) 2006 Bernhard Fischer
+#
+# This file is distributed under the terms and conditions of the
+# MIT/X public licenses. See http://opensource.org/licenses/mit-license.html
+# and notice http://www.gnu.org/licenses/license-list.html#X11License
+
+
+/^choice/ { is_choice = 1; }
+/^endchoice/ { is_choice = 0; }
+/^config/ {
+	pos++;
+	conf[pos] = $2;
+	file[pos] = FILENAME;
+	if (is_choice) {
+		help[pos] = 1; # do not warn about 'choice' config entries.
+	} else {
+		help[pos] = 0;
+	}
+}
+/^[ \t]*help[ \t]*$/ {
+	help[pos] = 1;
+}
+/^[ \t]*bool[ \t]*$/ {
+	help[pos] = 1; # ignore options which are not selectable
+}
+BEGIN {
+	pos = -1;
+	is_choice = 0;
+}
+END {
+	for (i = 0; i <= pos; i++) {
+# 	printf("%s: help for #%i '%s' == %i\n", file[i], i, conf[i], help[i]);
+		if (help[i] == 0) {
+			printf("%s: No helptext for '%s'\n", file[i], conf[i]);
+		}
+	}
+}
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/cleanup_printf2puts
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/cleanup_printf2puts	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/cleanup_printf2puts	(revision 20)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Processes current directory recursively:
+# printf("abc\n") -> puts("abc"). Beware of fprintf etc...
+
+# BTW, gcc 4.1.2 already does tha same! Can't believe it...
+
+grep -lr 'printf\([^%%]*\\n"\)' . | grep '.[ch]$' | xargs -n1 \
+    sed -e 's/\([^A-Za-z0-9_]\)printf(\( *"[^%]*\)\\n")/\1puts(\2")/' -i
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/defconfig
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/defconfig	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/defconfig	(revision 20)
@@ -0,0 +1,750 @@
+#
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_NITPICK=y
+# CONFIG_DESKTOP is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+# CONFIG_FEATURE_EDITING_FANCY_KEYS is not set
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=15
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+# CONFIG_FEATURE_TAB_COMPLETION is not set
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
+# CONFIG_MONOTONIC_SYSCALL is not set
+CONFIG_IOCTL_HEX2STR_ERROR=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+CONFIG_RPM=y
+CONFIG_FEATURE_RPM_BZ2=y
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_BZIP2=y
+CONFIG_FEATURE_TAR_LZMA=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+CONFIG_FEATURE_TAR_COMPRESS=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+CONFIG_FEATURE_UNARCHIVE_TAPE=y
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+CONFIG_FEATURE_FIND_DELETE=y
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_INIT_SCTTY=y
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+CONFIG_FEATURE_EXTRA_QUIET=y
+CONFIG_FEATURE_INIT_COREDUMPS=y
+CONFIG_FEATURE_INITRD=y
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+CONFIG_USE_BB_SHADOW=y
+CONFIG_USE_BB_PWD_GRP=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+CONFIG_FEATURE_INSMOD_VERSION_CHECKING=y
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+CONFIG_FEATURE_INSMOD_LOADINKMEM=y
+CONFIG_FEATURE_INSMOD_LOAD_MAP=y
+CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_READPROFILE=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+# CONFIG_BBCONFIG is not set
+CONFIG_CHRT=y
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+CONFIG_FEATURE_CROND_CALL_SENDMAIL=y
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_LAST=y
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_STRINGS=y
+CONFIG_SETSID=y
+CONFIG_TASKSET=y
+CONFIG_FEATURE_TASKSET_FANCY=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_USE_SENDFILE=y
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+CONFIG_FEATURE_NETSTAT_WIDE=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_PSCAN=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+CONFIG_SLATTACH=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_APP_UDHCPD=y
+CONFIG_APP_DHCPRELAY=y
+CONFIG_APP_DUMPLEASES=y
+CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y
+CONFIG_APP_UDHCPC=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+CONFIG_FEATURE_RFC3397=y
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+# CONFIG_ASH_ALIAS is not set
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+# CONFIG_ASH_GETOPTS is not set
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+# CONFIG_ASH_EXPAND_PRMT is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_CTTYHACK is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_SV=y
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+
+#
+# ipsvd utilities
+#
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/find_bad_common_bufsiz
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/find_bad_common_bufsiz	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/find_bad_common_bufsiz	(revision 20)
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# This script finds applets with multiple uses of bb_common_bufsiz1
+# (== possible bugs).
+# Currently (2007-06-04) reports 3 false positives:
+# ./coreutils/diff.c:7
+# ./loginutils/getty.c:2
+# ./util-linux/mount.c:5
+
+find -name '*.c' \
+| while read name; do
+    grep -Hc bb_common_bufsiz1 "$name"
+done | grep -v ':[01]$'
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/find_stray_common_vars
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/find_stray_common_vars	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/find_stray_common_vars	(revision 20)
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Common variables are elusive, they don't show up in size output!
+# This script will show all commons in *.o, sorted by size
+
+find -name '*.o' \
+| while read name; do
+    b=`basename "$name"`
+    nm "$name" | sed "s/^/$b: /"
+done | grep -i ' c ' | sort -k2
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/individual
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/individual	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/individual	(revision 20)
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+# Compile individual versions of each busybox applet.
+
+if [ $# -eq 0 ]
+then
+
+# Clear out the build directory.  (Make clean should do this instead of here.)
+
+rm -rf build
+mkdir build
+
+# Make our prerequisites.
+
+make busybox.links include/bb_config.h $(pwd)/{libbb/libbb.a,archival/libunarchive/libunarchive.a,coreutils/libcoreutils/libcoreutils.a,networking/libiproute/libiproute.a}
+
+else
+# Could very well be that we want to build an individual applet but have no
+# 'build' dir yet..
+
+test -d ./build || mkdir build
+
+fi
+
+# About 3/5 of the applets build from one .c file (with the same name as the
+# corresponding applet), and all it needs to link against.  However, to build
+# them all we need more than that.
+
+# Figure out which applets need extra libraries added to their command line.
+
+function substithing()
+{
+  if [ "${1/ $3 //}" != "$1" ]
+  then
+    echo $2
+  fi
+}
+
+function extra_libraries()
+{
+  # gzip needs gunzip.c (when gunzip is enabled, anyway).
+  substithing " gzip " "archival/gunzip.c archival/uncompress.c" "$1"
+
+  # init needs init_shared.c
+  substithing " init " "init/init_shared.c" "$1"
+
+  # ifconfig needs interface.c
+  substithing " ifconfig " "networking/interface.c" "$1"
+
+  # Applets that need libunarchive.a
+  substithing " ar bunzip2 unlzma cpio dpkg gunzip rpm2cpio rpm tar uncompress unzip dpkg_deb gzip " "archival/libunarchive/libunarchive.a" "$1"
+
+  # Applets that need libcoreutils.a
+  substithing " cp mv " "coreutils/libcoreutils/libcoreutils.a" "$1"
+
+  # Applets that need libiproute.a
+  substithing " ip " "networking/libiproute/libiproute.a" "$1"
+
+  # What needs -libm?
+  substithing " awk dc " "-lm" "$1"
+
+  # What needs -lcrypt?
+  substithing " httpd vlock " "-lcrypt" "$1"
+}
+
+# Query applets.h to figure out which applets need special treatment
+
+strange_names=`sed -rn -e 's/\#.*//' -e 's/.*APPLET_NOUSAGE\(([^,]*),([^,]*),.*/\1 \2/p' -e 's/.*APPLET_ODDNAME\(([^,]*),([^,]*),.*, *([^)]*).*/\1 \2@\3/p' include/applets.h`
+
+function bonkname()
+{
+  while [ $# -gt 0 ]
+  do
+    if [ "$APPLET" == "$1" ]
+    then
+      APPFILT="${2/@*/}"
+      if [ "${APPFILT}" == "$2" ]
+      then
+        HELPNAME='"nousage\n"'   # These should be _fixed_.
+      else
+        HELPNAME="${2/*@/}"_full_usage
+      fi
+      break
+    fi
+    shift 2
+  done
+#echo APPLET=${APPLET} APPFILT=${APPFILT} HELPNAME=${HELPNAME} 2=${2}
+}
+
+# Iterate through every name in busybox.links
+
+function buildit ()
+{
+  export APPLET="$1"
+  export APPFILT=${APPLET}
+  export HELPNAME=${APPLET}_full_usage
+
+  bonkname $strange_names
+
+  j=`find archival console-tools coreutils debianutils editors findutils init loginutils miscutils modutils networking procps shell sysklogd util-linux -name "${APPFILT}.c"`
+  if [ -z "$j" ]
+  then
+    echo no file for $APPLET
+  else
+    echo "Building $APPLET"
+    gcc -Os -o build/$APPLET applets/individual.c $j \
+	`extra_libraries $APPFILT` libbb/libbb.a -Iinclude \
+	-DBUILD_INDIVIDUAL \
+	'-Drun_applet_and_exit(...)' '-Dfind_applet_by_name(...)=0' \
+	-DAPPLET_main=${APPFILT}_main -DAPPLET_full_usage=${HELPNAME}
+    if [ $? -ne 0 ];
+    then
+      echo "Failed $APPLET"
+    fi
+  fi
+}
+
+if [ $# -eq 0 ]
+then
+  for APPLET in `sed 's .*/  ' busybox.links`
+  do
+    buildit "$APPLET"
+  done
+else
+  buildit "$1"
+fi
+
+
+strip build/*
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.conf.o.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.conf.o.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.conf.o.cmd	(revision 20)
@@ -0,0 +1,84 @@
+cmd_scripts/kconfig/conf.o := gcc -Wp,-MD,scripts/kconfig/.conf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c
+
+deps_scripts/kconfig/conf.o := \
+  scripts/kconfig/conf.c \
+    $(wildcard include/config/allconfig.h) \
+  /usr/include/ctype.h \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/ern/inlines.h) \
+  /usr/include/features.h \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/ix199506.h) \
+    $(wildcard include/config/en/extended.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/tify/level.h) \
+    $(wildcard include/config/i.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/include/bits/types.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/include/stdlib.h \
+  /usr/include/sys/types.h \
+  /usr/include/time.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/alloca.h \
+  /usr/include/stdio.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h \
+  /usr/include/bits/confname.h \
+  /usr/include/getopt.h \
+  /usr/include/sys/stat.h \
+  /usr/include/bits/stat.h \
+  scripts/kconfig/lkc.h \
+  scripts/kconfig/expr.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdbool.h \
+  /usr/include/libintl.h \
+    $(wildcard include/config//gettext.h) \
+  /usr/include/locale.h \
+  /usr/include/bits/locale.h \
+  scripts/kconfig/lkc_proto.h \
+
+scripts/kconfig/conf.o: $(deps_scripts/kconfig/conf.o)
+
+$(deps_scripts/kconfig/conf.o):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.kxgettext.o.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.kxgettext.o.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.kxgettext.o.cmd	(revision 20)
@@ -0,0 +1,76 @@
+cmd_scripts/kconfig/kxgettext.o := gcc -Wp,-MD,scripts/kconfig/.kxgettext.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/kxgettext.o scripts/kconfig/kxgettext.c
+
+deps_scripts/kconfig/kxgettext.o := \
+  scripts/kconfig/kxgettext.c \
+  /usr/include/stdlib.h \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/.h) \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/ern/inlines.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/en/extended.h) \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/tify/level.h) \
+  /usr/include/features.h \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/ix199506.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/i.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/sys/types.h \
+  /usr/include/bits/types.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/time.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/alloca.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  scripts/kconfig/lkc.h \
+  scripts/kconfig/expr.h \
+  /usr/include/stdio.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdbool.h \
+  /usr/include/libintl.h \
+    $(wildcard include/config//gettext.h) \
+  /usr/include/locale.h \
+  /usr/include/bits/locale.h \
+  scripts/kconfig/lkc_proto.h \
+
+scripts/kconfig/kxgettext.o: $(deps_scripts/kconfig/kxgettext.o)
+
+$(deps_scripts/kconfig/kxgettext.o):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.mconf.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.mconf.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.mconf.cmd	(revision 20)
@@ -0,0 +1,1 @@
+cmd_scripts/kconfig/mconf := gcc  -o scripts/kconfig/mconf scripts/kconfig/mconf.o scripts/kconfig/zconf.tab.o  
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.mconf.o.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.mconf.o.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.mconf.o.cmd	(revision 20)
@@ -0,0 +1,123 @@
+cmd_scripts/kconfig/mconf.o := gcc -Wp,-MD,scripts/kconfig/.mconf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/mconf.o scripts/kconfig/mconf.c
+
+deps_scripts/kconfig/mconf.o := \
+  scripts/kconfig/mconf.c \
+    $(wildcard include/config/mode.h) \
+    $(wildcard include/config/.h) \
+  /usr/include/sys/ioctl.h \
+  /usr/include/features.h \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/ix199506.h) \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/en/extended.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/tify/level.h) \
+    $(wildcard include/config/i.h) \
+    $(wildcard include/config/ern/inlines.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/include/bits/ioctls.h \
+  /usr/include/asm/ioctls.h \
+  /usr/include/asm-i386/ioctls.h \
+  /usr/include/asm/ioctl.h \
+  /usr/include/asm-i386/ioctl.h \
+  /usr/include/asm-generic/ioctl.h \
+  /usr/include/bits/ioctl-types.h \
+  /usr/include/sys/ttydefaults.h \
+  /usr/include/sys/wait.h \
+  /usr/include/signal.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/types.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/bits/signum.h \
+  /usr/include/time.h \
+  /usr/include/bits/siginfo.h \
+  /usr/include/bits/sigaction.h \
+  /usr/include/bits/sigcontext.h \
+  /usr/include/asm/sigcontext.h \
+  /usr/include/asm-i386/sigcontext.h \
+  /usr/include/bits/sigstack.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/bits/sigthread.h \
+  /usr/include/sys/resource.h \
+  /usr/include/bits/resource.h \
+  /usr/include/bits/time.h \
+  /usr/include/bits/waitflags.h \
+  /usr/include/bits/waitstatus.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/include/ctype.h \
+  /usr/include/errno.h \
+  /usr/include/bits/errno.h \
+  /usr/include/linux/errno.h \
+  /usr/include/asm/errno.h \
+  /usr/include/asm-i386/errno.h \
+  /usr/include/asm-generic/errno.h \
+  /usr/include/asm-generic/errno-base.h \
+  /usr/include/fcntl.h \
+  /usr/include/bits/fcntl.h \
+  /usr/include/sys/types.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h \
+  /usr/include/limits.h \
+  /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h \
+  /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/stdlib.h \
+  /usr/include/alloca.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  /usr/include/termios.h \
+  /usr/include/bits/termios.h \
+  /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h \
+  /usr/include/bits/confname.h \
+  /usr/include/getopt.h \
+  /usr/include/locale.h \
+  /usr/include/bits/locale.h \
+  scripts/kconfig/lkc.h \
+  scripts/kconfig/expr.h \
+  /usr/include/stdio.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdbool.h \
+  /usr/include/libintl.h \
+    $(wildcard include/config//gettext.h) \
+  scripts/kconfig/lkc_proto.h \
+
+scripts/kconfig/mconf.o: $(deps_scripts/kconfig/mconf.o)
+
+$(deps_scripts/kconfig/mconf.o):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.zconf.tab.o.cmd
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.zconf.tab.o.cmd	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/.zconf.tab.o.cmd	(revision 20)
@@ -0,0 +1,111 @@
+cmd_scripts/kconfig/zconf.tab.o := gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer      -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
+
+deps_scripts/kconfig/zconf.tab.o := \
+  scripts/kconfig/zconf.tab.c \
+    $(wildcard include/config/oca.h) \
+  /usr/include/ctype.h \
+    $(wildcard include/config/c99.h) \
+    $(wildcard include/config/.h) \
+    $(wildcard include/config/d.h) \
+    $(wildcard include/config/c.h) \
+    $(wildcard include/config/en.h) \
+    $(wildcard include/config/ern/inlines.h) \
+  /usr/include/features.h \
+    $(wildcard include/config/ix.h) \
+    $(wildcard include/config/ix2.h) \
+    $(wildcard include/config/ix199309.h) \
+    $(wildcard include/config/ix199506.h) \
+    $(wildcard include/config/en/extended.h) \
+    $(wildcard include/config/x98.h) \
+    $(wildcard include/config/en2k.h) \
+    $(wildcard include/config/gefile.h) \
+    $(wildcard include/config/gefile64.h) \
+    $(wildcard include/config/e/offset64.h) \
+    $(wildcard include/config/ile.h) \
+    $(wildcard include/config/ntrant.h) \
+    $(wildcard include/config/tify/level.h) \
+    $(wildcard include/config/i.h) \
+  /usr/include/sys/cdefs.h \
+    $(wildcard include/config/espaces.h) \
+  /usr/include/bits/wordsize.h \
+  /usr/include/gnu/stubs.h \
+  /usr/include/gnu/stubs-32.h \
+  /usr/include/bits/types.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \
+  /usr/include/bits/typesizes.h \
+  /usr/include/endian.h \
+  /usr/include/bits/endian.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \
+  /usr/include/stdio.h \
+  /usr/include/libio.h \
+    $(wildcard include/config/a.h) \
+    $(wildcard include/config/ar/t.h) \
+    $(wildcard include/config//io/file.h) \
+  /usr/include/_G_config.h \
+  /usr/include/wchar.h \
+  /usr/include/bits/wchar.h \
+  /usr/include/gconv.h \
+  /usr/include/bits/stdio_lim.h \
+  /usr/include/bits/sys_errlist.h \
+  /usr/include/bits/stdio.h \
+  /usr/include/stdlib.h \
+  /usr/include/sys/types.h \
+  /usr/include/time.h \
+  /usr/include/sys/select.h \
+  /usr/include/bits/select.h \
+  /usr/include/bits/sigset.h \
+  /usr/include/bits/time.h \
+  /usr/include/sys/sysmacros.h \
+  /usr/include/bits/pthreadtypes.h \
+  /usr/include/alloca.h \
+  /usr/include/string.h \
+    $(wildcard include/config/ing/inlines.h) \
+  /usr/include/bits/string.h \
+    $(wildcard include/config/ing/arch/memset.h) \
+    $(wildcard include/config/ing/arch/strchr.h) \
+  /usr/include/bits/string2.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdbool.h \
+  scripts/kconfig/lkc.h \
+  scripts/kconfig/expr.h \
+  /usr/include/libintl.h \
+    $(wildcard include/config//gettext.h) \
+  /usr/include/locale.h \
+  /usr/include/bits/locale.h \
+  scripts/kconfig/lkc_proto.h \
+  scripts/kconfig/zconf.hash.c \
+  scripts/kconfig/lex.zconf.c \
+    $(wildcard include/config/st.h) \
+    $(wildcard include/config/wrap.h) \
+  /usr/include/errno.h \
+  /usr/include/bits/errno.h \
+  /usr/include/linux/errno.h \
+  /usr/include/asm/errno.h \
+  /usr/include/asm-i386/errno.h \
+  /usr/include/asm-generic/errno.h \
+  /usr/include/asm-generic/errno-base.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h \
+  /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h \
+  /usr/include/limits.h \
+  /usr/include/bits/posix1_lim.h \
+  /usr/include/bits/local_lim.h \
+  /usr/include/linux/limits.h \
+  /usr/include/bits/posix2_lim.h \
+  /usr/include/unistd.h \
+  /usr/include/bits/posix_opt.h \
+  /usr/include/bits/confname.h \
+  /usr/include/getopt.h \
+  scripts/kconfig/util.c \
+  scripts/kconfig/confdata.c \
+    $(wildcard include/config/notimestamp.h) \
+  /usr/include/sys/stat.h \
+  /usr/include/bits/stat.h \
+  scripts/kconfig/expr.c \
+  scripts/kconfig/symbol.c \
+  /usr/include/regex.h \
+  /usr/include/sys/utsname.h \
+  /usr/include/bits/utsname.h \
+  scripts/kconfig/menu.c \
+
+scripts/kconfig/zconf.tab.o: $(deps_scripts/kconfig/zconf.tab.o)
+
+$(deps_scripts/kconfig/zconf.tab.o):
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/Makefile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/Makefile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/Makefile	(revision 20)
@@ -0,0 +1,254 @@
+# ===========================================================================
+# Kernel configuration targets
+# These targets are used from top-level makefile
+
+PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
+
+xconfig: $(obj)/qconf
+	$< Config.in
+
+gconfig: $(obj)/gconf
+	$< Config.in
+
+menuconfig: $(obj)/mconf
+	$(Q)$(MAKE) $(build)=scripts/kconfig/lxdialog
+	$< Config.in
+
+config: $(obj)/conf
+	$< Config.in
+
+oldconfig: $(obj)/conf
+	$< -o Config.in
+
+silentoldconfig: $(obj)/conf
+	$< -s Config.in
+
+update-po-config: $(obj)/kxgettext
+	xgettext --default-domain=linux \
+          --add-comments --keyword=_ --keyword=N_ \
+          --files-from=scripts/kconfig/POTFILES.in \
+          --output scripts/kconfig/config.pot
+	$(Q)ln -fs Kconfig_i386 arch/um/Kconfig_arch
+	$(Q)for i in `ls arch/`; \
+	do \
+	  scripts/kconfig/kxgettext arch/$$i/Kconfig \
+	    | msguniq -o scripts/kconfig/linux_$${i}.pot; \
+	done
+	$(Q)msgcat scripts/kconfig/config.pot \
+	  `find scripts/kconfig/ -type f -name linux_*.pot` \
+	  --output scripts/kconfig/linux_raw.pot
+	$(Q)msguniq --sort-by-file scripts/kconfig/linux_raw.pot \
+	    --output scripts/kconfig/linux.pot
+	$(Q)rm -f arch/um/Kconfig_arch
+	$(Q)rm -f scripts/kconfig/linux_*.pot scripts/kconfig/config.pot
+
+PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig
+
+randconfig: $(obj)/conf
+	$< -r Config.in
+
+allyesconfig: $(obj)/conf
+	$< -y Config.in
+
+allnoconfig: $(obj)/conf
+	$< -n Config.in
+
+allmodconfig: $(obj)/conf
+	$< -m Config.in
+
+defconfig: $(obj)/conf
+ifeq ($(KBUILD_DEFCONFIG),)
+	$< -d Config.in
+else
+	@echo *** Default configuration is based on '$(KBUILD_DEFCONFIG)'
+	$(Q)$< -D $(KBUILD_DEFCONFIG) Config.in
+endif
+
+%_defconfig: $(obj)/conf
+	$(Q)$< -D $@ Config.in
+
+# Help text used by make help
+help:
+	@echo  '  config	  - Update current config utilising a line-oriented program'
+	@echo  '  menuconfig	  - Update current config utilising a menu based program'
+	@echo  '  xconfig	  - Update current config utilising a QT based front-end'
+	@echo  '  gconfig	  - Update current config utilising a GTK based front-end'
+	@echo  '  oldconfig	  - Update current config utilising a provided .config as base'
+	@echo  '  randconfig	  - New config with random answer to all options'
+	@echo  '  defconfig	  - New config with default answer to all options'
+	@echo  '  allmodconfig	  - New config selecting modules when possible'
+	@echo  '  allyesconfig	  - New config where all options are accepted with yes'
+	@echo  '  allnoconfig	  - New config where all options are answered with no'
+
+# ===========================================================================
+# Shared Makefile for the various kconfig executables:
+# conf:	  Used for defconfig, oldconfig and related targets
+# mconf:  Used for the mconfig target.
+#         Utilizes the lxdialog package
+# qconf:  Used for the xconfig target
+#         Based on QT which needs to be installed to compile it
+# gconf:  Used for the gconfig target
+#         Based on GTK which needs to be installed to compile it
+# object files used by all kconfig flavours
+
+hostprogs-y	:= conf mconf qconf gconf kxgettext
+conf-objs	:= conf.o  zconf.tab.o
+mconf-objs	:= mconf.o zconf.tab.o
+kxgettext-objs	:= kxgettext.o zconf.tab.o
+
+ifeq ($(MAKECMDGOALS),xconfig)
+	qconf-target := 1
+endif
+ifeq ($(MAKECMDGOALS),gconfig)
+	gconf-target := 1
+endif
+
+
+ifeq ($(qconf-target),1)
+qconf-cxxobjs	:= qconf.o
+qconf-objs	:= kconfig_load.o zconf.tab.o
+endif
+
+ifeq ($(gconf-target),1)
+gconf-objs	:= gconf.o kconfig_load.o zconf.tab.o
+endif
+
+clean-files	:= lkc_defs.h qconf.moc .tmp_qtcheck \
+		   .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c
+subdir- += lxdialog
+
+# Needed for systems without gettext
+KBUILD_HAVE_NLS := $(shell \
+     if echo "\#include <libintl.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
+     then echo yes ; \
+     else echo no ; fi)
+ifeq ($(KBUILD_HAVE_NLS),no)
+HOSTCFLAGS	+= -DKBUILD_NO_NLS
+endif
+
+# generated files seem to need this to find local include files
+HOSTCFLAGS_lex.zconf.o	:= -I$(src)
+HOSTCFLAGS_zconf.tab.o	:= -I$(src)
+
+HOSTLOADLIBES_qconf	= $(KC_QT_LIBS) -ldl
+HOSTCXXFLAGS_qconf.o	= $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK
+
+HOSTLOADLIBES_gconf	= `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`
+HOSTCFLAGS_gconf.o	= `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
+                          -D LKC_DIRECT_LINK
+
+$(obj)/qconf.o: $(obj)/.tmp_qtcheck
+
+ifeq ($(qconf-target),1)
+$(obj)/.tmp_qtcheck: $(src)/Makefile
+-include $(obj)/.tmp_qtcheck
+
+# QT needs some extra effort...
+$(obj)/.tmp_qtcheck:
+	@set -e; echo "  CHECK   qt"; dir=""; pkg=""; \
+	pkg-config --exists qt 2> /dev/null && pkg=qt; \
+	pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \
+	if [ -n "$$pkg" ]; then \
+	  cflags="\$$(shell pkg-config $$pkg --cflags)"; \
+	  libs="\$$(shell pkg-config $$pkg --libs)"; \
+	  moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \
+	  dir="$$(pkg-config $$pkg --variable=prefix)"; \
+	else \
+	  for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
+	    if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \
+	  done; \
+	  if [ -z "$$dir" ]; then \
+	    echo "*"; \
+	    echo "* Unable to find the QT installation. Please make sure that"; \
+	    echo "* the QT development package is correctly installed and"; \
+	    echo "* either install pkg-config or set the QTDIR environment"; \
+	    echo "* variable to the correct location."; \
+	    echo "*"; \
+	    false; \
+	  fi; \
+	  libpath=$$dir/lib; lib=qt; osdir=""; \
+	  $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \
+	    osdir=x$$($(HOSTCXX) -print-multi-os-directory); \
+	  test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \
+	  test -f $$libpath/libqt-mt.so && lib=qt-mt; \
+	  cflags="-I$$dir/include"; \
+	  libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \
+	  moc="$$dir/bin/moc"; \
+	fi; \
+	if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \
+	  echo "*"; \
+	  echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \
+	  echo "*"; \
+	  moc="/usr/bin/moc"; \
+	fi; \
+	echo "KC_QT_CFLAGS=$$cflags" > $@; \
+	echo "KC_QT_LIBS=$$libs" >> $@; \
+	echo "KC_QT_MOC=$$moc" >> $@
+endif
+
+$(obj)/gconf.o: $(obj)/.tmp_gtkcheck
+
+ifeq ($(gconf-target),1)
+-include $(obj)/.tmp_gtkcheck
+
+# GTK needs some extra effort, too...
+$(obj)/.tmp_gtkcheck:
+	@if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then		\
+		if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then			\
+			touch $@;								\
+		else									\
+			echo "*"; 							\
+			echo "* GTK+ is present but version >= 2.0.0 is required.";	\
+			echo "*";							\
+			false;								\
+		fi									\
+	else										\
+		echo "*"; 								\
+		echo "* Unable to find the GTK+ installation. Please make sure that"; 	\
+		echo "* the GTK+ 2.0 development package is correctly installed..."; 	\
+		echo "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; 		\
+		echo "*"; 								\
+		false;									\
+	fi
+endif
+
+$(obj)/zconf.tab.o: $(obj)/lex.zconf.c $(obj)/zconf.hash.c
+
+$(obj)/kconfig_load.o: $(obj)/lkc_defs.h
+
+$(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h
+
+$(obj)/gconf.o: $(obj)/lkc_defs.h
+
+$(obj)/%.moc: $(src)/%.h
+	$(KC_QT_MOC) -i $< -o $@
+
+$(obj)/lkc_defs.h: $(src)/lkc_proto.h
+	sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
+
+
+###
+# The following requires flex/bison/gperf
+# By default we use the _shipped versions, uncomment the following line if
+# you are modifying the flex/bison src.
+# LKC_GENPARSER := 1
+
+ifdef LKC_GENPARSER
+
+$(obj)/zconf.tab.c: $(src)/zconf.y
+$(obj)/lex.zconf.c: $(src)/zconf.l
+$(obj)/zconf.hash.c: $(src)/zconf.gperf
+
+%.tab.c: %.y
+	bison -l -b $* -p $(notdir $*) $<
+	cp $@ $@_shipped
+
+lex.%.c: %.l
+	flex -L -P$(notdir $*) -o$@ $<
+	cp $@ $@_shipped
+
+%.hash.c: %.gperf
+	gperf < $< > $@
+	cp $@ $@_shipped
+
+endif
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/POTFILES.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/POTFILES.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/POTFILES.in	(revision 20)
@@ -0,0 +1,5 @@
+scripts/kconfig/mconf.c
+scripts/kconfig/conf.c
+scripts/kconfig/confdata.c
+scripts/kconfig/gconf.c
+scripts/kconfig/qconf.cc
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/gconf.glade
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/gconf.glade	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/gconf.glade	(revision 20)
@@ -0,0 +1,648 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">Gtk Kernel Configurator</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="default_width">640</property>
+  <property name="default_height">480</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <signal name="destroy" handler="on_window1_destroy" object="window1"/>
+  <signal name="size_request" handler="on_window1_size_request" object="vpaned1" last_modification_time="Fri, 11 Jan 2002 16:17:11 GMT"/>
+  <signal name="delete_event" handler="on_window1_delete_event" object="window1" last_modification_time="Sun, 09 Mar 2003 19:42:46 GMT"/>
+
+  <child>
+    <widget class="GtkVBox" id="vbox1">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child>
+	<widget class="GtkMenuBar" id="menubar1">
+	  <property name="visible">True</property>
+
+	  <child>
+	    <widget class="GtkMenuItem" id="file1">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">_File</property>
+	      <property name="use_underline">True</property>
+
+	      <child>
+		<widget class="GtkMenu" id="file1_menu">
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="load1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Load a config file</property>
+		      <property name="label" translatable="yes">_Load</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_load1_activate"/>
+		      <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image39">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-open</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="save1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Save the config in .config</property>
+		      <property name="label" translatable="yes">_Save</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_save1_activate"/>
+		      <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image40">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-save</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="save_as1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Save the config in a file</property>
+		      <property name="label" translatable="yes">Save _as</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_save_as1_activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image41">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-save-as</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSeparatorMenuItem" id="separator1">
+		      <property name="visible">True</property>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="quit1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Quit</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_quit1_activate"/>
+		      <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image42">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-quit</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkMenuItem" id="options1">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">_Options</property>
+	      <property name="use_underline">True</property>
+
+	      <child>
+		<widget class="GtkMenu" id="options1_menu">
+
+		  <child>
+		    <widget class="GtkCheckMenuItem" id="show_name1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Show name</property>
+		      <property name="label" translatable="yes">Show _name</property>
+		      <property name="use_underline">True</property>
+		      <property name="active">False</property>
+		      <signal name="activate" handler="on_show_name1_activate"/>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkCheckMenuItem" id="show_range1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Show range (Y/M/N)</property>
+		      <property name="label" translatable="yes">Show _range</property>
+		      <property name="use_underline">True</property>
+		      <property name="active">False</property>
+		      <signal name="activate" handler="on_show_range1_activate"/>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkCheckMenuItem" id="show_data1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Show value of the option</property>
+		      <property name="label" translatable="yes">Show _data</property>
+		      <property name="use_underline">True</property>
+		      <property name="active">False</property>
+		      <signal name="activate" handler="on_show_data1_activate"/>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSeparatorMenuItem" id="separator2">
+		      <property name="visible">True</property>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkCheckMenuItem" id="show_all_options1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Show all options</property>
+		      <property name="label" translatable="yes">Show all _options</property>
+		      <property name="use_underline">True</property>
+		      <property name="active">False</property>
+		      <signal name="activate" handler="on_show_all_options1_activate"/>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkCheckMenuItem" id="show_debug_info1">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Show masked options</property>
+		      <property name="label" translatable="yes">Show _debug info</property>
+		      <property name="use_underline">True</property>
+		      <property name="active">False</property>
+		      <signal name="activate" handler="on_show_debug_info1_activate"/>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkMenuItem" id="help1">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">_Help</property>
+	      <property name="use_underline">True</property>
+
+	      <child>
+		<widget class="GtkMenu" id="help1_menu">
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="introduction1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Introduction</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_introduction1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+		      <accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image43">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-dialog-question</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="about1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_About</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_about1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+		      <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image44">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-properties</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="license1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_License</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_license1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image45">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-justify-fill</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHandleBox" id="handlebox1">
+	  <property name="visible">True</property>
+	  <property name="shadow_type">GTK_SHADOW_OUT</property>
+	  <property name="handle_position">GTK_POS_LEFT</property>
+	  <property name="snap_edge">GTK_POS_TOP</property>
+
+	  <child>
+	    <widget class="GtkToolbar" id="toolbar1">
+	      <property name="visible">True</property>
+	      <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
+	      <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+	      <property name="tooltips">True</property>
+	      <property name="show_arrow">True</property>
+
+	      <child>
+		<widget class="GtkToolButton" id="button1">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Goes up of one level (single view)</property>
+		  <property name="label" translatable="yes">Back</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-undo</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_back_clicked"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolItem" id="toolitem1">
+		  <property name="visible">True</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+
+		  <child>
+		    <widget class="GtkVSeparator" id="vseparator1">
+		      <property name="visible">True</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button2">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Load a config file</property>
+		  <property name="label" translatable="yes">Load</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-open</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_load_clicked"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button3">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Save a config file</property>
+		  <property name="label" translatable="yes">Save</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-save</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_save_clicked"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolItem" id="toolitem2">
+		  <property name="visible">True</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+
+		  <child>
+		    <widget class="GtkVSeparator" id="vseparator2">
+		      <property name="visible">True</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button4">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Single view</property>
+		  <property name="label" translatable="yes">Single</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-missing-image</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_single_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:39 GMT"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button5">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Split view</property>
+		  <property name="label" translatable="yes">Split</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-missing-image</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_split_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:45 GMT"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button6">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Full view</property>
+		  <property name="label" translatable="yes">Full</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-missing-image</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_full_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:50 GMT"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolItem" id="toolitem3">
+		  <property name="visible">True</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+
+		  <child>
+		    <widget class="GtkVSeparator" id="vseparator3">
+		      <property name="visible">True</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button7">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Collapse the whole tree in the right frame</property>
+		  <property name="label" translatable="yes">Collapse</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-remove</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_collapse_clicked"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToolButton" id="button8">
+		  <property name="visible">True</property>
+		  <property name="tooltip" translatable="yes">Expand the whole tree in the right frame</property>
+		  <property name="label" translatable="yes">Expand</property>
+		  <property name="use_underline">True</property>
+		  <property name="stock_id">gtk-add</property>
+		  <property name="visible_horizontal">True</property>
+		  <property name="visible_vertical">True</property>
+		  <property name="is_important">False</property>
+		  <signal name="clicked" handler="on_expand_clicked"/>
+		</widget>
+		<packing>
+		  <property name="expand">False</property>
+		  <property name="homogeneous">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHPaned" id="hpaned1">
+	  <property name="width_request">1</property>
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="position">0</property>
+
+	  <child>
+	    <widget class="GtkScrolledWindow" id="scrolledwindow1">
+	      <property name="visible">True</property>
+	      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	      <property name="shadow_type">GTK_SHADOW_IN</property>
+	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	      <child>
+		<widget class="GtkTreeView" id="treeview1">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="headers_visible">True</property>
+		  <property name="rules_hint">False</property>
+		  <property name="reorderable">False</property>
+		  <property name="enable_search">True</property>
+		  <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/>
+		  <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/>
+		  <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="shrink">True</property>
+	      <property name="resize">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVPaned" id="vpaned1">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="position">0</property>
+
+	      <child>
+		<widget class="GtkScrolledWindow" id="scrolledwindow2">
+		  <property name="visible">True</property>
+		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		  <child>
+		    <widget class="GtkTreeView" id="treeview2">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="has_focus">True</property>
+		      <property name="headers_visible">True</property>
+		      <property name="rules_hint">False</property>
+		      <property name="reorderable">False</property>
+		      <property name="enable_search">True</property>
+		      <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/>
+		      <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/>
+		      <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="shrink">True</property>
+		  <property name="resize">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkScrolledWindow" id="scrolledwindow3">
+		  <property name="visible">True</property>
+		  <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		  <child>
+		    <widget class="GtkTextView" id="textview3">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">False</property>
+		      <property name="overwrite">False</property>
+		      <property name="accepts_tab">True</property>
+		      <property name="justification">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap_mode">GTK_WRAP_WORD</property>
+		      <property name="cursor_visible">True</property>
+		      <property name="pixels_above_lines">0</property>
+		      <property name="pixels_below_lines">0</property>
+		      <property name="pixels_inside_wrap">0</property>
+		      <property name="left_margin">0</property>
+		      <property name="right_margin">0</property>
+		      <property name="indent">0</property>
+		      <property name="text" translatable="yes">Sorry, no help available for this option yet.</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="shrink">True</property>
+		  <property name="resize">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="shrink">True</property>
+	      <property name="resize">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lex.zconf.c_shipped
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lex.zconf.c_shipped	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lex.zconf.c_shipped	(revision 20)
@@ -0,0 +1,2317 @@
+
+#line 3 "scripts/kconfig/lex.zconf.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 31
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE zconfrestart(zconfin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int zconfleng;
+
+extern FILE *zconfin, *zconfout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up zconftext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef unsigned int yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via zconfrestart()), so that the user can continue scanning by
+	 * just pointing zconfin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when zconftext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int zconfleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow zconfwrap()'s to do buffer switches
+ * instead of setting up a fresh zconfin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void zconfrestart (FILE *input_file  );
+void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size  );
+void zconf_delete_buffer (YY_BUFFER_STATE b  );
+void zconf_flush_buffer (YY_BUFFER_STATE b  );
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void zconfpop_buffer_state (void );
+
+static void zconfensure_buffer_stack (void );
+static void zconf_load_buffer_state (void );
+static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len  );
+
+void *zconfalloc (yy_size_t  );
+void *zconfrealloc (void *,yy_size_t  );
+void zconffree (void *  );
+
+#define yy_new_buffer zconf_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        zconfensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        zconfensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define zconfwrap() 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int zconflineno;
+
+int zconflineno = 1;
+
+extern char *zconftext;
+#define yytext_ptr zconftext
+static yyconst flex_int16_t yy_nxt[][17] =
+    {
+    {
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0
+    },
+
+    {
+       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12
+    },
+
+    {
+       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12
+    },
+
+    {
+       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   18,   16,   16,   16
+    },
+
+    {
+       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   18,   16,   16,   16
+
+    },
+
+    {
+       11,   19,   20,   21,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19
+    },
+
+    {
+       11,   19,   20,   21,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19
+    },
+
+    {
+       11,   22,   22,   23,   22,   24,   22,   22,   24,   22,
+       22,   22,   22,   22,   22,   25,   22
+    },
+
+    {
+       11,   22,   22,   23,   22,   24,   22,   22,   24,   22,
+       22,   22,   22,   22,   22,   25,   22
+    },
+
+    {
+       11,   26,   26,   27,   28,   29,   30,   31,   29,   32,
+       33,   34,   35,   35,   36,   37,   38
+
+    },
+
+    {
+       11,   26,   26,   27,   28,   29,   30,   31,   29,   32,
+       33,   34,   35,   35,   36,   37,   38
+    },
+
+    {
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11
+    },
+
+    {
+       11,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
+      -12,  -12,  -12,  -12,  -12,  -12,  -12
+    },
+
+    {
+       11,  -13,   39,   40,  -13,  -13,   41,  -13,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,  -13,  -13
+    },
+
+    {
+       11,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14
+
+    },
+
+    {
+       11,   42,   42,   43,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,   42,   42
+    },
+
+    {
+       11,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16
+    },
+
+    {
+       11,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17
+    },
+
+    {
+       11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,   44,  -18,  -18,  -18
+    },
+
+    {
+       11,   45,   45,  -19,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45
+
+    },
+
+    {
+       11,  -20,   46,   47,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20
+    },
+
+    {
+       11,   48,  -21,  -21,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48
+    },
+
+    {
+       11,   49,   49,   50,   49,  -22,   49,   49,  -22,   49,
+       49,   49,   49,   49,   49,  -22,   49
+    },
+
+    {
+       11,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23
+    },
+
+    {
+       11,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24
+
+    },
+
+    {
+       11,   51,   51,   52,   51,   51,   51,   51,   51,   51,
+       51,   51,   51,   51,   51,   51,   51
+    },
+
+    {
+       11,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26
+    },
+
+    {
+       11,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27
+    },
+
+    {
+       11,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,   53,  -28,  -28
+    },
+
+    {
+       11,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29
+
+    },
+
+    {
+       11,   54,   54,  -30,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54
+    },
+
+    {
+       11,  -31,  -31,  -31,  -31,  -31,  -31,   55,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31
+    },
+
+    {
+       11,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32
+    },
+
+    {
+       11,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33
+    },
+
+    {
+       11,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,   56,   57,   57,  -34,  -34,  -34
+
+    },
+
+    {
+       11,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,   57,   57,   57,  -35,  -35,  -35
+    },
+
+    {
+       11,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36
+    },
+
+    {
+       11,  -37,  -37,   58,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37
+    },
+
+    {
+       11,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,   59
+    },
+
+    {
+       11,  -39,   39,   40,  -39,  -39,   41,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39
+
+    },
+
+    {
+       11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40
+    },
+
+    {
+       11,   42,   42,   43,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,   42,   42
+    },
+
+    {
+       11,   42,   42,   43,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,   42,   42
+    },
+
+    {
+       11,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43
+    },
+
+    {
+       11,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,   44,  -44,  -44,  -44
+
+    },
+
+    {
+       11,   45,   45,  -45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45
+    },
+
+    {
+       11,  -46,   46,   47,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46
+    },
+
+    {
+       11,   48,  -47,  -47,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48
+    },
+
+    {
+       11,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48
+    },
+
+    {
+       11,   49,   49,   50,   49,  -49,   49,   49,  -49,   49,
+       49,   49,   49,   49,   49,  -49,   49
+
+    },
+
+    {
+       11,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50
+    },
+
+    {
+       11,  -51,  -51,   52,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51
+    },
+
+    {
+       11,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52
+    },
+
+    {
+       11,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53
+    },
+
+    {
+       11,   54,   54,  -54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54
+
+    },
+
+    {
+       11,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55
+    },
+
+    {
+       11,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,   60,   57,   57,  -56,  -56,  -56
+    },
+
+    {
+       11,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
+      -57,   57,   57,   57,  -57,  -57,  -57
+    },
+
+    {
+       11,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58
+    },
+
+    {
+       11,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
+      -59,  -59,  -59,  -59,  -59,  -59,  -59
+
+    },
+
+    {
+       11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
+      -60,   57,   57,   57,  -60,  -60,  -60
+    },
+
+    } ;
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up zconftext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	zconfleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 33
+#define YY_END_OF_BUFFER 34
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_accept[61] =
+    {   0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       34,    5,    4,    2,    3,    7,    8,    6,   32,   29,
+       31,   24,   28,   27,   26,   22,   17,   13,   16,   20,
+       22,   11,   12,   19,   19,   14,   22,   22,    4,    2,
+        3,    3,    1,    6,   32,   29,   31,   30,   24,   23,
+       26,   25,   15,   20,    9,   19,   19,   21,   10,   18
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    4,    5,    6,    1,    1,    7,    8,    9,
+       10,    1,    1,    1,   11,   12,   12,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,    1,    1,    1,
+       14,    1,    1,    1,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+        1,   15,    1,    1,   13,    1,   13,   13,   13,   13,
+
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,    1,   16,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+extern int zconf_flex_debug;
+int zconf_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *zconftext;
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE	16
+
+static struct {
+	struct file *file;
+	int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+        struct buffer *parent;
+        YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+void new_string(void)
+{
+	text = malloc(START_STRSIZE);
+	text_asize = START_STRSIZE;
+	text_size = 0;
+	*text = 0;
+}
+
+void append_string(const char *str, int size)
+{
+	int new_size = text_size + size + 1;
+	if (new_size > text_asize) {
+		new_size += START_STRSIZE - 1;
+		new_size &= -START_STRSIZE;
+		text = realloc(text, new_size);
+		text_asize = new_size;
+	}
+	memcpy(text + text_size, str, size);
+	text_size += size;
+	text[text_size] = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+	text = malloc(size + 1);
+	memcpy(text, str, size);
+	text[size] = 0;
+}
+
+#define INITIAL 0
+#define COMMAND 1
+#define HELP 2
+#define STRING 3
+#define PARAM 4
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int zconfwrap (void );
+#else
+extern int zconfwrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	errno=0; \
+	while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
+	{ \
+		if( errno != EINTR) \
+		{ \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+			break; \
+		} \
+		errno=0; \
+		clearerr(zconfin); \
+	}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int zconflex (void);
+
+#define YY_DECL int zconflex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after zconftext and zconfleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+	int str = 0;
+	int ts, i;
+
+	if ( (yy_init) )
+		{
+		(yy_init) = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! zconfin )
+			zconfin = stdin;
+
+		if ( ! zconfout )
+			zconfout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			zconfensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				zconf_create_buffer(zconfin,YY_BUF_SIZE );
+		}
+
+		zconf_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of zconftext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+yy_match:
+		while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )
+			++yy_cp;
+
+		yy_current_state = -yy_current_state;
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+
+		YY_DO_BEFORE_ACTION;
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+{
+	current_file->lineno++;
+	return T_EOL;
+}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+{
+	BEGIN(COMMAND);
+}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+{
+	unput(zconftext[0]);
+	BEGIN(COMMAND);
+}
+	YY_BREAK
+
+case 6:
+YY_RULE_SETUP
+{
+		struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+		BEGIN(PARAM);
+		current_pos.file = current_file;
+		current_pos.lineno = current_file->lineno;
+		if (id && id->flags & TF_COMMAND) {
+			zconflval.id = id;
+			return id->token;
+		}
+		alloc_string(zconftext, zconfleng);
+		zconflval.string = text;
+		return T_WORD;
+	}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+
+	YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+{
+		BEGIN(INITIAL);
+		current_file->lineno++;
+		return T_EOL;
+	}
+	YY_BREAK
+
+case 9:
+YY_RULE_SETUP
+return T_AND;
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+return T_OR;
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+return T_OPEN_PAREN;
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+return T_CLOSE_PAREN;
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+return T_NOT;
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+return T_EQUAL;
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+return T_UNEQUAL;
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+{
+		str = zconftext[0];
+		new_string();
+		BEGIN(STRING);
+	}
+	YY_BREAK
+case 17:
+/* rule 17 can match eol */
+YY_RULE_SETUP
+BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+/* ignore */
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+{
+		struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+		if (id && id->flags & TF_PARAM) {
+			zconflval.id = id;
+			return id->token;
+		}
+		alloc_string(zconftext, zconfleng);
+		zconflval.string = text;
+		return T_WORD;
+	}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+/* comment */
+	YY_BREAK
+case 21:
+/* rule 21 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+
+	YY_BREAK
+case YY_STATE_EOF(PARAM):
+{
+		BEGIN(INITIAL);
+	}
+	YY_BREAK
+
+case 23:
+/* rule 23 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+		append_string(zconftext, zconfleng);
+		zconflval.string = text;
+		return T_WORD_QUOTE;
+	}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+{
+		append_string(zconftext, zconfleng);
+	}
+	YY_BREAK
+case 25:
+/* rule 25 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+		append_string(zconftext + 1, zconfleng - 1);
+		zconflval.string = text;
+		return T_WORD_QUOTE;
+	}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+{
+		append_string(zconftext + 1, zconfleng - 1);
+	}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+{
+		if (str == zconftext[0]) {
+			BEGIN(PARAM);
+			zconflval.string = text;
+			return T_WORD_QUOTE;
+		} else
+			append_string(zconftext, 1);
+	}
+	YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+{
+		printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+		current_file->lineno++;
+		BEGIN(INITIAL);
+		return T_EOL;
+	}
+	YY_BREAK
+case YY_STATE_EOF(STRING):
+{
+		BEGIN(INITIAL);
+	}
+	YY_BREAK
+
+case 29:
+YY_RULE_SETUP
+{
+		ts = 0;
+		for (i = 0; i < zconfleng; i++) {
+			if (zconftext[i] == '\t')
+				ts = (ts & ~7) + 8;
+			else
+				ts++;
+		}
+		last_ts = ts;
+		if (first_ts) {
+			if (ts < first_ts) {
+				zconf_endhelp();
+				return T_HELPTEXT;
+			}
+			ts -= first_ts;
+			while (ts > 8) {
+				append_string("        ", 8);
+				ts -= 8;
+			}
+			append_string("        ", ts);
+		}
+	}
+	YY_BREAK
+case 30:
+/* rule 30 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+		current_file->lineno++;
+		zconf_endhelp();
+		return T_HELPTEXT;
+	}
+	YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+{
+		current_file->lineno++;
+		append_string("\n", 1);
+	}
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+{
+		append_string(zconftext, zconfleng);
+		if (!first_ts)
+			first_ts = last_ts;
+	}
+	YY_BREAK
+case YY_STATE_EOF(HELP):
+{
+		zconf_endhelp();
+		return T_HELPTEXT;
+	}
+	YY_BREAK
+
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMAND):
+{
+	if (current_file) {
+		zconf_endfile();
+		return T_EOL;
+	}
+	fclose(zconfin);
+	yyterminate();
+}
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+YY_FATAL_ERROR( "flex scanner jammed" );
+	YY_BREAK
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed zconfin at a new source and called
+			 * zconflex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( zconfwrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * zconftext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of zconflex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			size_t num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+			int yy_c_buf_p_offset =
+				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			zconfrestart(zconfin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = (yy_start);
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+
+	yy_current_state = yy_nxt[yy_current_state][1];
+	yy_is_jam = (yy_current_state <= 0);
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+	register char *yy_cp;
+
+    yy_cp = (yy_c_buf_p);
+
+	/* undo effects of setting up zconftext */
+	*yy_cp = (yy_hold_char);
+
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = (yy_n_chars) + 2;
+		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		register char *source =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					zconfrestart(zconfin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( zconfwrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve zconftext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void zconfrestart  (FILE * input_file )
+{
+
+	if ( ! YY_CURRENT_BUFFER ){
+        zconfensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            zconf_create_buffer(zconfin,YY_BUF_SIZE );
+	}
+
+	zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
+	zconf_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+    void zconf_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		zconfpop_buffer_state();
+	 *		zconfpush_buffer_state(new_buffer);
+     */
+	zconfensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	zconf_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (zconfwrap()) processing, but the only time this flag
+	 * is looked at is after zconfwrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void zconf_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE zconf_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	zconf_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with zconf_create_buffer()
+ *
+ */
+    void zconf_delete_buffer (YY_BUFFER_STATE  b )
+{
+
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		zconffree((void *) b->yy_ch_buf  );
+
+	zconffree((void *) b  );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a zconfrestart() or at EOF.
+ */
+    static void zconf_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+
+	zconf_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then zconf_init_buffer was _probably_
+     * called from zconfrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = 0;
+
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+    void zconf_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		zconf_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *
+ */
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	zconfensure_buffer_stack();
+
+	/* This block is copied from zconf_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from zconf_switch_to_buffer. */
+	zconf_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *
+ */
+void zconfpop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	zconf_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		zconf_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void zconfensure_buffer_stack (void)
+{
+	int num_to_alloc;
+
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	zconf_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to zconflex() will
+ * scan from a @e copy of @a str.
+ * @param yy_str a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       zconf_scan_bytes() instead.
+ */
+YY_BUFFER_STATE zconf_scan_string (yyconst char * yy_str )
+{
+
+	return zconf_scan_bytes(yy_str,strlen(yy_str) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_bytes  (yyconst char * bytes, int  len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) zconfalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = zconf_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up zconftext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		zconftext[zconfleng] = (yy_hold_char); \
+		(yy_c_buf_p) = zconftext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		zconfleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int zconfget_lineno  (void)
+{
+
+    return zconflineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *zconfget_in  (void)
+{
+        return zconfin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *zconfget_out  (void)
+{
+        return zconfout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int zconfget_leng  (void)
+{
+        return zconfleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *zconfget_text  (void)
+{
+        return zconftext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void zconfset_lineno (int  line_number )
+{
+
+    zconflineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see zconf_switch_to_buffer
+ */
+void zconfset_in (FILE *  in_str )
+{
+        zconfin = in_str ;
+}
+
+void zconfset_out (FILE *  out_str )
+{
+        zconfout = out_str ;
+}
+
+int zconfget_debug  (void)
+{
+        return zconf_flex_debug;
+}
+
+void zconfset_debug (int  bdebug )
+{
+        zconf_flex_debug = bdebug ;
+}
+
+/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
+int zconflex_destroy  (void)
+{
+
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		zconf_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		zconfpop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	zconffree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+    	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+    	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *zconfalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *zconfrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void zconffree (void * ptr )
+{
+	free( (char *) ptr );	/* see zconfrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef yytext_ptr
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+void zconf_starthelp(void)
+{
+	new_string();
+	last_ts = first_ts = 0;
+	BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+	zconflval.string = text;
+	BEGIN(INITIAL);
+}
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+	char *env, fullname[PATH_MAX+1];
+	FILE *f;
+
+	f = fopen(name, "r");
+	if (!f && name[0] != '/') {
+		env = getenv(SRCTREE);
+		if (env) {
+			sprintf(fullname, "%s/%s", env, name);
+			f = fopen(fullname, "r");
+		}
+	}
+	return f;
+}
+
+void zconf_initscan(const char *name)
+{
+	zconfin = zconf_fopen(name);
+	if (!zconfin) {
+		printf("can't find file %s\n", name);
+		exit(1);
+	}
+
+	current_buf = malloc(sizeof(*current_buf));
+	memset(current_buf, 0, sizeof(*current_buf));
+
+	current_file = file_lookup(name);
+	current_file->lineno = 1;
+	current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+	struct file *file = file_lookup(name);
+	struct buffer *buf = malloc(sizeof(*buf));
+	memset(buf, 0, sizeof(*buf));
+
+	current_buf->state = YY_CURRENT_BUFFER;
+	zconfin = zconf_fopen(name);
+	if (!zconfin) {
+		printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+		exit(1);
+	}
+	zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
+	buf->parent = current_buf;
+	current_buf = buf;
+
+	if (file->flags & FILE_BUSY) {
+		printf("recursive scan (%s)?\n", name);
+		exit(1);
+	}
+	if (file->flags & FILE_SCANNED) {
+		printf("file %s already scanned?\n", name);
+		exit(1);
+	}
+	file->flags |= FILE_BUSY;
+	file->lineno = 1;
+	file->parent = current_file;
+	current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+	struct buffer *parent;
+
+	current_file->flags |= FILE_SCANNED;
+	current_file->flags &= ~FILE_BUSY;
+	current_file = current_file->parent;
+
+	parent = current_buf->parent;
+	if (parent) {
+		fclose(zconfin);
+		zconf_delete_buffer(YY_CURRENT_BUFFER);
+		zconf_switch_to_buffer(parent->state);
+	}
+	free(current_buf);
+	current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+	return current_pos.lineno;
+}
+
+char *zconf_curname(void)
+{
+	return current_pos.file ? current_pos.file->name : "<none>";
+}
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lxdialog/BIG.FAT.WARNING
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lxdialog/BIG.FAT.WARNING	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lxdialog/BIG.FAT.WARNING	(revision 20)
@@ -0,0 +1,4 @@
+This is NOT the official version of dialog.  This version has been
+significantly modified from the original.  It is for use by the Linux
+busybox configuration script.  Please do not bother Savio Lam with
+questions about this program.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lxdialog/Makefile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lxdialog/Makefile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/lxdialog/Makefile	(revision 20)
@@ -0,0 +1,21 @@
+# Makefile to build lxdialog package
+#
+
+check-lxdialog  := $(srctree)/$(src)/check-lxdialog.sh
+
+# Use reursively expanded variables so we do not call gcc unless
+# we really need to do so. (Do not call gcc as part of make mrproper)
+HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
+HOST_LOADLIBES   = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
+
+HOST_EXTRACFLAGS += -DLOCALE
+
+PHONY += dochecklxdialog
+$(obj)/dochecklxdialog:
+	$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES)
+
+hostprogs-y	:= lxdialog
+always		:= $(hostprogs-y) dochecklxdialog
+
+lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \
+		 util.o lxdialog.o msgbox.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/qconf.cc
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/qconf.cc	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/qconf.cc	(revision 20)
@@ -0,0 +1,1426 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <qapplication.h>
+#include <qmainwindow.h>
+#include <qtoolbar.h>
+#include <qvbox.h>
+#include <qsplitter.h>
+#include <qlistview.h>
+#include <qtextview.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qaction.h>
+#include <qheader.h>
+#include <qfiledialog.h>
+#include <qregexp.h>
+
+#include <stdlib.h>
+
+#include "lkc.h"
+#include "qconf.h"
+
+#include "qconf.moc"
+#include "images.c"
+
+#ifdef _
+# undef _
+# define _ qgettext
+#endif
+
+static QApplication *configApp;
+
+static inline QString qgettext(const char* str)
+{
+  return QString::fromLocal8Bit(gettext(str));
+}
+
+static inline QString qgettext(const QString& str)
+{
+  return QString::fromLocal8Bit(gettext(str.latin1()));
+}
+
+ConfigSettings::ConfigSettings()
+	: showAll(false), showName(false), showRange(false), showData(false)
+{
+}
+
+#if QT_VERSION >= 300
+/**
+ * Reads the list column settings from the application settings.
+ */
+void ConfigSettings::readListSettings()
+{
+	showAll = readBoolEntry("/kconfig/qconf/showAll", false);
+	showName = readBoolEntry("/kconfig/qconf/showName", false);
+	showRange = readBoolEntry("/kconfig/qconf/showRange", false);
+	showData = readBoolEntry("/kconfig/qconf/showData", false);
+}
+
+/**
+ * Reads a list of integer values from the application settings.
+ */
+QValueList<int> ConfigSettings::readSizes(const QString& key, bool *ok)
+{
+	QValueList<int> result;
+	QStringList entryList = readListEntry(key, ok);
+	if (ok) {
+		QStringList::Iterator it;
+		for (it = entryList.begin(); it != entryList.end(); ++it)
+			result.push_back((*it).toInt());
+	}
+
+	return result;
+}
+
+/**
+ * Writes a list of integer values to the application settings.
+ */
+bool ConfigSettings::writeSizes(const QString& key, const QValueList<int>& value)
+{
+	QStringList stringList;
+	QValueList<int>::ConstIterator it;
+
+	for (it = value.begin(); it != value.end(); ++it)
+		stringList.push_back(QString::number(*it));
+	return writeEntry(key, stringList);
+}
+#endif
+
+
+/*
+ * update all the children of a menu entry
+ *   removes/adds the entries from the parent widget as necessary
+ *
+ * parent: either the menu list widget or a menu entry widget
+ * menu: entry to be updated
+ */
+template <class P>
+void ConfigList::updateMenuList(P* parent, struct menu* menu)
+{
+	struct menu* child;
+	ConfigItem* item;
+	ConfigItem* last;
+	bool visible;
+	enum prop_type type;
+
+	if (!menu) {
+		while ((item = parent->firstChild()))
+			delete item;
+		return;
+	}
+
+	last = parent->firstChild();
+	if (last && !last->goParent)
+		last = 0;
+	for (child = menu->list; child; child = child->next) {
+		item = last ? last->nextSibling() : parent->firstChild();
+		type = child->prompt ? child->prompt->type : P_UNKNOWN;
+
+		switch (mode) {
+		case menuMode:
+			if (!(child->flags & MENU_ROOT))
+				goto hide;
+			break;
+		case symbolMode:
+			if (child->flags & MENU_ROOT)
+				goto hide;
+			break;
+		default:
+			break;
+		}
+
+		visible = menu_is_visible(child);
+		if (showAll || visible) {
+			if (!item || item->menu != child)
+				item = new ConfigItem(parent, last, child, visible);
+			else
+				item->testUpdateMenu(visible);
+
+			if (mode == fullMode || mode == menuMode || type != P_MENU)
+				updateMenuList(item, child);
+			else
+				updateMenuList(item, 0);
+			last = item;
+			continue;
+		}
+	hide:
+		if (item && item->menu == child) {
+			last = parent->firstChild();
+			if (last == item)
+				last = 0;
+			else while (last->nextSibling() != item)
+				last = last->nextSibling();
+			delete item;
+		}
+	}
+}
+
+#if QT_VERSION >= 300
+/*
+ * set the new data
+ * TODO check the value
+ */
+void ConfigItem::okRename(int col)
+{
+	Parent::okRename(col);
+	sym_set_string_value(menu->sym, text(dataColIdx).latin1());
+}
+#endif
+
+/*
+ * update the displayed of a menu entry
+ */
+void ConfigItem::updateMenu(void)
+{
+	ConfigList* list;
+	struct symbol* sym;
+	struct property *prop;
+	QString prompt;
+	int type;
+	tristate expr;
+
+	list = listView();
+	if (goParent) {
+		setPixmap(promptColIdx, list->menuBackPix);
+		prompt = "..";
+		goto set_prompt;
+	}
+
+	sym = menu->sym;
+	prop = menu->prompt;
+	prompt = QString::fromLocal8Bit(menu_get_prompt(menu));
+
+	if (prop) switch (prop->type) {
+	case P_MENU:
+		if (list->mode == singleMode || list->mode == symbolMode) {
+			/* a menuconfig entry is displayed differently
+			 * depending whether it's at the view root or a child.
+			 */
+			if (sym && list->rootEntry == menu)
+				break;
+			setPixmap(promptColIdx, list->menuPix);
+		} else {
+			if (sym)
+				break;
+			setPixmap(promptColIdx, 0);
+		}
+		goto set_prompt;
+	case P_COMMENT:
+		setPixmap(promptColIdx, 0);
+		goto set_prompt;
+	default:
+		;
+	}
+	if (!sym)
+		goto set_prompt;
+
+	setText(nameColIdx, QString::fromLocal8Bit(sym->name));
+
+	type = sym_get_type(sym);
+	switch (type) {
+	case S_BOOLEAN:
+	case S_TRISTATE:
+		char ch;
+
+		if (!sym_is_changable(sym) && !list->showAll) {
+			setPixmap(promptColIdx, 0);
+			setText(noColIdx, QString::null);
+			setText(modColIdx, QString::null);
+			setText(yesColIdx, QString::null);
+			break;
+		}
+		expr = sym_get_tristate_value(sym);
+		switch (expr) {
+		case yes:
+			if (sym_is_choice_value(sym) && type == S_BOOLEAN)
+				setPixmap(promptColIdx, list->choiceYesPix);
+			else
+				setPixmap(promptColIdx, list->symbolYesPix);
+			setText(yesColIdx, "Y");
+			ch = 'Y';
+			break;
+		case mod:
+			setPixmap(promptColIdx, list->symbolModPix);
+			setText(modColIdx, "M");
+			ch = 'M';
+			break;
+		default:
+			if (sym_is_choice_value(sym) && type == S_BOOLEAN)
+				setPixmap(promptColIdx, list->choiceNoPix);
+			else
+				setPixmap(promptColIdx, list->symbolNoPix);
+			setText(noColIdx, "N");
+			ch = 'N';
+			break;
+		}
+		if (expr != no)
+			setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0);
+		if (expr != mod)
+			setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0);
+		if (expr != yes)
+			setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0);
+
+		setText(dataColIdx, QChar(ch));
+		break;
+	case S_INT:
+	case S_HEX:
+	case S_STRING:
+		const char* data;
+
+		data = sym_get_string_value(sym);
+
+#if QT_VERSION >= 300
+		int i = list->mapIdx(dataColIdx);
+		if (i >= 0)
+			setRenameEnabled(i, TRUE);
+#endif
+		setText(dataColIdx, data);
+		if (type == S_STRING)
+			prompt = QString("%1: %2").arg(prompt).arg(data);
+		else
+			prompt = QString("(%2) %1").arg(prompt).arg(data);
+		break;
+	}
+	if (!sym_has_value(sym) && visible)
+		prompt += " (NEW)";
+set_prompt:
+	setText(promptColIdx, prompt);
+}
+
+void ConfigItem::testUpdateMenu(bool v)
+{
+	ConfigItem* i;
+
+	visible = v;
+	if (!menu)
+		return;
+
+	sym_calc_value(menu->sym);
+	if (menu->flags & MENU_CHANGED) {
+		/* the menu entry changed, so update all list items */
+		menu->flags &= ~MENU_CHANGED;
+		for (i = (ConfigItem*)menu->data; i; i = i->nextItem)
+			i->updateMenu();
+	} else if (listView()->updateAll)
+		updateMenu();
+}
+
+void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align)
+{
+	ConfigList* list = listView();
+
+	if (visible) {
+		if (isSelected() && !list->hasFocus() && list->mode == menuMode)
+			Parent::paintCell(p, list->inactivedColorGroup, column, width, align);
+		else
+			Parent::paintCell(p, cg, column, width, align);
+	} else
+		Parent::paintCell(p, list->disabledColorGroup, column, width, align);
+}
+
+/*
+ * construct a menu entry
+ */
+void ConfigItem::init(void)
+{
+	if (menu) {
+		ConfigList* list = listView();
+		nextItem = (ConfigItem*)menu->data;
+		menu->data = this;
+
+		if (list->mode != fullMode)
+			setOpen(TRUE);
+		sym_calc_value(menu->sym);
+	}
+	updateMenu();
+}
+
+/*
+ * destruct a menu entry
+ */
+ConfigItem::~ConfigItem(void)
+{
+	if (menu) {
+		ConfigItem** ip = (ConfigItem**)&menu->data;
+		for (; *ip; ip = &(*ip)->nextItem) {
+			if (*ip == this) {
+				*ip = nextItem;
+				break;
+			}
+		}
+	}
+}
+
+void ConfigLineEdit::show(ConfigItem* i)
+{
+	item = i;
+	if (sym_get_string_value(item->menu->sym))
+		setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym)));
+	else
+		setText(QString::null);
+	Parent::show();
+	setFocus();
+}
+
+void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
+{
+	switch (e->key()) {
+	case Key_Escape:
+		break;
+	case Key_Return:
+	case Key_Enter:
+		sym_set_string_value(item->menu->sym, text().latin1());
+		parent()->updateList(item);
+		break;
+	default:
+		Parent::keyPressEvent(e);
+		return;
+	}
+	e->accept();
+	parent()->list->setFocus();
+	hide();
+}
+
+ConfigList::ConfigList(ConfigView* p, ConfigMainWindow* cv, ConfigSettings* configSettings)
+	: Parent(p), cview(cv),
+	  updateAll(false),
+	  symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),
+	  choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no),
+	  menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void),
+	  showAll(false), showName(false), showRange(false), showData(false),
+	  rootEntry(0)
+{
+	int i;
+
+	setSorting(-1);
+	setRootIsDecorated(TRUE);
+	disabledColorGroup = palette().active();
+	disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text());
+	inactivedColorGroup = palette().active();
+	inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight());
+
+	connect(this, SIGNAL(selectionChanged(void)),
+		SLOT(updateSelection(void)));
+
+	if (configSettings) {
+		showAll = configSettings->showAll;
+		showName = configSettings->showName;
+		showRange = configSettings->showRange;
+		showData = configSettings->showData;
+	}
+
+	for (i = 0; i < colNr; i++)
+		colMap[i] = colRevMap[i] = -1;
+	addColumn(promptColIdx, "Option");
+
+	reinit();
+}
+
+void ConfigList::reinit(void)
+{
+	removeColumn(dataColIdx);
+	removeColumn(yesColIdx);
+	removeColumn(modColIdx);
+	removeColumn(noColIdx);
+	removeColumn(nameColIdx);
+
+	if (showName)
+		addColumn(nameColIdx, "Name");
+	if (showRange) {
+		addColumn(noColIdx, "N");
+		addColumn(modColIdx, "M");
+		addColumn(yesColIdx, "Y");
+	}
+	if (showData)
+		addColumn(dataColIdx, "Value");
+
+	updateListAll();
+}
+
+void ConfigList::updateSelection(void)
+{
+	struct menu *menu;
+	enum prop_type type;
+
+	ConfigItem* item = (ConfigItem*)selectedItem();
+	if (!item)
+		return;
+
+	cview->setHelp(item);
+
+	menu = item->menu;
+	if (!menu)
+		return;
+	type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+	if (mode == menuMode && type == P_MENU)
+		emit menuSelected(menu);
+}
+
+void ConfigList::updateList(ConfigItem* item)
+{
+	ConfigItem* last = 0;
+
+	if (!rootEntry)
+		goto update;
+
+	if (rootEntry != &rootmenu && (mode == singleMode ||
+	    (mode == symbolMode && rootEntry->parent != &rootmenu))) {
+		item = firstChild();
+		if (!item)
+			item = new ConfigItem(this, 0, true);
+		last = item;
+	}
+	if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) &&
+	    rootEntry->sym && rootEntry->prompt) {
+		item = last ? last->nextSibling() : firstChild();
+		if (!item)
+			item = new ConfigItem(this, last, rootEntry, true);
+		else
+			item->testUpdateMenu(true);
+
+		updateMenuList(item, rootEntry);
+		triggerUpdate();
+		return;
+	}
+update:
+	updateMenuList(this, rootEntry);
+	triggerUpdate();
+}
+
+void ConfigList::setAllOpen(bool open)
+{
+	QListViewItemIterator it(this);
+
+	for (; it.current(); it++)
+		it.current()->setOpen(open);
+}
+
+void ConfigList::setValue(ConfigItem* item, tristate val)
+{
+	struct symbol* sym;
+	int type;
+	tristate oldval;
+
+	sym = item->menu ? item->menu->sym : 0;
+	if (!sym)
+		return;
+
+	type = sym_get_type(sym);
+	switch (type) {
+	case S_BOOLEAN:
+	case S_TRISTATE:
+		oldval = sym_get_tristate_value(sym);
+
+		if (!sym_set_tristate_value(sym, val))
+			return;
+		if (oldval == no && item->menu->list)
+			item->setOpen(TRUE);
+		parent()->updateList(item);
+		break;
+	}
+}
+
+void ConfigList::changeValue(ConfigItem* item)
+{
+	struct symbol* sym;
+	struct menu* menu;
+	int type, oldexpr, newexpr;
+
+	menu = item->menu;
+	if (!menu)
+		return;
+	sym = menu->sym;
+	if (!sym) {
+		if (item->menu->list)
+			item->setOpen(!item->isOpen());
+		return;
+	}
+
+	type = sym_get_type(sym);
+	switch (type) {
+	case S_BOOLEAN:
+	case S_TRISTATE:
+		oldexpr = sym_get_tristate_value(sym);
+		newexpr = sym_toggle_tristate_value(sym);
+		if (item->menu->list) {
+			if (oldexpr == newexpr)
+				item->setOpen(!item->isOpen());
+			else if (oldexpr == no)
+				item->setOpen(TRUE);
+		}
+		if (oldexpr != newexpr)
+			parent()->updateList(item);
+		break;
+	case S_INT:
+	case S_HEX:
+	case S_STRING:
+#if QT_VERSION >= 300
+		if (colMap[dataColIdx] >= 0)
+			item->startRename(colMap[dataColIdx]);
+		else
+#endif
+			parent()->lineEdit->show(item);
+		break;
+	}
+}
+
+void ConfigList::setRootMenu(struct menu *menu)
+{
+	enum prop_type type;
+
+	if (rootEntry == menu)
+		return;
+	type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN;
+	if (type != P_MENU)
+		return;
+	updateMenuList(this, 0);
+	rootEntry = menu;
+	updateListAll();
+	setSelected(currentItem(), hasFocus());
+}
+
+void ConfigList::setParentMenu(void)
+{
+	ConfigItem* item;
+	struct menu *oldroot;
+
+	oldroot = rootEntry;
+	if (rootEntry == &rootmenu)
+		return;
+	setRootMenu(menu_get_parent_menu(rootEntry->parent));
+
+	QListViewItemIterator it(this);
+	for (; (item = (ConfigItem*)it.current()); it++) {
+		if (item->menu == oldroot) {
+			setCurrentItem(item);
+			ensureItemVisible(item);
+			break;
+		}
+	}
+}
+
+void ConfigList::keyPressEvent(QKeyEvent* ev)
+{
+	QListViewItem* i = currentItem();
+	ConfigItem* item;
+	struct menu *menu;
+	enum prop_type type;
+
+	if (ev->key() == Key_Escape && mode != fullMode) {
+		emit parentSelected();
+		ev->accept();
+		return;
+	}
+
+	if (!i) {
+		Parent::keyPressEvent(ev);
+		return;
+	}
+	item = (ConfigItem*)i;
+
+	switch (ev->key()) {
+	case Key_Return:
+	case Key_Enter:
+		if (item->goParent) {
+			emit parentSelected();
+			break;
+		}
+		menu = item->menu;
+		if (!menu)
+			break;
+		type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+		if (type == P_MENU && rootEntry != menu &&
+		    mode != fullMode && mode != menuMode) {
+			emit menuSelected(menu);
+			break;
+		}
+	case Key_Space:
+		changeValue(item);
+		break;
+	case Key_N:
+		setValue(item, no);
+		break;
+	case Key_M:
+		setValue(item, mod);
+		break;
+	case Key_Y:
+		setValue(item, yes);
+		break;
+	default:
+		Parent::keyPressEvent(ev);
+		return;
+	}
+	ev->accept();
+}
+
+void ConfigList::contentsMousePressEvent(QMouseEvent* e)
+{
+	//QPoint p(contentsToViewport(e->pos()));
+	//printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y());
+	Parent::contentsMousePressEvent(e);
+}
+
+void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e)
+{
+	QPoint p(contentsToViewport(e->pos()));
+	ConfigItem* item = (ConfigItem*)itemAt(p);
+	struct menu *menu;
+	enum prop_type ptype;
+	const QPixmap* pm;
+	int idx, x;
+
+	if (!item)
+		goto skip;
+
+	menu = item->menu;
+	x = header()->offset() + p.x();
+	idx = colRevMap[header()->sectionAt(x)];
+	switch (idx) {
+	case promptColIdx:
+		pm = item->pixmap(promptColIdx);
+		if (pm) {
+			int off = header()->sectionPos(0) + itemMargin() +
+				treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0));
+			if (x >= off && x < off + pm->width()) {
+				if (item->goParent) {
+					emit parentSelected();
+					break;
+				} else if (!menu)
+					break;
+				ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+				if (ptype == P_MENU && rootEntry != menu &&
+				    mode != fullMode && mode != menuMode)
+					emit menuSelected(menu);
+				else
+					changeValue(item);
+			}
+		}
+		break;
+	case noColIdx:
+		setValue(item, no);
+		break;
+	case modColIdx:
+		setValue(item, mod);
+		break;
+	case yesColIdx:
+		setValue(item, yes);
+		break;
+	case dataColIdx:
+		changeValue(item);
+		break;
+	}
+
+skip:
+	//printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y());
+	Parent::contentsMouseReleaseEvent(e);
+}
+
+void ConfigList::contentsMouseMoveEvent(QMouseEvent* e)
+{
+	//QPoint p(contentsToViewport(e->pos()));
+	//printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y());
+	Parent::contentsMouseMoveEvent(e);
+}
+
+void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e)
+{
+	QPoint p(contentsToViewport(e->pos()));
+	ConfigItem* item = (ConfigItem*)itemAt(p);
+	struct menu *menu;
+	enum prop_type ptype;
+
+	if (!item)
+		goto skip;
+	if (item->goParent) {
+		emit parentSelected();
+		goto skip;
+	}
+	menu = item->menu;
+	if (!menu)
+		goto skip;
+	ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+	if (ptype == P_MENU && (mode == singleMode || mode == symbolMode))
+		emit menuSelected(menu);
+	else if (menu->sym)
+		changeValue(item);
+
+skip:
+	//printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y());
+	Parent::contentsMouseDoubleClickEvent(e);
+}
+
+void ConfigList::focusInEvent(QFocusEvent *e)
+{
+	Parent::focusInEvent(e);
+
+	QListViewItem* item = currentItem();
+	if (!item)
+		return;
+
+	setSelected(item, TRUE);
+	emit gotFocus();
+}
+
+ConfigView* ConfigView::viewList;
+
+ConfigView::ConfigView(QWidget* parent, ConfigMainWindow* cview,
+		       ConfigSettings *configSettings)
+	: Parent(parent)
+{
+	list = new ConfigList(this, cview, configSettings);
+	lineEdit = new ConfigLineEdit(this);
+	lineEdit->hide();
+
+	this->nextView = viewList;
+	viewList = this;
+}
+
+ConfigView::~ConfigView(void)
+{
+	ConfigView** vp;
+
+	for (vp = &viewList; *vp; vp = &(*vp)->nextView) {
+		if (*vp == this) {
+			*vp = nextView;
+			break;
+		}
+	}
+}
+
+void ConfigView::updateList(ConfigItem* item)
+{
+	ConfigView* v;
+
+	for (v = viewList; v; v = v->nextView)
+		v->list->updateList(item);
+}
+
+void ConfigView::updateListAll(void)
+{
+	ConfigView* v;
+
+	for (v = viewList; v; v = v->nextView)
+		v->list->updateListAll();
+}
+
+/*
+ * Construct the complete config widget
+ */
+ConfigMainWindow::ConfigMainWindow(void)
+{
+	QMenuBar* menu;
+	bool ok;
+	int x, y, width, height;
+
+	QWidget *d = configApp->desktop();
+
+	ConfigSettings* configSettings = new ConfigSettings();
+#if QT_VERSION >= 300
+	width = configSettings->readNumEntry("/kconfig/qconf/window width", d->width() - 64);
+	height = configSettings->readNumEntry("/kconfig/qconf/window height", d->height() - 64);
+	resize(width, height);
+	x = configSettings->readNumEntry("/kconfig/qconf/window x", 0, &ok);
+	if (ok)
+		y = configSettings->readNumEntry("/kconfig/qconf/window y", 0, &ok);
+	if (ok)
+		move(x, y);
+	showDebug = configSettings->readBoolEntry("/kconfig/qconf/showDebug", false);
+
+	// read list settings into configSettings, will be used later for ConfigList setup
+	configSettings->readListSettings();
+#else
+	width = d->width() - 64;
+	height = d->height() - 64;
+	resize(width, height);
+	showDebug = false;
+#endif
+
+	split1 = new QSplitter(this);
+	split1->setOrientation(QSplitter::Horizontal);
+	setCentralWidget(split1);
+
+	menuView = new ConfigView(split1, this, configSettings);
+	menuList = menuView->list;
+
+	split2 = new QSplitter(split1);
+	split2->setOrientation(QSplitter::Vertical);
+
+	// create config tree
+	configView = new ConfigView(split2, this, configSettings);
+	configList = configView->list;
+
+	helpText = new QTextView(split2);
+	helpText->setTextFormat(Qt::RichText);
+
+	setTabOrder(configList, helpText);
+	configList->setFocus();
+
+	menu = menuBar();
+	toolBar = new QToolBar("Tools", this);
+
+	backAction = new QAction("Back", QPixmap(xpm_back), "Back", 0, this);
+	  connect(backAction, SIGNAL(activated()), SLOT(goBack()));
+	  backAction->setEnabled(FALSE);
+	QAction *quitAction = new QAction("Quit", "&Quit", CTRL+Key_Q, this);
+	  connect(quitAction, SIGNAL(activated()), SLOT(close()));
+	QAction *loadAction = new QAction("Load", QPixmap(xpm_load), "&Load", CTRL+Key_L, this);
+	  connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
+	QAction *saveAction = new QAction("Save", QPixmap(xpm_save), "&Save", CTRL+Key_S, this);
+	  connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
+	QAction *saveAsAction = new QAction("Save As...", "Save &As...", 0, this);
+	  connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
+	QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), "Split View", 0, this);
+	  connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView()));
+	QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), "Split View", 0, this);
+	  connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView()));
+	QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), "Full View", 0, this);
+	  connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView()));
+
+	QAction *showNameAction = new QAction(NULL, "Show Name", 0, this);
+	  showNameAction->setToggleAction(TRUE);
+	  showNameAction->setOn(configList->showName);
+	  connect(showNameAction, SIGNAL(toggled(bool)), SLOT(setShowName(bool)));
+	QAction *showRangeAction = new QAction(NULL, "Show Range", 0, this);
+	  showRangeAction->setToggleAction(TRUE);
+	  showRangeAction->setOn(configList->showRange);
+	  connect(showRangeAction, SIGNAL(toggled(bool)), SLOT(setShowRange(bool)));
+	QAction *showDataAction = new QAction(NULL, "Show Data", 0, this);
+	  showDataAction->setToggleAction(TRUE);
+	  showDataAction->setOn(configList->showData);
+	  connect(showDataAction, SIGNAL(toggled(bool)), SLOT(setShowData(bool)));
+	QAction *showAllAction = new QAction(NULL, "Show All Options", 0, this);
+	  showAllAction->setToggleAction(TRUE);
+	  showAllAction->setOn(configList->showAll);
+	  connect(showAllAction, SIGNAL(toggled(bool)), SLOT(setShowAll(bool)));
+	QAction *showDebugAction = new QAction(NULL, "Show Debug Info", 0, this);
+	  showDebugAction->setToggleAction(TRUE);
+	  showDebugAction->setOn(showDebug);
+	  connect(showDebugAction, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
+
+	QAction *showIntroAction = new QAction(NULL, "Introduction", 0, this);
+	  connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
+	QAction *showAboutAction = new QAction(NULL, "About", 0, this);
+	  connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
+
+	// init tool bar
+	backAction->addTo(toolBar);
+	toolBar->addSeparator();
+	loadAction->addTo(toolBar);
+	saveAction->addTo(toolBar);
+	toolBar->addSeparator();
+	singleViewAction->addTo(toolBar);
+	splitViewAction->addTo(toolBar);
+	fullViewAction->addTo(toolBar);
+
+	// create config menu
+	QPopupMenu* config = new QPopupMenu(this);
+	menu->insertItem("&File", config);
+	loadAction->addTo(config);
+	saveAction->addTo(config);
+	saveAsAction->addTo(config);
+	config->insertSeparator();
+	quitAction->addTo(config);
+
+	// create options menu
+	QPopupMenu* optionMenu = new QPopupMenu(this);
+	menu->insertItem("&Option", optionMenu);
+	showNameAction->addTo(optionMenu);
+	showRangeAction->addTo(optionMenu);
+	showDataAction->addTo(optionMenu);
+	optionMenu->insertSeparator();
+	showAllAction->addTo(optionMenu);
+	showDebugAction->addTo(optionMenu);
+
+	// create help menu
+	QPopupMenu* helpMenu = new QPopupMenu(this);
+	menu->insertSeparator();
+	menu->insertItem("&Help", helpMenu);
+	showIntroAction->addTo(helpMenu);
+	showAboutAction->addTo(helpMenu);
+
+	connect(configList, SIGNAL(menuSelected(struct menu *)),
+		SLOT(changeMenu(struct menu *)));
+	connect(configList, SIGNAL(parentSelected()),
+		SLOT(goBack()));
+	connect(menuList, SIGNAL(menuSelected(struct menu *)),
+		SLOT(changeMenu(struct menu *)));
+
+	connect(configList, SIGNAL(gotFocus(void)),
+		SLOT(listFocusChanged(void)));
+	connect(menuList, SIGNAL(gotFocus(void)),
+		SLOT(listFocusChanged(void)));
+
+#if QT_VERSION >= 300
+	QString listMode = configSettings->readEntry("/kconfig/qconf/listMode", "symbol");
+	if (listMode == "single")
+		showSingleView();
+	else if (listMode == "full")
+		showFullView();
+	else /*if (listMode == "split")*/
+		showSplitView();
+
+	// UI setup done, restore splitter positions
+	QValueList<int> sizes = configSettings->readSizes("/kconfig/qconf/split1", &ok);
+	if (ok)
+		split1->setSizes(sizes);
+
+	sizes = configSettings->readSizes("/kconfig/qconf/split2", &ok);
+	if (ok)
+		split2->setSizes(sizes);
+#else
+	showSplitView();
+#endif
+	delete configSettings;
+}
+
+static QString print_filter(const QString &str)
+{
+	QRegExp re("[<>&\"\\n]");
+	QString res = str;
+	for (int i = 0; (i = res.find(re, i)) >= 0;) {
+		switch (res[i].latin1()) {
+		case '<':
+			res.replace(i, 1, "&lt;");
+			i += 4;
+			break;
+		case '>':
+			res.replace(i, 1, "&gt;");
+			i += 4;
+			break;
+		case '&':
+			res.replace(i, 1, "&amp;");
+			i += 5;
+			break;
+		case '"':
+			res.replace(i, 1, "&quot;");
+			i += 6;
+			break;
+		case '\n':
+			res.replace(i, 1, "<br>");
+			i += 4;
+			break;
+		}
+	}
+	return res;
+}
+
+static void expr_print_help(void *data, const char *str)
+{
+	reinterpret_cast<QString*>(data)->append(print_filter(str));
+}
+
+/*
+ * display a new help entry as soon as a new menu entry is selected
+ */
+void ConfigMainWindow::setHelp(QListViewItem* item)
+{
+	struct symbol* sym;
+	struct menu* menu = 0;
+
+	configList->parent()->lineEdit->hide();
+	if (item)
+		menu = ((ConfigItem*)item)->menu;
+	if (!menu) {
+		helpText->setText(QString::null);
+		return;
+	}
+
+	QString head, debug, help;
+	menu = ((ConfigItem*)item)->menu;
+	sym = menu->sym;
+	if (sym) {
+		if (menu->prompt) {
+			head += "<big><b>";
+			head += print_filter(_(menu->prompt->text));
+			head += "</b></big>";
+			if (sym->name) {
+				head += " (";
+				head += print_filter(_(sym->name));
+				head += ")";
+			}
+		} else if (sym->name) {
+			head += "<big><b>";
+			head += print_filter(_(sym->name));
+			head += "</b></big>";
+		}
+		head += "<br><br>";
+
+		if (showDebug) {
+			debug += "type: ";
+			debug += print_filter(sym_type_name(sym->type));
+			if (sym_is_choice(sym))
+				debug += " (choice)";
+			debug += "<br>";
+			if (sym->rev_dep.expr) {
+				debug += "reverse dep: ";
+				expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE);
+				debug += "<br>";
+			}
+			for (struct property *prop = sym->prop; prop; prop = prop->next) {
+				switch (prop->type) {
+				case P_PROMPT:
+				case P_MENU:
+					debug += "prompt: ";
+					debug += print_filter(_(prop->text));
+					debug += "<br>";
+					break;
+				case P_DEFAULT:
+					debug += "default: ";
+					expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+					debug += "<br>";
+					break;
+				case P_CHOICE:
+					if (sym_is_choice(sym)) {
+						debug += "choice: ";
+						expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+						debug += "<br>";
+					}
+					break;
+				case P_SELECT:
+					debug += "select: ";
+					expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+					debug += "<br>";
+					break;
+				case P_RANGE:
+					debug += "range: ";
+					expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+					debug += "<br>";
+					break;
+				default:
+					debug += "unknown property: ";
+					debug += prop_get_type_name(prop->type);
+					debug += "<br>";
+				}
+				if (prop->visible.expr) {
+					debug += "&nbsp;&nbsp;&nbsp;&nbsp;dep: ";
+					expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE);
+					debug += "<br>";
+				}
+			}
+			debug += "<br>";
+		}
+
+		help = print_filter(_(sym->help));
+	} else if (menu->prompt) {
+		head += "<big><b>";
+		head += print_filter(_(menu->prompt->text));
+		head += "</b></big><br><br>";
+		if (showDebug) {
+			if (menu->prompt->visible.expr) {
+				debug += "&nbsp;&nbsp;dep: ";
+				expr_print(menu->prompt->visible.expr, expr_print_help, &debug, E_NONE);
+				debug += "<br><br>";
+			}
+		}
+	}
+	if (showDebug)
+		debug += QString().sprintf("defined at %s:%d<br><br>", menu->file->name, menu->lineno);
+	helpText->setText(head + debug + help);
+}
+
+void ConfigMainWindow::loadConfig(void)
+{
+	QString s = QFileDialog::getOpenFileName(".config", NULL, this);
+	if (s.isNull())
+		return;
+	if (conf_read(QFile::encodeName(s)))
+		QMessageBox::information(this, "qconf", "Unable to load configuration!");
+	ConfigView::updateListAll();
+}
+
+void ConfigMainWindow::saveConfig(void)
+{
+	if (conf_write(NULL))
+		QMessageBox::information(this, "qconf", "Unable to save configuration!");
+}
+
+void ConfigMainWindow::saveConfigAs(void)
+{
+	QString s = QFileDialog::getSaveFileName(".config", NULL, this);
+	if (s.isNull())
+		return;
+	if (conf_write(QFile::encodeName(s)))
+		QMessageBox::information(this, "qconf", "Unable to save configuration!");
+}
+
+void ConfigMainWindow::changeMenu(struct menu *menu)
+{
+	configList->setRootMenu(menu);
+	backAction->setEnabled(TRUE);
+}
+
+void ConfigMainWindow::listFocusChanged(void)
+{
+	if (menuList->hasFocus()) {
+		if (menuList->mode == menuMode)
+			configList->clearSelection();
+		setHelp(menuList->selectedItem());
+	} else if (configList->hasFocus()) {
+		setHelp(configList->selectedItem());
+	}
+}
+
+void ConfigMainWindow::goBack(void)
+{
+	ConfigItem* item;
+
+	configList->setParentMenu();
+	if (configList->rootEntry == &rootmenu)
+		backAction->setEnabled(FALSE);
+	item = (ConfigItem*)menuList->selectedItem();
+	while (item) {
+		if (item->menu == configList->rootEntry) {
+			menuList->setSelected(item, TRUE);
+			break;
+		}
+		item = (ConfigItem*)item->parent();
+	}
+}
+
+void ConfigMainWindow::showSingleView(void)
+{
+	menuView->hide();
+	menuList->setRootMenu(0);
+	configList->mode = singleMode;
+	if (configList->rootEntry == &rootmenu)
+		configList->updateListAll();
+	else
+		configList->setRootMenu(&rootmenu);
+	configList->setAllOpen(TRUE);
+	configList->setFocus();
+}
+
+void ConfigMainWindow::showSplitView(void)
+{
+	configList->mode = symbolMode;
+	if (configList->rootEntry == &rootmenu)
+		configList->updateListAll();
+	else
+		configList->setRootMenu(&rootmenu);
+	configList->setAllOpen(TRUE);
+	configApp->processEvents();
+	menuList->mode = menuMode;
+	menuList->setRootMenu(&rootmenu);
+	menuList->setAllOpen(TRUE);
+	menuView->show();
+	menuList->setFocus();
+}
+
+void ConfigMainWindow::showFullView(void)
+{
+	menuView->hide();
+	menuList->setRootMenu(0);
+	configList->mode = fullMode;
+	if (configList->rootEntry == &rootmenu)
+		configList->updateListAll();
+	else
+		configList->setRootMenu(&rootmenu);
+	configList->setAllOpen(FALSE);
+	configList->setFocus();
+}
+
+void ConfigMainWindow::setShowAll(bool b)
+{
+	if (configList->showAll == b)
+		return;
+	configList->showAll = b;
+	configList->updateListAll();
+	menuList->showAll = b;
+	menuList->updateListAll();
+}
+
+void ConfigMainWindow::setShowDebug(bool b)
+{
+	if (showDebug == b)
+		return;
+	showDebug = b;
+}
+
+void ConfigMainWindow::setShowName(bool b)
+{
+	if (configList->showName == b)
+		return;
+	configList->showName = b;
+	configList->reinit();
+	menuList->showName = b;
+	menuList->reinit();
+}
+
+void ConfigMainWindow::setShowRange(bool b)
+{
+	if (configList->showRange == b)
+		return;
+	configList->showRange = b;
+	configList->reinit();
+	menuList->showRange = b;
+	menuList->reinit();
+}
+
+void ConfigMainWindow::setShowData(bool b)
+{
+	if (configList->showData == b)
+		return;
+	configList->showData = b;
+	configList->reinit();
+	menuList->showData = b;
+	menuList->reinit();
+}
+
+/*
+ * ask for saving configuration before quitting
+ * TODO ask only when something changed
+ */
+void ConfigMainWindow::closeEvent(QCloseEvent* e)
+{
+	if (!sym_change_count) {
+		e->accept();
+		return;
+	}
+	QMessageBox mb("qconf", "Save configuration?", QMessageBox::Warning,
+			QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
+	mb.setButtonText(QMessageBox::Yes, "&Save Changes");
+	mb.setButtonText(QMessageBox::No, "&Discard Changes");
+	mb.setButtonText(QMessageBox::Cancel, "Cancel Exit");
+	switch (mb.exec()) {
+	case QMessageBox::Yes:
+		conf_write(NULL);
+	case QMessageBox::No:
+		e->accept();
+		break;
+	case QMessageBox::Cancel:
+		e->ignore();
+		break;
+	}
+}
+
+void ConfigMainWindow::showIntro(void)
+{
+	static char str[] = "Welcome to the qconf graphical busybox configuration tool for Linux.\n\n"
+		"For each option, a blank box indicates the feature is disabled, a check\n"
+		"indicates it is enabled, and a dot indicates that it is to be compiled\n"
+		"as a module.  Clicking on the box will cycle through the three states.\n\n"
+		"If you do not see an option (e.g., a device driver) that you believe\n"
+		"should be present, try turning on Show All Options under the Options menu.\n"
+		"Although there is no cross reference yet to help you figure out what other\n"
+		"options must be enabled to support the option you are interested in, you can\n"
+		"still view the help of a grayed-out option.\n\n"
+		"Toggling Show Debug Info under the Options menu will show the dependencies,\n"
+		"which you can then match by examining other options.\n\n";
+
+	QMessageBox::information(this, "qconf", str);
+}
+
+void ConfigMainWindow::showAbout(void)
+{
+	static char str[] = "qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
+		"Bug reports and feature request can also be entered at http://bugs.busybox.net/\n";
+
+	QMessageBox::information(this, "qconf", str);
+}
+
+void ConfigMainWindow::saveSettings(void)
+{
+#if QT_VERSION >= 300
+	ConfigSettings *configSettings = new ConfigSettings;
+	configSettings->writeEntry("/kconfig/qconf/window x", pos().x());
+	configSettings->writeEntry("/kconfig/qconf/window y", pos().y());
+	configSettings->writeEntry("/kconfig/qconf/window width", size().width());
+	configSettings->writeEntry("/kconfig/qconf/window height", size().height());
+	configSettings->writeEntry("/kconfig/qconf/showName", configList->showName);
+	configSettings->writeEntry("/kconfig/qconf/showRange", configList->showRange);
+	configSettings->writeEntry("/kconfig/qconf/showData", configList->showData);
+	configSettings->writeEntry("/kconfig/qconf/showAll", configList->showAll);
+	configSettings->writeEntry("/kconfig/qconf/showDebug", showDebug);
+
+	QString entry;
+	switch(configList->mode) {
+	case singleMode :
+		entry = "single";
+		break;
+
+	case symbolMode :
+		entry = "split";
+		break;
+
+	case fullMode :
+		entry = "full";
+		break;
+	}
+	configSettings->writeEntry("/kconfig/qconf/listMode", entry);
+
+	configSettings->writeSizes("/kconfig/qconf/split1", split1->sizes());
+	configSettings->writeSizes("/kconfig/qconf/split2", split2->sizes());
+
+	delete configSettings;
+#endif
+}
+
+void fixup_rootmenu(struct menu *menu)
+{
+	struct menu *child;
+	static int menu_cnt = 0;
+
+	menu->flags |= MENU_ROOT;
+	for (child = menu->list; child; child = child->next) {
+		if (child->prompt && child->prompt->type == P_MENU) {
+			menu_cnt++;
+			fixup_rootmenu(child);
+			menu_cnt--;
+		} else if (!menu_cnt)
+			fixup_rootmenu(child);
+	}
+}
+
+static const char *progname;
+
+static void usage(void)
+{
+	printf("%s <config>\n", progname);
+	exit(0);
+}
+
+int main(int ac, char** av)
+{
+	ConfigMainWindow* v;
+	const char *name;
+
+	bindtextdomain(PACKAGE, LOCALEDIR);
+	textdomain(PACKAGE);
+
+#ifndef LKC_DIRECT_LINK
+	kconfig_load();
+#endif
+
+	progname = av[0];
+	configApp = new QApplication(ac, av);
+	if (ac > 1 && av[1][0] == '-') {
+		switch (av[1][1]) {
+		case 'h':
+		case '?':
+			usage();
+		}
+		name = av[2];
+	} else
+		name = av[1];
+	if (!name)
+		usage();
+
+	conf_parse(name);
+	fixup_rootmenu(&rootmenu);
+	conf_read(NULL);
+	//zconfdump(stdout);
+
+	v = new ConfigMainWindow();
+
+	//zconfdump(stdout);
+	v->show();
+	configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit()));
+	configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings()));
+	configApp->exec();
+
+	return 0;
+}
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.gperf
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.gperf	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.gperf	(revision 20)
@@ -0,0 +1,43 @@
+%language=ANSI-C
+%define hash-function-name kconf_id_hash
+%define lookup-function-name kconf_id_lookup
+%define string-pool-name kconf_id_strings
+%compare-strncmp
+%enum
+%pic
+%struct-type
+
+struct kconf_id;
+
+%%
+mainmenu,	T_MAINMENU,	TF_COMMAND
+menu,		T_MENU,		TF_COMMAND
+endmenu,	T_ENDMENU,	TF_COMMAND
+source,		T_SOURCE,	TF_COMMAND
+choice,		T_CHOICE,	TF_COMMAND
+endchoice,	T_ENDCHOICE,	TF_COMMAND
+comment,	T_COMMENT,	TF_COMMAND
+config,		T_CONFIG,	TF_COMMAND
+menuconfig,	T_MENUCONFIG,	TF_COMMAND
+help,		T_HELP,		TF_COMMAND
+if,		T_IF,		TF_COMMAND|TF_PARAM
+endif,		T_ENDIF,	TF_COMMAND
+depends,	T_DEPENDS,	TF_COMMAND
+requires,	T_REQUIRES,	TF_COMMAND
+optional,	T_OPTIONAL,	TF_COMMAND
+default,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN
+prompt,		T_PROMPT,	TF_COMMAND
+tristate,	T_TYPE,		TF_COMMAND, S_TRISTATE
+def_tristate,	T_DEFAULT,	TF_COMMAND, S_TRISTATE
+bool,		T_TYPE,		TF_COMMAND, S_BOOLEAN
+boolean,	T_TYPE,		TF_COMMAND, S_BOOLEAN
+def_bool,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN
+def_boolean,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN
+int,		T_TYPE,		TF_COMMAND, S_INT
+hex,		T_TYPE,		TF_COMMAND, S_HEX
+string,		T_TYPE,		TF_COMMAND, S_STRING
+select,		T_SELECT,	TF_COMMAND
+enable,		T_SELECT,	TF_COMMAND
+range,		T_RANGE,	TF_COMMAND
+on,		T_ON,		TF_PARAM
+%%
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.hash.c_shipped
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.hash.c_shipped	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.hash.c_shipped	(revision 20)
@@ -0,0 +1,231 @@
+/* ANSI-C code produced by gperf version 3.0.1 */
+/* Command-line: gperf  */
+/* Computed positions: -k'1,3' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+struct kconf_id;
+/* maximum key range = 45, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+kconf_id_hash (register const char *str, register unsigned int len)
+{
+  static unsigned char asso_values[] =
+    {
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 25, 10, 15,
+       0,  0,  5, 47,  0,  0, 47, 47,  0, 10,
+       0, 20, 20, 20,  5,  0,  0, 20, 47, 47,
+      20, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
+      47, 47, 47, 47, 47, 47
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[2]];
+      /*FALLTHROUGH*/
+      case 2:
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+struct kconf_id_strings_t
+  {
+    char kconf_id_strings_str2[sizeof("if")];
+    char kconf_id_strings_str3[sizeof("int")];
+    char kconf_id_strings_str4[sizeof("help")];
+    char kconf_id_strings_str5[sizeof("endif")];
+    char kconf_id_strings_str6[sizeof("select")];
+    char kconf_id_strings_str7[sizeof("endmenu")];
+    char kconf_id_strings_str8[sizeof("tristate")];
+    char kconf_id_strings_str9[sizeof("endchoice")];
+    char kconf_id_strings_str10[sizeof("range")];
+    char kconf_id_strings_str11[sizeof("string")];
+    char kconf_id_strings_str12[sizeof("default")];
+    char kconf_id_strings_str13[sizeof("def_bool")];
+    char kconf_id_strings_str14[sizeof("menu")];
+    char kconf_id_strings_str16[sizeof("def_boolean")];
+    char kconf_id_strings_str17[sizeof("def_tristate")];
+    char kconf_id_strings_str18[sizeof("mainmenu")];
+    char kconf_id_strings_str20[sizeof("menuconfig")];
+    char kconf_id_strings_str21[sizeof("config")];
+    char kconf_id_strings_str22[sizeof("on")];
+    char kconf_id_strings_str23[sizeof("hex")];
+    char kconf_id_strings_str26[sizeof("source")];
+    char kconf_id_strings_str27[sizeof("depends")];
+    char kconf_id_strings_str28[sizeof("optional")];
+    char kconf_id_strings_str31[sizeof("enable")];
+    char kconf_id_strings_str32[sizeof("comment")];
+    char kconf_id_strings_str33[sizeof("requires")];
+    char kconf_id_strings_str34[sizeof("bool")];
+    char kconf_id_strings_str37[sizeof("boolean")];
+    char kconf_id_strings_str41[sizeof("choice")];
+    char kconf_id_strings_str46[sizeof("prompt")];
+  };
+static struct kconf_id_strings_t kconf_id_strings_contents =
+  {
+    "if",
+    "int",
+    "help",
+    "endif",
+    "select",
+    "endmenu",
+    "tristate",
+    "endchoice",
+    "range",
+    "string",
+    "default",
+    "def_bool",
+    "menu",
+    "def_boolean",
+    "def_tristate",
+    "mainmenu",
+    "menuconfig",
+    "config",
+    "on",
+    "hex",
+    "source",
+    "depends",
+    "optional",
+    "enable",
+    "comment",
+    "requires",
+    "bool",
+    "boolean",
+    "choice",
+    "prompt"
+  };
+#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
+#ifdef __GNUC__
+__inline
+#endif
+struct kconf_id *
+kconf_id_lookup (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 30,
+      MIN_WORD_LENGTH = 2,
+      MAX_WORD_LENGTH = 12,
+      MIN_HASH_VALUE = 2,
+      MAX_HASH_VALUE = 46
+    };
+
+  static struct kconf_id wordlist[] =
+    {
+      {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2,		T_IF,		TF_COMMAND|TF_PARAM},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3,		T_TYPE,		TF_COMMAND, S_INT},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str4,		T_HELP,		TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5,		T_ENDIF,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6,		T_SELECT,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7,	T_ENDMENU,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8,	T_TYPE,		TF_COMMAND, S_TRISTATE},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9,	T_ENDCHOICE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10,		T_RANGE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11,		T_TYPE,		TF_COMMAND, S_STRING},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14,		T_MENU,		TF_COMMAND},
+      {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17,	T_DEFAULT,	TF_COMMAND, S_TRISTATE},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18,	T_MAINMENU,	TF_COMMAND},
+      {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str20,	T_MENUCONFIG,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21,		T_CONFIG,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22,		T_ON,		TF_PARAM},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23,		T_TYPE,		TF_COMMAND, S_HEX},
+      {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26,		T_SOURCE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,	T_DEPENDS,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,	T_OPTIONAL,	TF_COMMAND},
+      {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31,		T_SELECT,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32,	T_COMMENT,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33,	T_REQUIRES,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str34,		T_TYPE,		TF_COMMAND, S_BOOLEAN},
+      {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37,	T_TYPE,		TF_COMMAND, S_BOOLEAN},
+      {-1}, {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41,		T_CHOICE,	TF_COMMAND},
+      {-1}, {-1}, {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46,		T_PROMPT,	TF_COMMAND}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = kconf_id_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register int o = wordlist[key].name;
+          if (o >= 0)
+            {
+              register const char *s = o + kconf_id_strings;
+
+              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+                return &wordlist[key];
+            }
+        }
+    }
+  return 0;
+}
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.l
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.l	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.l	(revision 20)
@@ -0,0 +1,350 @@
+%option backup nostdinit noyywrap never-interactive full ecs
+%option 8bit backup nodefault perf-report perf-report
+%x COMMAND HELP STRING PARAM
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE	16
+
+static struct {
+	struct file *file;
+	int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+        struct buffer *parent;
+        YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+void new_string(void)
+{
+	text = malloc(START_STRSIZE);
+	text_asize = START_STRSIZE;
+	text_size = 0;
+	*text = 0;
+}
+
+void append_string(const char *str, int size)
+{
+	int new_size = text_size + size + 1;
+	if (new_size > text_asize) {
+		new_size += START_STRSIZE - 1;
+		new_size &= -START_STRSIZE;
+		text = realloc(text, new_size);
+		text_asize = new_size;
+	}
+	memcpy(text + text_size, str, size);
+	text_size += size;
+	text[text_size] = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+	text = malloc(size + 1);
+	memcpy(text, str, size);
+	text[size] = 0;
+}
+%}
+
+ws	[ \n\t]
+n	[A-Za-z0-9_]
+
+%%
+	int str = 0;
+	int ts, i;
+
+[ \t]*#.*\n	|
+[ \t]*\n	{
+	current_file->lineno++;
+	return T_EOL;
+}
+[ \t]*#.*
+
+
+[ \t]+	{
+	BEGIN(COMMAND);
+}
+
+.	{
+	unput(yytext[0]);
+	BEGIN(COMMAND);
+}
+
+
+<COMMAND>{
+	{n}+	{
+		struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
+		BEGIN(PARAM);
+		current_pos.file = current_file;
+		current_pos.lineno = current_file->lineno;
+		if (id && id->flags & TF_COMMAND) {
+			zconflval.id = id;
+			return id->token;
+		}
+		alloc_string(yytext, yyleng);
+		zconflval.string = text;
+		return T_WORD;
+	}
+	.
+	\n	{
+		BEGIN(INITIAL);
+		current_file->lineno++;
+		return T_EOL;
+	}
+}
+
+<PARAM>{
+	"&&"	return T_AND;
+	"||"	return T_OR;
+	"("	return T_OPEN_PAREN;
+	")"	return T_CLOSE_PAREN;
+	"!"	return T_NOT;
+	"="	return T_EQUAL;
+	"!="	return T_UNEQUAL;
+	\"|\'	{
+		str = yytext[0];
+		new_string();
+		BEGIN(STRING);
+	}
+	\n	BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+	---	/* ignore */
+	({n}|[-/.])+	{
+		struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
+		if (id && id->flags & TF_PARAM) {
+			zconflval.id = id;
+			return id->token;
+		}
+		alloc_string(yytext, yyleng);
+		zconflval.string = text;
+		return T_WORD;
+	}
+	#.*	/* comment */
+	\\\n	current_file->lineno++;
+	.
+	<<EOF>> {
+		BEGIN(INITIAL);
+	}
+}
+
+<STRING>{
+	[^'"\\\n]+/\n	{
+		append_string(yytext, yyleng);
+		zconflval.string = text;
+		return T_WORD_QUOTE;
+	}
+	[^'"\\\n]+	{
+		append_string(yytext, yyleng);
+	}
+	\\.?/\n	{
+		append_string(yytext + 1, yyleng - 1);
+		zconflval.string = text;
+		return T_WORD_QUOTE;
+	}
+	\\.?	{
+		append_string(yytext + 1, yyleng - 1);
+	}
+	\'|\"	{
+		if (str == yytext[0]) {
+			BEGIN(PARAM);
+			zconflval.string = text;
+			return T_WORD_QUOTE;
+		} else
+			append_string(yytext, 1);
+	}
+	\n	{
+		printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+		current_file->lineno++;
+		BEGIN(INITIAL);
+		return T_EOL;
+	}
+	<<EOF>>	{
+		BEGIN(INITIAL);
+	}
+}
+
+<HELP>{
+	[ \t]+	{
+		ts = 0;
+		for (i = 0; i < yyleng; i++) {
+			if (yytext[i] == '\t')
+				ts = (ts & ~7) + 8;
+			else
+				ts++;
+		}
+		last_ts = ts;
+		if (first_ts) {
+			if (ts < first_ts) {
+				zconf_endhelp();
+				return T_HELPTEXT;
+			}
+			ts -= first_ts;
+			while (ts > 8) {
+				append_string("        ", 8);
+				ts -= 8;
+			}
+			append_string("        ", ts);
+		}
+	}
+	[ \t]*\n/[^ \t\n] {
+		current_file->lineno++;
+		zconf_endhelp();
+		return T_HELPTEXT;
+	}
+	[ \t]*\n	{
+		current_file->lineno++;
+		append_string("\n", 1);
+	}
+	[^ \t\n].* {
+		append_string(yytext, yyleng);
+		if (!first_ts)
+			first_ts = last_ts;
+	}
+	<<EOF>>	{
+		zconf_endhelp();
+		return T_HELPTEXT;
+	}
+}
+
+<<EOF>>	{
+	if (current_file) {
+		zconf_endfile();
+		return T_EOL;
+	}
+	fclose(yyin);
+	yyterminate();
+}
+
+%%
+void zconf_starthelp(void)
+{
+	new_string();
+	last_ts = first_ts = 0;
+	BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+	zconflval.string = text;
+	BEGIN(INITIAL);
+}
+
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+	char *env, fullname[PATH_MAX+1];
+	FILE *f;
+
+	f = fopen(name, "r");
+	if (!f && name[0] != '/') {
+		env = getenv(SRCTREE);
+		if (env) {
+			sprintf(fullname, "%s/%s", env, name);
+			f = fopen(fullname, "r");
+		}
+	}
+	return f;
+}
+
+void zconf_initscan(const char *name)
+{
+	yyin = zconf_fopen(name);
+	if (!yyin) {
+		printf("can't find file %s\n", name);
+		exit(1);
+	}
+
+	current_buf = malloc(sizeof(*current_buf));
+	memset(current_buf, 0, sizeof(*current_buf));
+
+	current_file = file_lookup(name);
+	current_file->lineno = 1;
+	current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+	struct file *file = file_lookup(name);
+	struct buffer *buf = malloc(sizeof(*buf));
+	memset(buf, 0, sizeof(*buf));
+
+	current_buf->state = YY_CURRENT_BUFFER;
+	yyin = zconf_fopen(name);
+	if (!yyin) {
+		printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+		exit(1);
+	}
+	yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
+	buf->parent = current_buf;
+	current_buf = buf;
+
+	if (file->flags & FILE_BUSY) {
+		printf("recursive scan (%s)?\n", name);
+		exit(1);
+	}
+	if (file->flags & FILE_SCANNED) {
+		printf("file %s already scanned?\n", name);
+		exit(1);
+	}
+	file->flags |= FILE_BUSY;
+	file->lineno = 1;
+	file->parent = current_file;
+	current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+	struct buffer *parent;
+
+	current_file->flags |= FILE_SCANNED;
+	current_file->flags &= ~FILE_BUSY;
+	current_file = current_file->parent;
+
+	parent = current_buf->parent;
+	if (parent) {
+		fclose(yyin);
+		yy_delete_buffer(YY_CURRENT_BUFFER);
+		yy_switch_to_buffer(parent->state);
+	}
+	free(current_buf);
+	current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+	return current_pos.lineno;
+}
+
+char *zconf_curname(void)
+{
+	return current_pos.file ? current_pos.file->name : "<none>";
+}
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.tab.c_shipped
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.tab.c_shipped	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.tab.c_shipped	(revision 20)
@@ -0,0 +1,2177 @@
+/* A Bison parser, made by GNU Bison 2.0.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names.  */
+#define yyparse zconfparse
+#define yylex   zconflex
+#define yyerror zconferror
+#define yylval  zconflval
+#define yychar  zconfchar
+#define yydebug zconfdebug
+#define yynerrs zconfnerrs
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     T_MAINMENU = 258,
+     T_MENU = 259,
+     T_ENDMENU = 260,
+     T_SOURCE = 261,
+     T_CHOICE = 262,
+     T_ENDCHOICE = 263,
+     T_COMMENT = 264,
+     T_CONFIG = 265,
+     T_MENUCONFIG = 266,
+     T_HELP = 267,
+     T_HELPTEXT = 268,
+     T_IF = 269,
+     T_ENDIF = 270,
+     T_DEPENDS = 271,
+     T_REQUIRES = 272,
+     T_OPTIONAL = 273,
+     T_PROMPT = 274,
+     T_TYPE = 275,
+     T_DEFAULT = 276,
+     T_SELECT = 277,
+     T_RANGE = 278,
+     T_ON = 279,
+     T_WORD = 280,
+     T_WORD_QUOTE = 281,
+     T_UNEQUAL = 282,
+     T_CLOSE_PAREN = 283,
+     T_OPEN_PAREN = 284,
+     T_EOL = 285,
+     T_OR = 286,
+     T_AND = 287,
+     T_EQUAL = 288,
+     T_NOT = 289
+   };
+#endif
+#define T_MAINMENU 258
+#define T_MENU 259
+#define T_ENDMENU 260
+#define T_SOURCE 261
+#define T_CHOICE 262
+#define T_ENDCHOICE 263
+#define T_COMMENT 264
+#define T_CONFIG 265
+#define T_MENUCONFIG 266
+#define T_HELP 267
+#define T_HELPTEXT 268
+#define T_IF 269
+#define T_ENDIF 270
+#define T_DEPENDS 271
+#define T_REQUIRES 272
+#define T_OPTIONAL 273
+#define T_PROMPT 274
+#define T_TYPE 275
+#define T_DEFAULT 276
+#define T_SELECT 277
+#define T_RANGE 278
+#define T_ON 279
+#define T_WORD 280
+#define T_WORD_QUOTE 281
+#define T_UNEQUAL 282
+#define T_CLOSE_PAREN 283
+#define T_OPEN_PAREN 284
+#define T_EOL 285
+#define T_OR 286
+#define T_AND 287
+#define T_EQUAL 288
+#define T_NOT 289
+
+
+
+
+/* Copy the first part of user declarations.  */
+
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#include "zconf.hash.c"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD		0x0001
+#define DEBUG_PARSE	0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYDEBUG 0
+#if YYDEBUG
+#define YYERROR_VERBOSE
+#endif
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+
+typedef union YYSTYPE {
+	char *string;
+	struct file *file;
+	struct symbol *symbol;
+	struct expr *expr;
+	struct menu *menu;
+	struct kconf_id *id;
+} YYSTYPE;
+/* Line 190 of yacc.c.  */
+
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 213 of yacc.c.  */
+
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+# ifndef YYFREE
+#  define YYFREE free
+# endif
+# ifndef YYMALLOC
+#  define YYMALLOC malloc
+# endif
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  register YYSIZE_T yyi;		\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  3
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   264
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  35
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  42
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  104
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  175
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   289
+
+#define YYTRANSLATE(YYX) 						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     5,     6,     9,    12,    15,    20,    23,
+      28,    33,    37,    39,    41,    43,    45,    47,    49,    51,
+      53,    55,    57,    59,    61,    63,    67,    70,    74,    77,
+      81,    84,    85,    88,    91,    94,    97,   100,   104,   109,
+     114,   119,   125,   128,   131,   133,   137,   138,   141,   144,
+     147,   150,   153,   158,   162,   165,   170,   171,   174,   178,
+     180,   184,   185,   188,   191,   194,   198,   201,   203,   207,
+     208,   211,   214,   217,   221,   225,   228,   231,   234,   235,
+     238,   241,   244,   249,   253,   257,   258,   261,   263,   265,
+     268,   271,   274,   276,   279,   280,   283,   285,   289,   293,
+     297,   300,   304,   308,   310
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      36,     0,    -1,    37,    -1,    -1,    37,    39,    -1,    37,
+      50,    -1,    37,    61,    -1,    37,     3,    71,    73,    -1,
+      37,    72,    -1,    37,    25,     1,    30,    -1,    37,    38,
+       1,    30,    -1,    37,     1,    30,    -1,    16,    -1,    19,
+      -1,    20,    -1,    22,    -1,    18,    -1,    23,    -1,    21,
+      -1,    30,    -1,    56,    -1,    65,    -1,    42,    -1,    44,
+      -1,    63,    -1,    25,     1,    30,    -1,     1,    30,    -1,
+      10,    25,    30,    -1,    41,    45,    -1,    11,    25,    30,
+      -1,    43,    45,    -1,    -1,    45,    46,    -1,    45,    69,
+      -1,    45,    67,    -1,    45,    40,    -1,    45,    30,    -1,
+      20,    70,    30,    -1,    19,    71,    74,    30,    -1,    21,
+      75,    74,    30,    -1,    22,    25,    74,    30,    -1,    23,
+      76,    76,    74,    30,    -1,     7,    30,    -1,    47,    51,
+      -1,    72,    -1,    48,    53,    49,    -1,    -1,    51,    52,
+      -1,    51,    69,    -1,    51,    67,    -1,    51,    30,    -1,
+      51,    40,    -1,    19,    71,    74,    30,    -1,    20,    70,
+      30,    -1,    18,    30,    -1,    21,    25,    74,    30,    -1,
+      -1,    53,    39,    -1,    14,    75,    73,    -1,    72,    -1,
+      54,    57,    55,    -1,    -1,    57,    39,    -1,    57,    61,
+      -1,    57,    50,    -1,     4,    71,    30,    -1,    58,    68,
+      -1,    72,    -1,    59,    62,    60,    -1,    -1,    62,    39,
+      -1,    62,    61,    -1,    62,    50,    -1,     6,    71,    30,
+      -1,     9,    71,    30,    -1,    64,    68,    -1,    12,    30,
+      -1,    66,    13,    -1,    -1,    68,    69,    -1,    68,    30,
+      -1,    68,    40,    -1,    16,    24,    75,    30,    -1,    16,
+      75,    30,    -1,    17,    75,    30,    -1,    -1,    71,    74,
+      -1,    25,    -1,    26,    -1,     5,    30,    -1,     8,    30,
+      -1,    15,    30,    -1,    30,    -1,    73,    30,    -1,    -1,
+      14,    75,    -1,    76,    -1,    76,    33,    76,    -1,    76,
+      27,    76,    -1,    29,    75,    28,    -1,    34,    75,    -1,
+      75,    31,    75,    -1,    75,    32,    75,    -1,    25,    -1,
+      26,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   103,   103,   105,   107,   108,   109,   110,   111,   112,
+     113,   117,   121,   121,   121,   121,   121,   121,   121,   125,
+     126,   127,   128,   129,   130,   134,   135,   141,   149,   155,
+     163,   173,   175,   176,   177,   178,   179,   182,   190,   196,
+     206,   212,   220,   229,   234,   242,   245,   247,   248,   249,
+     250,   251,   254,   260,   271,   277,   287,   289,   294,   302,
+     310,   313,   315,   316,   317,   322,   329,   334,   342,   345,
+     347,   348,   349,   352,   360,   367,   374,   380,   387,   389,
+     390,   391,   394,   399,   404,   412,   414,   419,   420,   423,
+     424,   425,   429,   430,   433,   434,   437,   438,   439,   440,
+     441,   442,   443,   446,   447
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
+  "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
+  "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
+  "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT",
+  "T_SELECT", "T_RANGE", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
+  "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
+  "T_NOT", "$accept", "input", "stmt_list", "option_name", "common_stmt",
+  "option_error", "config_entry_start", "config_stmt",
+  "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
+  "config_option", "choice", "choice_entry", "choice_end", "choice_stmt",
+  "choice_option_list", "choice_option", "choice_block", "if_entry",
+  "if_end", "if_stmt", "if_block", "menu", "menu_entry", "menu_end",
+  "menu_stmt", "menu_block", "source_stmt", "comment", "comment_stmt",
+  "help_start", "help", "depends_list", "depends", "prompt_stmt_opt",
+  "prompt", "end", "nl", "if_expr", "expr", "symbol", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    35,    36,    37,    37,    37,    37,    37,    37,    37,
+      37,    37,    38,    38,    38,    38,    38,    38,    38,    39,
+      39,    39,    39,    39,    39,    40,    40,    41,    42,    43,
+      44,    45,    45,    45,    45,    45,    45,    46,    46,    46,
+      46,    46,    47,    48,    49,    50,    51,    51,    51,    51,
+      51,    51,    52,    52,    52,    52,    53,    53,    54,    55,
+      56,    57,    57,    57,    57,    58,    59,    60,    61,    62,
+      62,    62,    62,    63,    64,    65,    66,    67,    68,    68,
+      68,    68,    69,    69,    69,    70,    70,    71,    71,    72,
+      72,    72,    73,    73,    74,    74,    75,    75,    75,    75,
+      75,    75,    75,    76,    76
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     0,     2,     2,     2,     4,     2,     4,
+       4,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     3,     2,     3,     2,     3,
+       2,     0,     2,     2,     2,     2,     2,     3,     4,     4,
+       4,     5,     2,     2,     1,     3,     0,     2,     2,     2,
+       2,     2,     4,     3,     2,     4,     0,     2,     3,     1,
+       3,     0,     2,     2,     2,     3,     2,     1,     3,     0,
+       2,     2,     2,     3,     3,     2,     2,     2,     0,     2,
+       2,     2,     4,     3,     3,     0,     2,     1,     1,     2,
+       2,     2,     1,     2,     0,     2,     1,     3,     3,     3,
+       2,     3,     3,     1,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       3,     0,     0,     1,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    12,    16,    13,    14,
+      18,    15,    17,     0,    19,     0,     4,    31,    22,    31,
+      23,    46,    56,     5,    61,    20,    78,    69,     6,    24,
+      78,    21,     8,    11,    87,    88,     0,     0,    89,     0,
+      42,    90,     0,     0,     0,   103,   104,     0,     0,     0,
+      96,    91,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    92,     7,    65,    73,    74,    27,    29,     0,
+     100,     0,     0,    58,     0,     0,     9,    10,     0,     0,
+       0,     0,     0,    85,     0,     0,     0,     0,    36,    35,
+      32,     0,    34,    33,     0,     0,    85,     0,    50,    51,
+      47,    49,    48,    57,    45,    44,    62,    64,    60,    63,
+      59,    80,    81,    79,    70,    72,    68,    71,    67,    93,
+      99,   101,   102,    98,    97,    26,    76,     0,     0,     0,
+      94,     0,    94,    94,    94,     0,     0,    77,    54,    94,
+       0,    94,     0,    83,    84,     0,     0,    37,    86,     0,
+       0,    94,    25,     0,    53,     0,    82,    95,    38,    39,
+      40,     0,    52,    55,    41
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,     1,     2,    25,    26,    99,    27,    28,    29,    30,
+      64,   100,    31,    32,   114,    33,    66,   110,    67,    34,
+     118,    35,    68,    36,    37,   126,    38,    70,    39,    40,
+      41,   101,   102,    69,   103,   141,   142,    42,    73,   156,
+      59,    60
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -78
+static const short int yypact[] =
+{
+     -78,     2,   159,   -78,   -21,     0,     0,   -12,     0,     1,
+       4,     0,    27,    38,    60,    58,   -78,   -78,   -78,   -78,
+     -78,   -78,   -78,   100,   -78,   104,   -78,   -78,   -78,   -78,
+     -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,
+     -78,   -78,   -78,   -78,   -78,   -78,    86,   113,   -78,   114,
+     -78,   -78,   125,   127,   128,   -78,   -78,    60,    60,   210,
+      65,   -78,   141,   142,    39,   103,   182,   200,     6,    66,
+       6,   131,   -78,   146,   -78,   -78,   -78,   -78,   -78,   196,
+     -78,    60,    60,   146,    40,    40,   -78,   -78,   155,   156,
+      -2,    60,     0,     0,    60,   105,    40,   194,   -78,   -78,
+     -78,   206,   -78,   -78,   183,     0,     0,   195,   -78,   -78,
+     -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,
+     -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,
+     -78,   197,   -78,   -78,   -78,   -78,   -78,    60,   213,   216,
+     212,   203,   212,   190,   212,    40,   208,   -78,   -78,   212,
+     222,   212,   219,   -78,   -78,    60,   223,   -78,   -78,   224,
+     225,   212,   -78,   226,   -78,   227,   -78,    47,   -78,   -78,
+     -78,   228,   -78,   -78,   -78
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+     -78,   -78,   -78,   -78,   164,   -36,   -78,   -78,   -78,   -78,
+     230,   -78,   -78,   -78,   -78,    29,   -78,   -78,   -78,   -78,
+     -78,   -78,   -78,   -78,   -78,   -78,    59,   -78,   -78,   -78,
+     -78,   -78,   198,   220,    24,   157,    -5,   169,   202,    74,
+     -53,   -77
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -76
+static const short int yytable[] =
+{
+      46,    47,     3,    49,    79,    80,    52,   133,   134,    43,
+       6,     7,     8,     9,    10,    11,    12,    13,    48,   145,
+      14,    15,   137,    55,    56,    44,    45,    57,   131,   132,
+     109,    50,    58,   122,    51,   122,    24,   138,   139,   -28,
+      88,   143,   -28,   -28,   -28,   -28,   -28,   -28,   -28,   -28,
+     -28,    89,    53,   -28,   -28,    90,    91,   -28,    92,    93,
+      94,    95,    96,    54,    97,    55,    56,    88,   161,    98,
+     -66,   -66,   -66,   -66,   -66,   -66,   -66,   -66,    81,    82,
+     -66,   -66,    90,    91,   152,    55,    56,   140,    61,    57,
+     112,    97,    84,   123,    58,   123,   121,   117,    85,   125,
+     149,    62,   167,   -30,    88,    63,   -30,   -30,   -30,   -30,
+     -30,   -30,   -30,   -30,   -30,    89,    72,   -30,   -30,    90,
+      91,   -30,    92,    93,    94,    95,    96,   119,    97,   127,
+     144,   -75,    88,    98,   -75,   -75,   -75,   -75,   -75,   -75,
+     -75,   -75,   -75,    74,    75,   -75,   -75,    90,    91,   -75,
+     -75,   -75,   -75,   -75,   -75,    76,    97,    77,    78,    -2,
+       4,   121,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    86,    87,    14,    15,    16,   129,    17,    18,    19,
+      20,    21,    22,    88,    23,   135,   136,   -43,   -43,    24,
+     -43,   -43,   -43,   -43,    89,   146,   -43,   -43,    90,    91,
+     104,   105,   106,   107,   155,     7,     8,    97,    10,    11,
+      12,    13,   108,   148,    14,    15,   158,   159,   160,   147,
+     151,    81,    82,   163,   130,   165,   155,    81,    82,    82,
+      24,   113,   116,   157,   124,   171,   115,   120,   162,   128,
+      72,    81,    82,   153,    81,    82,   154,    81,    82,   166,
+      81,    82,   164,   168,   169,   170,   172,   173,   174,    65,
+      71,    83,     0,   150,   111
+};
+
+static const short int yycheck[] =
+{
+       5,     6,     0,     8,    57,    58,    11,    84,    85,    30,
+       4,     5,     6,     7,     8,     9,    10,    11,    30,    96,
+      14,    15,    24,    25,    26,    25,    26,    29,    81,    82,
+      66,    30,    34,    69,    30,    71,    30,    90,    91,     0,
+       1,    94,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    25,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    25,    25,    25,    26,     1,   145,    30,
+       4,     5,     6,     7,     8,     9,    10,    11,    31,    32,
+      14,    15,    16,    17,   137,    25,    26,    92,    30,    29,
+      66,    25,    27,    69,    34,    71,    30,    68,    33,    70,
+     105,     1,   155,     0,     1,     1,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    30,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    68,    25,    70,
+      25,     0,     1,    30,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    30,    30,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    30,    25,    30,    30,     0,
+       1,    30,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    30,    30,    14,    15,    16,    30,    18,    19,    20,
+      21,    22,    23,     1,    25,    30,    30,     5,     6,    30,
+       8,     9,    10,    11,    12,     1,    14,    15,    16,    17,
+      18,    19,    20,    21,    14,     5,     6,    25,     8,     9,
+      10,    11,    30,    30,    14,    15,   142,   143,   144,    13,
+      25,    31,    32,   149,    28,   151,    14,    31,    32,    32,
+      30,    67,    68,    30,    70,   161,    67,    68,    30,    70,
+      30,    31,    32,    30,    31,    32,    30,    31,    32,    30,
+      31,    32,    30,    30,    30,    30,    30,    30,    30,    29,
+      40,    59,    -1,   106,    66
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,    36,    37,     0,     1,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    14,    15,    16,    18,    19,    20,
+      21,    22,    23,    25,    30,    38,    39,    41,    42,    43,
+      44,    47,    48,    50,    54,    56,    58,    59,    61,    63,
+      64,    65,    72,    30,    25,    26,    71,    71,    30,    71,
+      30,    30,    71,    25,    25,    25,    26,    29,    34,    75,
+      76,    30,     1,     1,    45,    45,    51,    53,    57,    68,
+      62,    68,    30,    73,    30,    30,    30,    30,    30,    75,
+      75,    31,    32,    73,    27,    33,    30,    30,     1,    12,
+      16,    17,    19,    20,    21,    22,    23,    25,    30,    40,
+      46,    66,    67,    69,    18,    19,    20,    21,    30,    40,
+      52,    67,    69,    39,    49,    72,    39,    50,    55,    61,
+      72,    30,    40,    69,    39,    50,    60,    61,    72,    30,
+      28,    75,    75,    76,    76,    30,    30,    24,    75,    75,
+      71,    70,    71,    75,    25,    76,     1,    13,    30,    71,
+      70,    25,    75,    30,    30,    14,    74,    30,    74,    74,
+      74,    76,    30,    74,    30,    74,    30,    75,    30,    30,
+      30,    74,    30,    30,    30
+};
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    { 								\
+      yyerror ("syntax error: cannot back up");\
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr, 					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  register const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+#endif /* !YYERROR_VERBOSE */
+
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+      case 48: /* choice_entry */
+
+        {
+	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+	if (current_menu == (yyvaluep->menu))
+		menu_end_menu();
+};
+
+        break;
+      case 54: /* if_entry */
+
+        {
+	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+	if (current_menu == (yyvaluep->menu))
+		menu_end_menu();
+};
+
+        break;
+      case 59: /* menu_entry */
+
+        {
+	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+	if (current_menu == (yyvaluep->menu))
+		menu_end_menu();
+};
+
+        break;
+
+      default:
+        break;
+    }
+}
+
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+
+  register int yystate;
+  register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  register short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+
+  yyvsp[0] = yylval;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow ("parser stack overflow",
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyoverflowlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyoverflowlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 8:
+
+    { zconf_error("unexpected end statement"); ;}
+    break;
+
+  case 9:
+
+    { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); ;}
+    break;
+
+  case 10:
+
+    {
+	zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[-2].id)->name);
+;}
+    break;
+
+  case 11:
+
+    { zconf_error("invalid statement"); ;}
+    break;
+
+  case 25:
+
+    { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); ;}
+    break;
+
+  case 26:
+
+    { zconf_error("invalid option"); ;}
+    break;
+
+  case 27:
+
+    {
+	struct symbol *sym = sym_lookup((yyvsp[-1].string), 0);
+	sym->flags |= SYMBOL_OPTIONAL;
+	menu_add_entry(sym);
+	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
+;}
+    break;
+
+  case 28:
+
+    {
+	menu_end_entry();
+	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 29:
+
+    {
+	struct symbol *sym = sym_lookup((yyvsp[-1].string), 0);
+	sym->flags |= SYMBOL_OPTIONAL;
+	menu_add_entry(sym);
+	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
+;}
+    break;
+
+  case 30:
+
+    {
+	if (current_entry->prompt)
+		current_entry->prompt->type = P_MENU;
+	else
+		zconfprint("warning: menuconfig statement without prompt");
+	menu_end_entry();
+	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 37:
+
+    {
+	menu_set_type((yyvsp[-2].id)->stype);
+	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+		zconf_curname(), zconf_lineno(),
+		(yyvsp[-2].id)->stype);
+;}
+    break;
+
+  case 38:
+
+    {
+	menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 39:
+
+    {
+	menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr));
+	if ((yyvsp[-3].id)->stype != S_UNKNOWN)
+		menu_set_type((yyvsp[-3].id)->stype);
+	printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+		zconf_curname(), zconf_lineno(),
+		(yyvsp[-3].id)->stype);
+;}
+    break;
+
+  case 40:
+
+    {
+	menu_add_symbol(P_SELECT, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 41:
+
+    {
+	menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 42:
+
+    {
+	struct symbol *sym = sym_lookup(NULL, 0);
+	sym->flags |= SYMBOL_CHOICE;
+	menu_add_entry(sym);
+	menu_add_expr(P_CHOICE, NULL, NULL);
+	printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 43:
+
+    {
+	(yyval.menu) = menu_add_menu();
+;}
+    break;
+
+  case 44:
+
+    {
+	if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) {
+		menu_end_menu();
+		printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+	}
+;}
+    break;
+
+  case 52:
+
+    {
+	menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 53:
+
+    {
+	if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) {
+		menu_set_type((yyvsp[-2].id)->stype);
+		printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+			zconf_curname(), zconf_lineno(),
+			(yyvsp[-2].id)->stype);
+	} else
+		YYERROR;
+;}
+    break;
+
+  case 54:
+
+    {
+	current_entry->sym->flags |= SYMBOL_OPTIONAL;
+	printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 55:
+
+    {
+	if ((yyvsp[-3].id)->stype == S_UNKNOWN) {
+		menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
+		printd(DEBUG_PARSE, "%s:%d:default\n",
+			zconf_curname(), zconf_lineno());
+	} else
+		YYERROR;
+;}
+    break;
+
+  case 58:
+
+    {
+	printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+	menu_add_entry(NULL);
+	menu_add_dep((yyvsp[-1].expr));
+	(yyval.menu) = menu_add_menu();
+;}
+    break;
+
+  case 59:
+
+    {
+	if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) {
+		menu_end_menu();
+		printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+	}
+;}
+    break;
+
+  case 65:
+
+    {
+	menu_add_entry(NULL);
+	menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL);
+	printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 66:
+
+    {
+	(yyval.menu) = menu_add_menu();
+;}
+    break;
+
+  case 67:
+
+    {
+	if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) {
+		menu_end_menu();
+		printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+	}
+;}
+    break;
+
+  case 73:
+
+    {
+	printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
+	zconf_nextfile((yyvsp[-1].string));
+;}
+    break;
+
+  case 74:
+
+    {
+	menu_add_entry(NULL);
+	menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL);
+	printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 75:
+
+    {
+	menu_end_entry();
+;}
+    break;
+
+  case 76:
+
+    {
+	printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+	zconf_starthelp();
+;}
+    break;
+
+  case 77:
+
+    {
+	current_entry->sym->help = (yyvsp[0].string);
+;}
+    break;
+
+  case 82:
+
+    {
+	menu_add_dep((yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 83:
+
+    {
+	menu_add_dep((yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 84:
+
+    {
+	menu_add_dep((yyvsp[-1].expr));
+	printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 86:
+
+    {
+	menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr));
+;}
+    break;
+
+  case 89:
+
+    { (yyval.id) = (yyvsp[-1].id); ;}
+    break;
+
+  case 90:
+
+    { (yyval.id) = (yyvsp[-1].id); ;}
+    break;
+
+  case 91:
+
+    { (yyval.id) = (yyvsp[-1].id); ;}
+    break;
+
+  case 94:
+
+    { (yyval.expr) = NULL; ;}
+    break;
+
+  case 95:
+
+    { (yyval.expr) = (yyvsp[0].expr); ;}
+    break;
+
+  case 96:
+
+    { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); ;}
+    break;
+
+  case 97:
+
+    { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); ;}
+    break;
+
+  case 98:
+
+    { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); ;}
+    break;
+
+  case 99:
+
+    { (yyval.expr) = (yyvsp[-1].expr); ;}
+    break;
+
+  case 100:
+
+    { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); ;}
+    break;
+
+  case 101:
+
+    { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); ;}
+    break;
+
+  case 102:
+
+    { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); ;}
+    break;
+
+  case 103:
+
+    { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); ;}
+    break;
+
+  case 104:
+
+    { (yyval.symbol) = sym_lookup((yyvsp[0].string), 1); free((yyvsp[0].string)); ;}
+    break;
+
+
+    }
+
+/* Line 1037 of yacc.c.  */
+
+
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  YYSIZE_T yysize = 0;
+	  int yytype = YYTRANSLATE (yychar);
+	  const char* yyprefix;
+	  char *yymsg;
+	  int yyx;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 0;
+
+	  yyprefix = ", expecting ";
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+		yycount += 1;
+		if (yycount == 5)
+		  {
+		    yysize = 0;
+		    break;
+		  }
+	      }
+	  yysize += (sizeof ("syntax error, unexpected ")
+		     + yystrlen (yytname[yytype]));
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
+	    {
+	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+	      yyp = yystpcpy (yyp, yytname[yytype]);
+
+	      if (yycount < 5)
+		{
+		  yyprefix = ", expecting ";
+		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+		      {
+			yyp = yystpcpy (yyp, yyprefix);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yyprefix = " or ";
+		      }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    yyerror ("syntax error; also virtual memory exhausted");
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror ("syntax error");
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+          /* If at end of input, pop the error token,
+	     then the rest of the stack, then return failure.  */
+	  if (yychar == YYEOF)
+	     for (;;)
+	       {
+
+		 YYPOPSTACK;
+		 if (yyssp == yyss)
+		   YYABORT;
+		 yydestruct ("Error: popping",
+                             yystos[*yyssp], yyvsp);
+	       }
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+#ifdef __GNUC__
+  /* Pacify GCC when the user code never invokes YYERROR and the label
+     yyerrorlab therefore never appears in user code.  */
+  if (0)
+     goto yyerrorlab;
+#endif
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yydestruct ("Error: discarding lookahead",
+              yytoken, &yylval);
+  yychar = YYEMPTY;
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here.  |
+`----------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+
+
+
+void conf_parse(const char *name)
+{
+	struct symbol *sym;
+	int i;
+
+	zconf_initscan(name);
+
+	sym_init();
+	menu_init();
+	modules_sym = sym_lookup("MODULES", 0);
+	rootmenu.prompt = menu_add_prompt(P_MENU, "Busybox Configuration", NULL);
+
+#if YYDEBUG
+	if (getenv("ZCONF_DEBUG"))
+		zconfdebug = 1;
+#endif
+	zconfparse();
+	if (zconfnerrs)
+		exit(1);
+	menu_finalize(&rootmenu);
+	for_all_symbols(i, sym) {
+		sym_check_deps(sym);
+        }
+
+	sym_change_count = 1;
+}
+
+const char *zconf_tokenname(int token)
+{
+	switch (token) {
+	case T_MENU:		return "menu";
+	case T_ENDMENU:		return "endmenu";
+	case T_CHOICE:		return "choice";
+	case T_ENDCHOICE:	return "endchoice";
+	case T_IF:		return "if";
+	case T_ENDIF:		return "endif";
+	case T_DEPENDS:		return "depends";
+	}
+	return "<token>";
+}
+
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
+{
+	if (id->token != endtoken) {
+		zconf_error("unexpected '%s' within %s block",
+			kconf_id_strings + id->name, zconf_tokenname(starttoken));
+		zconfnerrs++;
+		return false;
+	}
+	if (current_menu->file != current_file) {
+		zconf_error("'%s' in different file than '%s'",
+			kconf_id_strings + id->name, zconf_tokenname(starttoken));
+		fprintf(stderr, "%s:%d: location of the '%s'\n",
+			current_menu->file->name, current_menu->lineno,
+			zconf_tokenname(starttoken));
+		zconfnerrs++;
+		return false;
+	}
+	return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+	va_list ap;
+
+	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+	va_start(ap, err);
+	vfprintf(stderr, err, ap);
+	va_end(ap);
+	fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+	va_list ap;
+
+	zconfnerrs++;
+	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+	va_start(ap, err);
+	vfprintf(stderr, err, ap);
+	va_end(ap);
+	fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+#if YYDEBUG
+	fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+#endif
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+	const char *p;
+	int len;
+
+	putc('"', out);
+	while ((p = strchr(str, '"'))) {
+		len = p - str;
+		if (len)
+			fprintf(out, "%.*s", len, str);
+		fputs("\\\"", out);
+		str = p + 1;
+	}
+	fputs(str, out);
+	putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+	struct symbol *sym = menu->sym;
+	struct property *prop;
+
+	if (sym_is_choice(sym))
+		fprintf(out, "choice\n");
+	else
+		fprintf(out, "config %s\n", sym->name);
+	switch (sym->type) {
+	case S_BOOLEAN:
+		fputs("  boolean\n", out);
+		break;
+	case S_TRISTATE:
+		fputs("  tristate\n", out);
+		break;
+	case S_STRING:
+		fputs("  string\n", out);
+		break;
+	case S_INT:
+		fputs("  integer\n", out);
+		break;
+	case S_HEX:
+		fputs("  hex\n", out);
+		break;
+	default:
+		fputs("  ???\n", out);
+		break;
+	}
+	for (prop = sym->prop; prop; prop = prop->next) {
+		if (prop->menu != menu)
+			continue;
+		switch (prop->type) {
+		case P_PROMPT:
+			fputs("  prompt ", out);
+			print_quoted_string(out, prop->text);
+			if (!expr_is_yes(prop->visible.expr)) {
+				fputs(" if ", out);
+				expr_fprint(prop->visible.expr, out);
+			}
+			fputc('\n', out);
+			break;
+		case P_DEFAULT:
+			fputs( "  default ", out);
+			expr_fprint(prop->expr, out);
+			if (!expr_is_yes(prop->visible.expr)) {
+				fputs(" if ", out);
+				expr_fprint(prop->visible.expr, out);
+			}
+			fputc('\n', out);
+			break;
+		case P_CHOICE:
+			fputs("  #choice value\n", out);
+			break;
+		default:
+			fprintf(out, "  unknown prop %d!\n", prop->type);
+			break;
+		}
+	}
+	if (sym->help) {
+		int len = strlen(sym->help);
+		while (sym->help[--len] == '\n')
+			sym->help[len] = 0;
+		fprintf(out, "  help\n%s\n", sym->help);
+	}
+	fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+	struct property *prop;
+	struct symbol *sym;
+	struct menu *menu;
+
+	menu = rootmenu.list;
+	while (menu) {
+		if ((sym = menu->sym))
+			print_symbol(out, menu);
+		else if ((prop = menu->prompt)) {
+			switch (prop->type) {
+			case P_COMMENT:
+				fputs("\ncomment ", out);
+				print_quoted_string(out, prop->text);
+				fputs("\n", out);
+				break;
+			case P_MENU:
+				fputs("\nmenu ", out);
+				print_quoted_string(out, prop->text);
+				fputs("\n", out);
+				break;
+			default:
+				;
+			}
+			if (!expr_is_yes(prop->visible.expr)) {
+				fputs("  depends ", out);
+				expr_fprint(prop->visible.expr, out);
+				fputc('\n', out);
+			}
+			fputs("\n", out);
+		}
+
+		if (menu->list)
+			menu = menu->list;
+		else if (menu->next)
+			menu = menu->next;
+		else while ((menu = menu->parent)) {
+			if (menu->prompt && menu->prompt->type == P_MENU)
+				fputs("\nendmenu\n", out);
+			if (menu->next) {
+				menu = menu->next;
+				break;
+			}
+		}
+	}
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
+
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.y
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.y	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/kconfig/zconf.y	(revision 20)
@@ -0,0 +1,681 @@
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#include "zconf.hash.c"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD		0x0001
+#define DEBUG_PARSE	0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYDEBUG 0
+#if YYDEBUG
+#define YYERROR_VERBOSE
+#endif
+%}
+%expect 26
+
+%union
+{
+	char *string;
+	struct file *file;
+	struct symbol *symbol;
+	struct expr *expr;
+	struct menu *menu;
+	struct kconf_id *id;
+}
+
+%token <id>T_MAINMENU
+%token <id>T_MENU
+%token <id>T_ENDMENU
+%token <id>T_SOURCE
+%token <id>T_CHOICE
+%token <id>T_ENDCHOICE
+%token <id>T_COMMENT
+%token <id>T_CONFIG
+%token <id>T_MENUCONFIG
+%token <id>T_HELP
+%token <string> T_HELPTEXT
+%token <id>T_IF
+%token <id>T_ENDIF
+%token <id>T_DEPENDS
+%token <id>T_REQUIRES
+%token <id>T_OPTIONAL
+%token <id>T_PROMPT
+%token <id>T_TYPE
+%token <id>T_DEFAULT
+%token <id>T_SELECT
+%token <id>T_RANGE
+%token <id>T_ON
+%token <string> T_WORD
+%token <string> T_WORD_QUOTE
+%token T_UNEQUAL
+%token T_CLOSE_PAREN
+%token T_OPEN_PAREN
+%token T_EOL
+
+%left T_OR
+%left T_AND
+%left T_EQUAL T_UNEQUAL
+%nonassoc T_NOT
+
+%type <string> prompt
+%type <symbol> symbol
+%type <expr> expr
+%type <expr> if_expr
+%type <id> end
+%type <id> option_name
+%type <menu> if_entry menu_entry choice_entry
+
+%destructor {
+	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+		$$->file->name, $$->lineno);
+	if (current_menu == $$)
+		menu_end_menu();
+} if_entry menu_entry choice_entry
+
+%%
+input: stmt_list;
+
+stmt_list:
+	  /* empty */
+	| stmt_list common_stmt
+	| stmt_list choice_stmt
+	| stmt_list menu_stmt
+	| stmt_list T_MAINMENU prompt nl
+	| stmt_list end			{ zconf_error("unexpected end statement"); }
+	| stmt_list T_WORD error T_EOL	{ zconf_error("unknown statement \"%s\"", $2); }
+	| stmt_list option_name error T_EOL
+{
+	zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name);
+}
+	| stmt_list error T_EOL		{ zconf_error("invalid statement"); }
+;
+
+option_name:
+	T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT
+;
+
+common_stmt:
+	  T_EOL
+	| if_stmt
+	| comment_stmt
+	| config_stmt
+	| menuconfig_stmt
+	| source_stmt
+;
+
+option_error:
+	  T_WORD error T_EOL		{ zconf_error("unknown option \"%s\"", $1); }
+	| error T_EOL			{ zconf_error("invalid option"); }
+;
+
+
+/* config/menuconfig entry */
+
+config_entry_start: T_CONFIG T_WORD T_EOL
+{
+	struct symbol *sym = sym_lookup($2, 0);
+	sym->flags |= SYMBOL_OPTIONAL;
+	menu_add_entry(sym);
+	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+config_stmt: config_entry_start config_option_list
+{
+	menu_end_entry();
+	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
+{
+	struct symbol *sym = sym_lookup($2, 0);
+	sym->flags |= SYMBOL_OPTIONAL;
+	menu_add_entry(sym);
+	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+menuconfig_stmt: menuconfig_entry_start config_option_list
+{
+	if (current_entry->prompt)
+		current_entry->prompt->type = P_MENU;
+	else
+		zconfprint("warning: menuconfig statement without prompt");
+	menu_end_entry();
+	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+config_option_list:
+	  /* empty */
+	| config_option_list config_option
+	| config_option_list depends
+	| config_option_list help
+	| config_option_list option_error
+	| config_option_list T_EOL
+;
+
+config_option: T_TYPE prompt_stmt_opt T_EOL
+{
+	menu_set_type($1->stype);
+	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+		zconf_curname(), zconf_lineno(),
+		$1->stype);
+};
+
+config_option: T_PROMPT prompt if_expr T_EOL
+{
+	menu_add_prompt(P_PROMPT, $2, $3);
+	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_DEFAULT expr if_expr T_EOL
+{
+	menu_add_expr(P_DEFAULT, $2, $3);
+	if ($1->stype != S_UNKNOWN)
+		menu_set_type($1->stype);
+	printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+		zconf_curname(), zconf_lineno(),
+		$1->stype);
+};
+
+config_option: T_SELECT T_WORD if_expr T_EOL
+{
+	menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
+	printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_RANGE symbol symbol if_expr T_EOL
+{
+	menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
+	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+};
+
+/* choice entry */
+
+choice: T_CHOICE T_EOL
+{
+	struct symbol *sym = sym_lookup(NULL, 0);
+	sym->flags |= SYMBOL_CHOICE;
+	menu_add_entry(sym);
+	menu_add_expr(P_CHOICE, NULL, NULL);
+	printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+};
+
+choice_entry: choice choice_option_list
+{
+	$$ = menu_add_menu();
+};
+
+choice_end: end
+{
+	if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {
+		menu_end_menu();
+		printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+	}
+};
+
+choice_stmt: choice_entry choice_block choice_end
+;
+
+choice_option_list:
+	  /* empty */
+	| choice_option_list choice_option
+	| choice_option_list depends
+	| choice_option_list help
+	| choice_option_list T_EOL
+	| choice_option_list option_error
+;
+
+choice_option: T_PROMPT prompt if_expr T_EOL
+{
+	menu_add_prompt(P_PROMPT, $2, $3);
+	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_TYPE prompt_stmt_opt T_EOL
+{
+	if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) {
+		menu_set_type($1->stype);
+		printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+			zconf_curname(), zconf_lineno(),
+			$1->stype);
+	} else
+		YYERROR;
+};
+
+choice_option: T_OPTIONAL T_EOL
+{
+	current_entry->sym->flags |= SYMBOL_OPTIONAL;
+	printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_DEFAULT T_WORD if_expr T_EOL
+{
+	if ($1->stype == S_UNKNOWN) {
+		menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
+		printd(DEBUG_PARSE, "%s:%d:default\n",
+			zconf_curname(), zconf_lineno());
+	} else
+		YYERROR;
+};
+
+choice_block:
+	  /* empty */
+	| choice_block common_stmt
+;
+
+/* if entry */
+
+if_entry: T_IF expr nl
+{
+	printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+	menu_add_entry(NULL);
+	menu_add_dep($2);
+	$$ = menu_add_menu();
+};
+
+if_end: end
+{
+	if (zconf_endtoken($1, T_IF, T_ENDIF)) {
+		menu_end_menu();
+		printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+	}
+};
+
+if_stmt: if_entry if_block if_end
+;
+
+if_block:
+	  /* empty */
+	| if_block common_stmt
+	| if_block menu_stmt
+	| if_block choice_stmt
+;
+
+/* menu entry */
+
+menu: T_MENU prompt T_EOL
+{
+	menu_add_entry(NULL);
+	menu_add_prompt(P_MENU, $2, NULL);
+	printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+};
+
+menu_entry: menu depends_list
+{
+	$$ = menu_add_menu();
+};
+
+menu_end: end
+{
+	if (zconf_endtoken($1, T_MENU, T_ENDMENU)) {
+		menu_end_menu();
+		printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+	}
+};
+
+menu_stmt: menu_entry menu_block menu_end
+;
+
+menu_block:
+	  /* empty */
+	| menu_block common_stmt
+	| menu_block menu_stmt
+	| menu_block choice_stmt
+;
+
+source_stmt: T_SOURCE prompt T_EOL
+{
+	printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
+	zconf_nextfile($2);
+};
+
+/* comment entry */
+
+comment: T_COMMENT prompt T_EOL
+{
+	menu_add_entry(NULL);
+	menu_add_prompt(P_COMMENT, $2, NULL);
+	printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+};
+
+comment_stmt: comment depends_list
+{
+	menu_end_entry();
+};
+
+/* help option */
+
+help_start: T_HELP T_EOL
+{
+	printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+	zconf_starthelp();
+};
+
+help: help_start T_HELPTEXT
+{
+	current_entry->sym->help = $2;
+};
+
+/* depends option */
+
+depends_list:
+	  /* empty */
+	| depends_list depends
+	| depends_list T_EOL
+	| depends_list option_error
+;
+
+depends: T_DEPENDS T_ON expr T_EOL
+{
+	menu_add_dep($3);
+	printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+}
+	| T_DEPENDS expr T_EOL
+{
+	menu_add_dep($2);
+	printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
+}
+	| T_REQUIRES expr T_EOL
+{
+	menu_add_dep($2);
+	printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
+};
+
+/* prompt statement */
+
+prompt_stmt_opt:
+	  /* empty */
+	| prompt if_expr
+{
+	menu_add_prompt(P_PROMPT, $1, $2);
+};
+
+prompt:	  T_WORD
+	| T_WORD_QUOTE
+;
+
+end:	  T_ENDMENU T_EOL	{ $$ = $1; }
+	| T_ENDCHOICE T_EOL	{ $$ = $1; }
+	| T_ENDIF T_EOL		{ $$ = $1; }
+;
+
+nl:
+	  T_EOL
+	| nl T_EOL
+;
+
+if_expr:  /* empty */			{ $$ = NULL; }
+	| T_IF expr			{ $$ = $2; }
+;
+
+expr:	  symbol				{ $$ = expr_alloc_symbol($1); }
+	| symbol T_EQUAL symbol			{ $$ = expr_alloc_comp(E_EQUAL, $1, $3); }
+	| symbol T_UNEQUAL symbol		{ $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); }
+	| T_OPEN_PAREN expr T_CLOSE_PAREN	{ $$ = $2; }
+	| T_NOT expr				{ $$ = expr_alloc_one(E_NOT, $2); }
+	| expr T_OR expr			{ $$ = expr_alloc_two(E_OR, $1, $3); }
+	| expr T_AND expr			{ $$ = expr_alloc_two(E_AND, $1, $3); }
+;
+
+symbol:	  T_WORD	{ $$ = sym_lookup($1, 0); free($1); }
+	| T_WORD_QUOTE	{ $$ = sym_lookup($1, 1); free($1); }
+;
+
+%%
+
+void conf_parse(const char *name)
+{
+	struct symbol *sym;
+	int i;
+
+	zconf_initscan(name);
+
+	sym_init();
+	menu_init();
+	modules_sym = sym_lookup("MODULES", 0);
+	rootmenu.prompt = menu_add_prompt(P_MENU, "Busybox Configuration", NULL);
+
+#if YYDEBUG
+	if (getenv("ZCONF_DEBUG"))
+		zconfdebug = 1;
+#endif
+	zconfparse();
+	if (zconfnerrs)
+		exit(1);
+	menu_finalize(&rootmenu);
+	for_all_symbols(i, sym) {
+		sym_check_deps(sym);
+        }
+
+	sym_change_count = 1;
+}
+
+const char *zconf_tokenname(int token)
+{
+	switch (token) {
+	case T_MENU:		return "menu";
+	case T_ENDMENU:		return "endmenu";
+	case T_CHOICE:		return "choice";
+	case T_ENDCHOICE:	return "endchoice";
+	case T_IF:		return "if";
+	case T_ENDIF:		return "endif";
+	case T_DEPENDS:		return "depends";
+	}
+	return "<token>";
+}
+
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
+{
+	if (id->token != endtoken) {
+		zconf_error("unexpected '%s' within %s block",
+			kconf_id_strings + id->name, zconf_tokenname(starttoken));
+		zconfnerrs++;
+		return false;
+	}
+	if (current_menu->file != current_file) {
+		zconf_error("'%s' in different file than '%s'",
+			kconf_id_strings + id->name, zconf_tokenname(starttoken));
+		fprintf(stderr, "%s:%d: location of the '%s'\n",
+			current_menu->file->name, current_menu->lineno,
+			zconf_tokenname(starttoken));
+		zconfnerrs++;
+		return false;
+	}
+	return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+	va_list ap;
+
+	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+	va_start(ap, err);
+	vfprintf(stderr, err, ap);
+	va_end(ap);
+	fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+	va_list ap;
+
+	zconfnerrs++;
+	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+	va_start(ap, err);
+	vfprintf(stderr, err, ap);
+	va_end(ap);
+	fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+#if YYDEBUG
+	fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+#endif
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+	const char *p;
+	int len;
+
+	putc('"', out);
+	while ((p = strchr(str, '"'))) {
+		len = p - str;
+		if (len)
+			fprintf(out, "%.*s", len, str);
+		fputs("\\\"", out);
+		str = p + 1;
+	}
+	fputs(str, out);
+	putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+	struct symbol *sym = menu->sym;
+	struct property *prop;
+
+	if (sym_is_choice(sym))
+		fprintf(out, "choice\n");
+	else
+		fprintf(out, "config %s\n", sym->name);
+	switch (sym->type) {
+	case S_BOOLEAN:
+		fputs("  boolean\n", out);
+		break;
+	case S_TRISTATE:
+		fputs("  tristate\n", out);
+		break;
+	case S_STRING:
+		fputs("  string\n", out);
+		break;
+	case S_INT:
+		fputs("  integer\n", out);
+		break;
+	case S_HEX:
+		fputs("  hex\n", out);
+		break;
+	default:
+		fputs("  ???\n", out);
+		break;
+	}
+	for (prop = sym->prop; prop; prop = prop->next) {
+		if (prop->menu != menu)
+			continue;
+		switch (prop->type) {
+		case P_PROMPT:
+			fputs("  prompt ", out);
+			print_quoted_string(out, prop->text);
+			if (!expr_is_yes(prop->visible.expr)) {
+				fputs(" if ", out);
+				expr_fprint(prop->visible.expr, out);
+			}
+			fputc('\n', out);
+			break;
+		case P_DEFAULT:
+			fputs( "  default ", out);
+			expr_fprint(prop->expr, out);
+			if (!expr_is_yes(prop->visible.expr)) {
+				fputs(" if ", out);
+				expr_fprint(prop->visible.expr, out);
+			}
+			fputc('\n', out);
+			break;
+		case P_CHOICE:
+			fputs("  #choice value\n", out);
+			break;
+		default:
+			fprintf(out, "  unknown prop %d!\n", prop->type);
+			break;
+		}
+	}
+	if (sym->help) {
+		int len = strlen(sym->help);
+		while (sym->help[--len] == '\n')
+			sym->help[len] = 0;
+		fprintf(out, "  help\n%s\n", sym->help);
+	}
+	fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+	struct property *prop;
+	struct symbol *sym;
+	struct menu *menu;
+
+	menu = rootmenu.list;
+	while (menu) {
+		if ((sym = menu->sym))
+			print_symbol(out, menu);
+		else if ((prop = menu->prompt)) {
+			switch (prop->type) {
+			case P_COMMENT:
+				fputs("\ncomment ", out);
+				print_quoted_string(out, prop->text);
+				fputs("\n", out);
+				break;
+			case P_MENU:
+				fputs("\nmenu ", out);
+				print_quoted_string(out, prop->text);
+				fputs("\n", out);
+				break;
+			default:
+				;
+			}
+			if (!expr_is_yes(prop->visible.expr)) {
+				fputs("  depends ", out);
+				expr_fprint(prop->visible.expr, out);
+				fputc('\n', out);
+			}
+			fputs("\n", out);
+		}
+
+		if (menu->list)
+			menu = menu->list;
+		else if (menu->next)
+			menu = menu->next;
+		else while ((menu = menu->parent)) {
+			if (menu->prompt && menu->prompt->type == P_MENU)
+				fputs("\nendmenu\n", out);
+			if (menu->next) {
+				menu = menu->next;
+				break;
+			}
+		}
+	}
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/mkconfigs
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/mkconfigs	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/mkconfigs	(revision 20)
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Copyright (C) 2002 Khalid Aziz <khalid_aziz at hp.com>
+# Copyright (C) 2002 Randy Dunlap <rddunlap at osdl.org>
+# Copyright (C) 2002 Al Stone <ahs3 at fc.hp.com>
+# Copyright (C) 2002 Hewlett-Packard Company
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#   Busybox version by Matteo Croce <3297627799 at wind.it>
+#
+# Rules to generate bbconfigopts.h from .config:
+#      - Retain lines that begin with "CONFIG_"
+#      - Retain lines that begin with "# CONFIG_"
+#      - lines that use double-quotes must \\-escape-quote them
+
+config="$1"
+if [ $# -lt 1 ]
+then
+	config=.config
+fi
+
+echo "\
+#ifndef _BBCONFIGOPTS_H
+#define _BBCONFIGOPTS_H
+/*
+ * busybox configuration settings.
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ *
+ * This file is generated automatically by scripts/mkconfigs.
+ * Do not edit.
+ *
+ */
+static const char *const bbconfig_config ="
+
+sed 's/\"/\\\"/g' $config | grep "^#\? \?CONFIG_" | awk '{print "\"" $0 "\\n\"";}'
+
+echo ";"
+echo "#endif /* _BBCONFIGOPTS_H */"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/mkmakefile
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/mkmakefile	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/mkmakefile	(revision 20)
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Generates a small Makefile used in the root of the output
+# directory, to allow make to be started from there.
+# The Makefile also allow for more convinient build of external modules
+
+# Usage
+# $1 - Kernel src directory
+# $2 - Output directory
+# $3 - version
+# $4 - patchlevel
+
+
+test ! -r $2/Makefile -o -O $2/Makefile || exit 0
+echo "  GEN     $2/Makefile"
+
+cat << EOF > $2/Makefile
+# Automatically generated by $0: don't edit
+
+VERSION = $3
+PATCHLEVEL = $4
+
+KERNELSRC    := $1
+KERNELOUTPUT := $2
+
+MAKEFLAGS += --no-print-directory
+
+.PHONY: all \$(MAKECMDGOALS)
+
+all:
+	\$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT)
+
+Makefile:;
+
+\$(filter-out all Makefile,\$(MAKECMDGOALS)) %/:
+	\$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$@
+EOF
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/objsizes
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/objsizes	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/objsizes	(revision 20)
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+t_text=0
+t_data=0
+t_bss=0
+
+printf "%9s %11s %9s %9s %s\n" "text+data" "text+rodata" rwdata bss filename
+
+find -name '*.o' | grep -v '^\./scripts/' | grep -vF built-in.o \
+| sed 's:^\./::' | xargs "${CROSS_COMPILE}size" | grep '^ *[0-9]' \
+| {
+while read text data bss dec hex filename; do
+    t_text=$((t_text+text))
+    t_data=$((t_data+data))
+    t_bss=$((t_bss+bss))
+    printf "%9d %11d %9d %9d %s\n" $((text+data)) $text $data $bss "$filename"
+done
+printf "%9d %11d %9d %9d %s\n" $((t_text+t_data)) $t_text $t_data $t_bss "TOTAL"
+} | sort -r
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/showasm
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/showasm	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/showasm	(revision 20)
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Copyright 2006 Rob Landley <rob@landley.net>
+# Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+
+# Dumb little utility function to print out the assembly dump of a single
+# function, or list the functions so dumpable in an executable.  You'd think
+# there would be a way to get objdump to do this, but I can't find it.
+
+[ $# -lt 1 ] || [ $# -gt 2 ] && { echo "usage: showasm file function"; exit 1; }
+
+[ ! -f $1 ] && { echo "File $1 not found"; exit 1; }
+
+if [ $# -eq 1 ]
+then
+  objdump -d $1 | sed -n -e 's/^[0-9a-fA-F]* <\(.*\)>:$/\1/p'
+  exit 0
+fi
+
+objdump -d $1 | sed -n -e '/./{H;$!d}' -e "x;/^.[0-9a-fA-F]* <$2>:/p"
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/trylink
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/trylink	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/scripts/trylink	(revision 20)
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+debug=false
+
+try() {
+    added="$1"
+    shift
+    $debug && echo "Trying: $* $added"
+    "$@" $added 2>busybox_ld.err
+}
+
+# Sanitize lib list (dups, extra spaces etc)
+#echo "BBOX_LIB_LIST=$BBOX_LIB_LIST"
+BBOX_LIB_LIST=`echo "$BBOX_LIB_LIST" | xargs -n1 | sort | uniq | xargs`
+
+# First link with all libs. If it fails, bail out
+echo "Trying libraries: $BBOX_LIB_LIST"
+l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
+test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group"
+try "$l_list" "$@" \
+|| {
+    echo "Failed: $* -Wl,--start-group $l_list -Wl,--end-group"
+    cat busybox_ld.err
+    exit 1
+}
+
+# Now try to remove each lib and build without it.
+# Stop when no lib can be removed.
+while test "$BBOX_LIB_LIST"; do
+    $debug && echo "Trying libraries: $BBOX_LIB_LIST"
+    all_needed=true
+    for one in $BBOX_LIB_LIST; do
+	without_one=`echo " $BBOX_LIB_LIST " | sed "s/ $one / /g" | xargs`
+	l_list=`echo "$without_one" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
+	test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group"
+	$debug && echo "Trying -l options: '$l_list'"
+	if try "$l_list" "$@"; then
+		echo "Library $one is not needed"
+		BBOX_LIB_LIST="$without_one"
+		all_needed=false
+	else
+		echo "Library $one is needed"
+	fi
+    done
+    # All libs were needed, can't remove any
+    $all_needed && break
+    # If there is no space char, the list has just one lib.
+    # I'm not sure that in this case lib really is 100% needed.
+    # Let's try linking without it anyway... thus commented out.
+    #{ echo "$BBOX_LIB_LIST" | grep -q ' '; } || break
+done
+
+# Make the binary with final, minimal list of libs
+echo "Final link with: $BBOX_LIB_LIST"
+l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
+test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group -Wl,--verbose"
+# --verbose gives us gobs of info to stdout (e.g. linker script used)
+if ! test -f busybox_ldscript; then
+    try "$l_list -Wl,--verbose" "$@" >busybox_ld.out
+else
+    echo "Custom linker script 'busybox_ldscript' found, using it"
+    # Add SORT_BY_ALIGNMENT to linker script (found in busybox_ld.out):
+    #  .rodata         : { *(.rodata SORT_BY_ALIGNMENT(.rodata.*) .gnu.linkonce.r.*) }
+    #  *(.data SORT_BY_ALIGNMENT(.data.*) .gnu.linkonce.d.*)
+    #  *(.bss SORT_BY_ALIGNMENT(.bss.*) .gnu.linkonce.b.*)
+    # This will eliminate most of the data padding (~3kb).
+    try "$l_list -Wl,--verbose -Wl,-T -Wl,busybox_ldscript" "$@" >busybox_ld.out
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/selinux/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/selinux/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/selinux/Config.in	(revision 20)
@@ -0,0 +1,108 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Selinux Utilities"
+	depends on SELINUX
+
+config CHCON
+	bool "chcon"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to change the security context of file.
+
+config FEATURE_CHCON_LONG_OPTIONS
+	bool "Enable long options"
+	default y
+	depends on CHCON && GETOPT_LONG
+	help
+	  Support long options for the chcon applet.
+
+config GETENFORCE
+	bool "getenforce"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to get the current mode of SELinux.
+
+config GETSEBOOL
+	bool "getsebool"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to get SELinux boolean values.
+
+config LOAD_POLICY
+	bool "load_policy"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to load SELinux policy.
+
+config MATCHPATHCON
+	bool "matchpathcon"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to get default security context of the
+	  specified path from the file contexts configuration.
+
+config RESTORECON
+	bool "restorecon"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to relabel files. The feature is almost
+	  the same as setfiles, but usage is a little different.
+
+config RUNCON
+	bool "runcon"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to run command in speficied security context.
+
+config FEATURE_RUNCON_LONG_OPTIONS
+	bool "Enable long options"
+	default y
+	depends on RUNCON && GETOPT_LONG
+	help
+	  Support long options for the runcon applet.
+
+config SELINUXENABLED
+	bool "selinuxenabled"
+	default n
+	depends on SELINUX
+	help
+	  Enable support for this command to be used within shell scripts
+	  to determine if selinux is enabled.
+
+config SETENFORCE
+	bool "setenforce"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to modify the mode SELinux is running in.
+
+config SETFILES
+	bool "setfiles"
+	default n
+	depends on SELINUX
+	help
+	  Enable support to modify to relabel files.
+	  Notice: If you built libselinux with -D_FILE_OFFSET_BITS=64,
+	  (It is default in libselinux's Makefile), you _must_ enable
+	  CONFIG_LFS.
+
+config FEATURE_SETFILES_CHECK_OPTION
+	bool "Enable check option"
+	default n
+	depends on SETFILES
+	help
+	  Support "-c" option (check the validity of the contexts against
+	  the specified binary policy) for setfiles. Requires libsepol.
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/selinux/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/selinux/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/selinux/Kbuild	(revision 20)
@@ -0,0 +1,18 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+# Copyright (C) 2007 by KaiGai Kohei <kaigai@kaigai.gr.jp>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_CHCON)		+= chcon.o
+lib-$(CONFIG_GETENFORCE)	+= getenforce.o
+lib-$(CONFIG_GETSEBOOL)		+= getsebool.o
+lib-$(CONFIG_LOAD_POLICY)	+= load_policy.o
+lib-$(CONFIG_MATCHPATHCON)	+= matchpathcon.o
+lib-$(CONFIG_RUNCON)		+= runcon.o
+lib-$(CONFIG_SELINUXENABLED)	+= selinuxenabled.o
+lib-$(CONFIG_SETENFORCE)	+= setenforce.o
+lib-$(CONFIG_SETFILES)		+= setfiles.o
+lib-$(CONFIG_RESTORECON)	+= setfiles.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/Config.in	(revision 20)
@@ -0,0 +1,320 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Shells"
+
+choice
+	prompt "Choose your default shell"
+	default FEATURE_SH_IS_NONE
+	help
+	  Choose a shell. The ash shell is the most bash compatible
+	  and full featured one.
+
+config FEATURE_SH_IS_ASH
+	select ASH
+	bool "ash"
+
+config FEATURE_SH_IS_HUSH
+	select HUSH
+	bool "hush"
+
+config FEATURE_SH_IS_LASH
+	select LASH
+	bool "lash"
+
+config FEATURE_SH_IS_MSH
+	select MSH
+	bool "msh"
+
+config FEATURE_SH_IS_NONE
+	bool "none"
+
+endchoice
+
+config ASH
+	bool "ash"
+	default n
+	select TEST
+	help
+	  Tha 'ash' shell adds about 60k in the default configuration and is
+	  the most complete and most pedantically correct shell included with
+	  busybox.  This shell is actually a derivative of the Debian 'dash'
+	  shell (by Herbert Xu), which was created by porting the 'ash' shell
+	  (written by Kenneth Almquist) from NetBSD.
+
+comment "Ash Shell Options"
+	depends on ASH
+
+config ASH_JOB_CONTROL
+	bool "Job control"
+	default y
+	depends on ASH
+	help
+	  Enable job control in the ash shell.
+
+config ASH_READ_NCHARS
+	bool "'read -n N' and 'read -s' support"
+	default n
+	depends on ASH
+	help
+	  'read -n N' will return a value after N characters have been read.
+	  'read -s' will read without echoing the user's input.
+
+config ASH_READ_TIMEOUT
+	bool "'read -t S' support."
+	default n
+	depends on ASH
+	help
+	  'read -t S' will return a value after S seconds have passed.
+	  This implementation will allow fractional seconds, expressed
+	  as a decimal fraction, e.g. 'read -t 2.5 foo'.
+
+config ASH_ALIAS
+	bool "alias support"
+	default y
+	depends on ASH
+	help
+	  Enable alias support in the ash shell.
+
+config ASH_MATH_SUPPORT
+	bool "Posix math support"
+	default y
+	depends on ASH
+	help
+	  Enable math support in the ash shell.
+
+config ASH_MATH_SUPPORT_64
+	bool "Extend Posix math support to 64 bit"
+	default n
+	depends on ASH_MATH_SUPPORT
+	help
+	  Enable 64-bit math support in the ash shell.  This will make
+	  the shell slightly larger, but will allow computation with very
+	  large numbers.
+
+config ASH_GETOPTS
+	bool "Builtin getopt to parse positional parameters"
+	default n
+	depends on ASH
+	help
+	  Enable getopts builtin in the ash shell.
+
+config ASH_BUILTIN_ECHO
+	bool "Builtin version of 'echo'"
+	default y
+	select ECHO
+	depends on ASH
+	help
+	  Enable support for echo, builtin to ash.
+
+config ASH_BUILTIN_TEST
+	bool "Builtin version of 'test'"
+	default y
+	select TEST
+	depends on ASH
+	help
+	  Enable support for test, builtin to ash.
+
+config ASH_CMDCMD
+	bool "'command' command to override shell builtins"
+	default n
+	depends on ASH
+	help
+	  Enable support for the ash 'command' builtin, which allows
+	  you to run the specified command with the specified arguments,
+	  even when there is an ash builtin command with the same name.
+
+config ASH_MAIL
+	bool "Check for new mail on interactive shells"
+	default y
+	depends on ASH
+	help
+	  Enable "check for new mail" in the ash shell.
+
+config ASH_OPTIMIZE_FOR_SIZE
+	bool "Optimize for size instead of speed"
+	default y
+	depends on ASH
+	help
+	  Compile ash for reduced size at the price of speed.
+
+config ASH_RANDOM_SUPPORT
+	bool "Pseudorandom generator and variable $RANDOM"
+	default n
+	depends on ASH
+	help
+	  Enable pseudorandom generator and dynamic variable "$RANDOM".
+	  Each read of "$RANDOM" will generate a new pseudorandom value.
+	  You can reset the generator by using a specified start value.
+	  After "unset RANDOM" then generator will switch off and this
+	  variable will no longer have special treatment.
+
+config ASH_EXPAND_PRMT
+	bool "Expand prompt string"
+	default n
+	depends on ASH
+	help
+	  "PS#" may be contain volatile content, such as backquote commands.
+	  This option recreates the prompt string from the environment
+	  variable each time it is displayed.
+
+config HUSH
+	bool "hush"
+	default n
+	select TRUE
+	select FALSE
+	select TEST
+	help
+	  hush is a very small shell (just 18k) and it has fairly complete
+	  Bourne shell grammar.  It even handles all the normal flow control
+	  options such as if/then/elif/else/fi, for/in/do/done, while loops,
+	  etc.
+
+	  It does not handle case/esac, select, function, here documents ( <<
+	  word ), arithmetic expansion, aliases, brace expansion, tilde
+	  expansion, &> and >& redirection of stdout+stderr, etc.
+
+config HUSH_HELP
+	bool "help builtin"
+	default n
+	depends on HUSH
+	help
+	  Enable help builtin in hush. Code size + ~1 kbyte.
+
+config HUSH_INTERACTIVE
+	bool "Interactive mode"
+	default y
+	depends on HUSH
+	help
+	  Enable interactive mode (prompt and command editing).
+	  Without this, hush simply reads and executes commands
+	  from stdin just like a shell script from the file.
+	  No prompt, no PS1/PS2 magic shell variables.
+
+config HUSH_JOB
+	bool "Job control"
+	default n
+	depends on HUSH_INTERACTIVE
+	help
+	  Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
+	  command (not entire shell), fg/bg builtins work. Without this option,
+	  "cmd &" still works by simply spawning a process and immediately
+	  prompting for next command (or executing next command in a script),
+	  but no separate process group is formed.
+
+config HUSH_TICK
+	bool "Process substitution"
+	default n
+	depends on HUSH
+	help
+	  Enable process substitution `command` and $(command) in hush.
+
+config HUSH_IF
+	bool "Support if/then/elif/else/fi"
+	default n
+	depends on HUSH
+	help
+	  Enable if/then/elif/else/fi in hush.
+
+config HUSH_LOOPS
+	bool "Support for, while and until loops"
+	default n
+	depends on HUSH
+	help
+	  Enable for, while and until loops in hush.
+
+config LASH
+	bool "lash"
+	default n
+	select TRUE
+	select FALSE
+	select TEST
+	help
+	  lash is the very smallest shell (adds just 10k) and it is quite
+	  usable as a command prompt, but it is not suitable for any but the
+	  most trivial scripting (such as an initrd that calls insmod a few
+	  times) since it does not understand any Bourne shell grammar.  It
+	  does handle pipes, redirects, and job control though.  Adding in
+	  command editing makes it a very nice lightweight command prompt.
+
+
+config MSH
+	bool "msh"
+	default n
+	select TRUE
+	select FALSE
+	select TEST
+	help
+	  The minix shell (adds just 30k) is quite complete and handles things
+	  like for/do/done, case/esac and all the things you expect a Bourne
+	  shell to do.  It is not always pedantically correct about Bourne
+	  shell grammar (try running the shell testscript "tests/sh.testcases"
+	  on it and compare vs bash) but for most things it works quite well.
+	  It also uses only vfork, so it can be used on uClinux systems.
+
+comment "Bourne Shell Options"
+	depends on MSH || LASH || HUSH || ASH
+
+config FEATURE_SH_EXTRA_QUIET
+	bool "Hide message on interactive shell startup"
+	default n
+	depends on MSH || LASH || HUSH || ASH
+	help
+	  Remove the busybox introduction when starting a shell.
+
+config FEATURE_SH_STANDALONE
+	bool "Standalone shell"
+	default n
+	depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
+	help
+	  This option causes busybox shells to use busybox applets
+	  in preference to executables in the PATH whenever possible.  For
+	  example, entering the command 'ifconfig' into the shell would cause
+	  busybox to use the ifconfig busybox applet.  Specifying the fully
+	  qualified executable name, such as '/sbin/ifconfig' will still
+	  execute the /sbin/ifconfig executable on the filesystem.  This option
+	  is generally used when creating a statically linked version of busybox
+	  for use as a rescue shell, in the event that you screw up your system.
+
+	  This is implemented by re-execing /proc/self/exe (typically)
+	  with right parameters. Some selected applets ("NOFORK" applets)
+	  can even be executed without creating new process.
+	  Instead, busybox will call <applet>_main() internally.
+
+	  However, this causes problems in chroot jails without mounted /proc
+	  and with ps/top (command name can be shown as 'exe' for applets
+	  started this way).
+# untrue?
+#	  Note that this will *also* cause applets to take precedence
+#	  over shell builtins of the same name.  So turning this on will
+#	  eliminate any performance gained by turning on the builtin "echo"
+#	  and "test" commands in ash.
+# untrue?
+#	  Note that when using this option, the shell will attempt to directly
+#	  run '/bin/busybox'.  If you do not have the busybox binary sitting in
+#	  that exact location with that exact name, this option will not work at
+#	  all.
+
+config CTTYHACK
+	bool "cttyhack"
+	default n
+	help
+	  One common problem reported on the mailing list is "can't access tty;
+	  job control turned off" error message which typically appears when
+	  one tries to use shell with stdin/stdout opened to /dev/console.
+	  This device is special - it cannot be a controlling tty.
+
+	  Proper solution is to use correct device instead of /dev/console.
+
+	  cttyhack provides "quick and dirty" solution to this problem.
+	  It analyzes stdin with various ioctls, trying to determine whether
+	  it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
+	  If it detects one, it closes stdin/out/err and reopens that device.
+	  Then it executes given program. Usage example for /etc/inittab
+	  (for busybox init):
+
+	  ::respawn:/bin/cttyhack /bin/sh
+
+endmenu
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/Kbuild	(revision 20)
@@ -0,0 +1,13 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_ASH)  += ash.o
+lib-$(CONFIG_HUSH) += hush.o
+lib-$(CONFIG_LASH) += lash.o
+lib-$(CONFIG_MSH)  += msh.o
+
+lib-$(CONFIG_CTTYHACK) += cttyhack.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/README
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/README	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/README	(revision 20)
@@ -0,0 +1,101 @@
+Various bits of what is known about busybox shells, in no particular order.
+
+2007-06-13
+hush: exec <"$1" doesn't do parameter subst
+
+2007-05-24
+hush: environment-related memory leak plugged, with net code size
+decrease.
+
+2007-05-24
+hush: '( echo ${name )' will show syntax error message, but prompt
+doesn't return (need to press <enter>). Pressing Ctrl-C, <enter>,
+'( echo ${name )' again, Ctrl-C segfaults.
+
+2007-05-21
+hush: environment cannot be handled by libc routines as they are leaky
+(by API design and thus unfixable): hush will leak memory in this script,
+bash does not:
+pid=$$
+while true; do
+    unset t;
+    t=111111111111111111111111111111111111111111111111111111111111111111111111
+    export t
+    ps -o vsz,pid,comm | grep " $pid "
+done
+The fix is to not use setenv/putenv/unsetenv but manipulate env ourself. TODO.
+hush: meanwhile, first three command subst bugs mentioned below are fixed. :)
+
+2007-05-06
+hush: more bugs spotted. Comparison with bash:
+bash-3.2# echo "TEST`date;echo;echo`BEST"
+TESTSun May  6 09:21:05 CEST 2007BEST         [we dont strip eols]
+bash-3.2# echo "TEST`echo '$(echo ZZ)'`BEST"
+TEST$(echo ZZ)BEST                            [we execute inner echo]
+bash-3.2# echo "TEST`echo "'"`BEST"
+TEST'BEST                                     [we totally mess up this one]
+bash-3.2# echo `sleep 5`
+[Ctrl-C should work, Ctrl-Z should do nothing][we totally mess up this one]
+bash-3.2# if true; then
+> [Ctrl-C]
+bash-3.2#                                     [we re-issue "> "]
+bash-3.2# if echo `sleep 5`; then
+> true; fi                                    [we execute sleep before "> "]
+
+2007-05-04
+hush: made ctrl-Z/C work correctly for "while true; do true; done"
+(namely, it backgrounds/interrupts entire "while")
+
+2007-05-03
+hush: new bug spotted: Ctrl-C on "while true; do true; done" doesn't
+work right:
+# while true; do true; done
+[1] 0 true <-- pressing Ctrl-C several times...
+[2] 0 true
+[3] 0 true
+Segmentation fault
+
+2007-05-03
+hush: update on "sleep 1 | exit 3; echo $?" bug.
+parse_stream_outer() repeatedly calls parse_stream().
+parse_stream() is now fixed to stop on ';' in this example,
+fixing it (parse_stream_outer() will call parse_stream() 1st time,
+execute the parse tree, call parse_stream() 2nd time and execute the tree).
+But it's not the end of story.
+In more complex situations we _must_ parse way farther before executing.
+Example #2: "{ sleep 1 | exit 3; echo $?; ...few_lines... } >file".
+Because of redirection, we cannot execute 1st pipe before we parse it all.
+We probably need to learn to store $var expressions in parse tree.
+Debug printing of parse tree would be nice too.
+
+2007-04-28
+hush: Ctrl-C and Ctrl-Z for single NOFORK commands are working.
+Memory and other resource leaks (opendir) are not addressed
+(testcase is "rm -i" interrupted by ctrl-c).
+
+2007-04-21
+hush: "sleep 5 | sleep 6" + Ctrl-Z + fg seems to work.
+"rm -i" + Ctrl-C, "sleep 5" + Ctrl-Z still doesn't work
+for SH_STANDALONE case :(
+
+2007-04-21
+hush: fixed non-backgrounding of "sleep 1 &" and totally broken
+"sleep 1 | sleep 2 &". Noticed a bug where successive jobs
+get numbers 1,2,3 even when job #1 has exited before job# 2 is started.
+(bash reuses #1 in this case)
+
+2007-04-21
+hush: "sleep 1 | exit 3; echo $?" prints 0 because $? is substituted
+_before_ pipe gets executed!! run_list_real() already has "pipe;echo"
+parsed and handed to it for execution, so it sees "pipe"; "echo 0".
+
+2007-04-21
+hush: removed setsid() and made job control sort-of-sometimes-work.
+Ctrl-C in "rm -i" works now except for SH_STANDALONE case.
+"sleep 1 | exit 3" + "echo $?" works, "sleep 1 | exit 3; echo $?"
+shows exitcode 0 (should be 3). "sleep 1 | sleep 2 &" fails horribly.
+
+2007-04-14
+lash, hush: both do setsid() and as a result don't have ctty!
+Ctrl-C doesn't work for any child (try rm -i), etc...
+lash: bare ">file" doesn't create a file (hush works)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/README.job
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/README.job	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/README.job	(revision 20)
@@ -0,0 +1,304 @@
+strace of "sleep 1 | sleep 2" being run from interactive bash 3.0
+
+
+Synopsis:
+open /dev/tty [, if fails, open ttyname(0)]; close /* helps re-establish ctty */
+get current signal mask
+TCGETS on fd# 0
+TCGETS on fd# 2 /* NB: if returns ENOTTY (2>/dev/null), sh seems to disable job control,
+                   does not show prompt, but still executes cmds from fd# 0 */
+install default handlers for CHLD QUIT TERM
+install common handler for HUP INT ILL TRAP ABRT FPE BUS SEGV SYS PIPE ALRM TERM XCPU XFSZ VTALRM USR1 USR2
+ignore QUIT
+install handler for INT
+ignore TERM
+install handler for INT
+ignore TSTP TTOU TTIN
+install handler for WINCH
+get pid, ppid
+block all signals
+unblock all signals
+get our pprocess group
+    minidoc:
+    Each process group is a member of a session and each process is a member
+    of the session of which its process group is a member.
+    Process groups are used for distribution of signals, and by terminals
+    to arbitrate requests for their input: processes that have the same
+    process group as the terminal are foreground and may read, while others
+    will block with a signal if they attempt to read.  These calls are thus used
+    by programs (shells) to create process groups in implementing job control.
+    The TIOCGPGRP and TIOCSPGRP calls described in termios(3) are used to get/set
+    the process group of the control terminal.
+    If a session has a controlling terminal, CLOCAL is not set and a hangup occurs,
+    then the session leader is sent a SIGHUP.  If the session leader exits,
+    the SIGHUP signal will be sent to each process in the foreground process
+    group of the controlling terminal.
+    If the exit of the process causes a process group to become orphaned,
+    and if any member of the newly-orphaned process group is stopped, then a SIGHUP
+    signal followed by a SIGCONT signal will be sent to each process
+    in the newly-orphaned process group.
+...
+dup stderr to fd# 255
+move ourself to our own process group
+block CHLD TSTP TTIN TTOU
+set tty's (255, stderr's) foreground process group to our group
+allow all signals
+mark 255 CLOEXEC
+set CHLD handler
+get signal mask
+get fd#0 flags
+get signal mask
+set INT handler
+block CHLD TSTP TTIN TTOU
+set fd #255 foreground process group to our group
+allow all signals
+set INT handler
+block all signals
+allow all signals
+block INT
+allow all signals
+lotsa sigactions: set INT,ALRM,WINCH handlers, ignore TERM,QUIT,TSTP,TTOU,TTIN
+block all signals
+allow all signals
+block all signals
+allow all signals
+block all signals
+allow all signals
+read "sleep 1 | sleep 2\n"
+block INT
+TCSETSW on fd# 0
+allow all signals
+lotsa sigactions: set INT,ALRM,WINCH handlers, ignore TERM,QUIT,TSTP,TTOU,TTIN
+block CHLD
+pipe([4, 5])  /* oops seems I lost another pipe() in editing... */
+fork child #1
+put child in it's own process group
+block only CHLD
+close(5)
+block only INT CHLD
+fork child #2
+put child in the same process group as first one
+block only CHLD
+close(4)
+block only CHLD
+block only CHLD TSTP TTIN TTOU
+set fd# 255 foreground process group to first child's one
+block only CHLD
+block only CHLD
+block only CHLD
+/* note: because shell is not in foreground now, e.g. Ctrl-C will send INT to children only! */
+wait4 for children to die or stop - first child exits
+wait4 for children to die or stop - second child exits
+block CHLD TSTP TTIN TTOU
+set fd# 255 foreground process group to our own one
+block only CHLD
+block only CHLD
+block nothing
+--- SIGCHLD (Child exited) @ 0 (0) ---
+    wait for it - no child (already waited for)
+    sigreturn()
+read signal mask
+lotsa sigactions...
+read next command
+
+
+execve("/bin/sh", ["sh"], [/* 34 vars */]) = 0
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
+ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
+rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_DFL}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGHUP, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGINT, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGILL, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGTRAP, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGABRT, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGFPE, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGBUS, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGSEGV, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGSYS, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGPIPE, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGALRM, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGTERM, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGXCPU, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGXFSZ, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGVTALRM, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGUSR1, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGUSR2, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_IGN}, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTSTP, {SIG_IGN}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGTTOU, {SIG_IGN}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGTTIN, {SIG_IGN}, {SIG_DFL}, 8) = 0
+rt_sigaction(SIGWINCH, {0x807dc33, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+getpid()                = 19473
+getppid()               = 19472
+rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+getpgrp()               = 1865
+dup(2)                  = 4
+fcntl64(255, F_GETFD)   = -1 EBADF (Bad file descriptor)
+dup2(4, 255)            = 255
+close(4)                = 0
+ioctl(255, TIOCGPGRP, [1865]) = 0
+getpid()                = 19473
+setpgid(0, 19473)       = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [], 8) = 0
+ioctl(255, TIOCSPGRP, [19473]) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+fcntl64(255, F_SETFD, FD_CLOEXEC) = 0
+rt_sigaction(SIGCHLD, {0x807c922, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_DFL}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+fcntl64(0, F_GETFL)     = 0x2 (flags O_RDWR)
+...
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [], 8) = 0
+ioctl(255, TIOCSPGRP, [19473]) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGINT, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTERM, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGQUIT, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGQUIT, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGALRM, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTSTP, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTSTP, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTTOU, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTOU, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTTIN, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTIN, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGWINCH, {0x80ca5cd, [], SA_RESTORER|SA_RESTART, 0x6ff7a4f8}, {0x807dc33, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+write(2, "sh-3.00# ", 9) = 9
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+read(0, "s", 1)         = 1
+write(2, "s", 1)        = 1
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+read(0, "l", 1)         = 1
+write(2, "l", 1)        = 1
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+... rest of "sleep 1 | sleep 2" entered...
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+read(0, "2", 1)         = 1
+write(2, "2", 1)        = 1
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+read(0, "\r", 1)        = 1
+write(2, "\n", 1)       = 1
+rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
+ioctl(0, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_IGN}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGALRM, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTSTP, {SIG_IGN}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTOU, {SIG_IGN}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTIN, {SIG_IGN}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGWINCH, {0x807dc33, [], SA_RESTORER, 0x6ff7a4f8}, {0x80ca5cd, [], SA_RESTORER|SA_RESTART, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
+pipe([4, 5])            = 0
+rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
+fork()                  = 19755
+setpgid(19755, 19755)                = 0
+rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
+close(5)                = 0
+rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
+fork()                  = 19756
+setpgid(19756, 19755)   = 0
+rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
+close(4)                = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [CHLD], 8) = 0
+ioctl(255, TIOCSPGRP, [19755]) = 0
+rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
+rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
+wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WUNTRACED, NULL) = 19755
+wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WUNTRACED, NULL) = 19756
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [CHLD], 8) = 0
+ioctl(255, TIOCSPGRP, [19473]) = 0
+rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
+rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+--- SIGCHLD (Child exited) @ 0 (0) ---
+wait4(-1, 0x77fc9c54, WNOHANG|WUNTRACED, NULL) = -1 ECHILD (No child processes)
+sigreturn()             = ? (mask now [])
+rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [], 8) = 0
+ioctl(255, TIOCSPGRP, [19473]) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGINT, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGINT, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTERM, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGQUIT, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGQUIT, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGALRM, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {0x808f752, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTSTP, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTSTP, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTTOU, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTOU, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGTTIN, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTIN, {SIG_IGN}, {0x80ca530, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGWINCH, {0x80ca5cd, [], SA_RESTORER|SA_RESTART, 0x6ff7a4f8}, {0x807dc33, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+write(2, "sh-3.00# ", 9) = 9
+
+
+getpid() = 19755
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGTSTP, {SIG_DFL}, {SIG_IGN}, 8)    = 0
+rt_sigaction(SIGTTIN, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTOU, {SIG_DFL}, {SIG_IGN}, 8) = 0
+setpgid(19755, 19755) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [], 8) = 0
+ioctl(255, TIOCSPGRP, [19755]) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+close(4)   = 0
+dup2(5, 1) = 1
+close(5)              = 0
+rt_sigaction(SIGINT, {SIG_DFL}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGCHLD, {SIG_DFL}, {0x807c922, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+execve("/bin/sleep", ["sleep", "1"], [/* 34 vars */]) = 0
+...
+_exit(0)                = ?
+
+
+getpid() = 19756
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+rt_sigaction(SIGTSTP, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTIN, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTTOU, {SIG_DFL}, {SIG_IGN}, 8) = 0
+setpgid(19756, 19755) = 0
+rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [], 8) = 0
+ioctl(255, TIOCSPGRP, [19755]) = 0
+rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
+dup2(4, 0) = 0
+close(4) = 0
+rt_sigaction(SIGINT, {SIG_DFL}, {0x808f7d7, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGTERM, {SIG_DFL}, {SIG_IGN}, 8) = 0
+rt_sigaction(SIGCHLD, {SIG_DFL}, {0x807c922, [], SA_RESTORER, 0x6ff7a4f8}, 8) = 0
+execve("/bin/sleep", ["sleep", "2"], [/* 34 vars */]) = 0
+...
+_exit(0)                = ?
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-alias/alias.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-alias/alias.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-alias/alias.right	(revision 20)
@@ -0,0 +1,4 @@
+alias: 0
+alias: 0
+./alias.tests: line 25: qfoo: not found
+quux
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-alias/alias.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-alias/alias.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-alias/alias.tests	(revision 20)
@@ -0,0 +1,37 @@
+# place holder for future alias testing
+#ash# shopt -s expand_aliases
+
+# alias/unalias tests originally in builtins.tests
+
+unalias -a
+# this should return success, according to POSIX.2
+alias
+echo alias: $?
+alias foo=bar
+unalias foo
+# this had better return success, according to POSIX.2
+alias
+echo alias: $?
+
+# bug in all versions through bash-2.05b
+
+unalias qfoo qbar qbaz quux 2>/dev/null
+
+alias qfoo=qbar
+alias qbar=qbaz
+alias qbaz=quux
+alias quux=qfoo
+
+qfoo
+
+unalias qfoo qbar qbaz quux
+
+unalias -a
+
+alias foo='echo '
+alias bar=baz
+alias baz=quux
+
+foo bar
+
+unalias foo bar baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/README.ash
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/README.ash	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/README.ash	(revision 20)
@@ -0,0 +1,1 @@
+there is no support for (( )) constructs in ash
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith-for.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith-for.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith-for.right	(revision 20)
@@ -0,0 +1,74 @@
+0
+1
+2
+0
+1
+2
+0
+1
+2
+0
+2
+4
+fx is a function
+fx ()
+{
+    i=0;
+    for ((1; i < 3; i++ ))
+    do
+        echo $i;
+    done;
+    for ((i=0; 1; i++ ))
+    do
+        if (( i >= 3 )); then
+            break;
+        fi;
+        echo $i;
+    done;
+    for ((i=0; i<3; 1))
+    do
+        echo $i;
+        (( i++ ));
+    done;
+    i=0;
+    for ((1; 1; 1))
+    do
+        if (( i > 2 )); then
+            break;
+        fi;
+        echo $i;
+        (( i++ ));
+    done;
+    i=0;
+    for ((1; 1; 1))
+    do
+        if (( i > 2 )); then
+            break;
+        fi;
+        echo $i;
+        (( i++ ));
+    done
+}
+0
+1
+2
+0
+1
+2
+0
+1
+2
+0
+1
+2
+0
+1
+2
+./arith-for.tests: line 77: syntax error: arithmetic expression required
+./arith-for.tests: line 77: syntax error: `(( i=0; "i < 3" ))'
+2
+./arith-for.tests: line 83: syntax error: `;' unexpected
+./arith-for.tests: line 83: syntax error: `(( i=0; i < 3; i++; 7 ))'
+2
+20
+20
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith-for.testsx
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith-for.testsx	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith-for.testsx	(revision 20)
@@ -0,0 +1,94 @@
+fx()
+{
+i=0
+for (( ; i < 3; i++ ))
+do
+	echo $i
+done
+
+for (( i=0; ; i++ ))
+do
+	if (( i >= 3 )); then
+		break;
+	fi
+	echo $i
+done
+
+for (( i=0; i<3; ))
+do
+	echo $i
+	(( i++ ))
+done
+
+i=0
+for (( ; ; ))
+do
+	if (( i > 2 )); then
+		break;
+	fi
+	echo $i;
+	(( i++ ))
+done
+
+i=0
+for ((;;))
+do
+	if (( i > 2 )); then
+		break;
+	fi
+	echo $i;
+	(( i++ ))
+done
+}
+
+for (( i=0; "i < 3" ; i++ ))
+do
+	echo $i
+done
+
+i=0
+for (( ; "i < 3"; i++ ))
+do
+	echo $i
+done
+
+for (( i=0; ; i++ ))
+do
+	if (( i >= 3 )); then
+		break;
+	fi
+	echo $i
+done
+
+for ((i = 0; ;i++ ))
+do
+	echo $i
+	if (( i < 3 )); then
+		(( i++ ))
+		continue;
+	fi
+	break
+done
+
+type fx
+fx
+
+# errors
+for (( i=0; "i < 3" ))
+do
+	echo $i
+done
+echo $?
+
+for (( i=0; i < 3; i++; 7 ))
+do
+	echo $i
+done
+echo $?
+
+# one-liners added in post-bash-2.04
+for     ((i=0; i < 20; i++)) do : ; done
+echo $i
+
+for     ((i=0; i < 20; i++)) { : ; }
+echo $i
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith.right	(revision 20)
@@ -0,0 +1,138 @@
+Format: 'expected actual'
+163 163
+4 4
+16 16
+8 8
+2 2
+4 4
+2 2
+2 2
+1 1
+0 0
+0 0
+0 0
+1 1
+1 1
+2 2
+-3 -3
+-2 -2
+1 1
+0 0
+2 2
+131072 131072
+29 29
+33 33
+49 49
+1 1
+1 1
+0 0
+0 0
+1 1
+1 1
+1 1
+2 2
+3 3
+1 1
+58 58
+2 2
+60 60
+1 1
+256 256
+16 16
+62 62
+4 4
+29 29
+5 5
+-4 -4
+4 4
+1 1
+32 32
+32 32
+1 1
+1 1
+32 32
+20 20
+30 30
+20 20
+30 30
+./arith.tests: line 117: syntax error: 1 ? 20 : x+=2
+6 6
+6,5,3 6,5,3
+263 263
+255 255
+40 40
+./arith.tests: line 163: syntax error:  7 = 43 
+./arith.tests: line 165: divide by zero
+./arith.tests: let: line 166: syntax error: jv += $iv
+./arith.tests: line 167: syntax error:  jv += $iv 
+./arith.tests: let: line 168: syntax error: rv = 7 + (43 * 6
+abc
+def
+ghi
+./arith.tests: line 191: syntax error:  ( 4 + A ) + 4 
+16 16
+./arith.tests: line 196: syntax error:  4 ? : 3 + 5 
+./arith.tests: line 197: syntax error:  1 ? 20 
+./arith.tests: line 198: syntax error:  4 ? 20 : 
+9 9
+./arith.tests: line 205: syntax error:  0 && B=42 
+./arith.tests: line 208: syntax error:  1 || B=88 
+9 9
+9 9
+9 9
+7 7
+7
+4 4
+32767 32767
+32768 32768
+131072 131072
+2147483647 2147483647
+1 1
+4 4
+4 4
+5 5
+5 5
+4 4
+3 3
+3 3
+4 4
+4 4
+./arith.tests: line 257: syntax error:  7-- 
+./arith.tests: line 259: syntax error:  --x=7 
+./arith.tests: line 260: syntax error:  ++x=7 
+./arith.tests: line 262: syntax error:  x++=7 
+./arith.tests: line 263: syntax error:  x--=7 
+4 4
+7 7
+-7 -7
+./arith1.sub: line 2: syntax error:  4-- 
+./arith1.sub: line 3: syntax error:  4++ 
+./arith1.sub: line 4: syntax error:  4 -- 
+./arith1.sub: line 5: syntax error:  4 ++ 
+6 6
+3 3
+7 7
+4 4
+0 0
+3 3
+7 7
+2 2
+-2 -2
+1 1
+./arith1.sub: line 37: syntax error:  +++7 
+./arith2.sub: line 2: syntax error:  --7 
+./arith2.sub: line 3: syntax error:  ++7 
+./arith2.sub: line 4: syntax error:  -- 7 
+./arith2.sub: line 5: syntax error:  ++ 7 
+5 5
+1 1
+4 4
+0 0
+./arith2.sub: line 42: syntax error:  -- - 7 
+./arith2.sub: line 47: syntax error:  ++ + 7 
+8 12
+./arith.tests: line 290: syntax error: a b
+42
+42
+42
+./arith.tests: line 302: a[b[c]d]=e: not found
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith.tests	(revision 20)
@@ -0,0 +1,302 @@
+#ash# set +o posix
+#ash# declare -i iv jv
+
+echo "Format: 'expected actual'"
+
+iv=$(( 3 + 5 * 32 ))
+echo 163 $iv
+#ash# iv=iv+3
+#ash# echo 166 $iv
+iv=2
+jv=iv
+
+let "jv *= 2"
+echo 4 $jv
+jv=$(( $jv << 2 ))
+echo 16 $jv
+
+let jv="$jv / 2"
+echo 8 $jv
+#ash# jv="jv >> 2"
+      let jv="jv >> 2"
+echo 2 $jv
+
+iv=$((iv+ $jv))
+echo 4 $iv
+echo 2 $((iv -= jv))
+echo 2 $iv
+echo 1 $(( iv == jv ))
+echo 0 $(( iv != $jv ))
+echo 0 $(( iv < jv ))
+echo 0 $(( $iv > $jv ))
+echo 1 $(( iv <= $jv ))
+echo 1 $(( $iv >= jv ))
+
+echo 2 $jv
+echo -3 $(( ~$jv ))
+echo -2 $(( ~1 ))
+echo 1 $(( ! 0 ))
+
+echo 0 $(( jv % 2 ))
+echo 2 $(( $iv % 4 ))
+
+echo 131072 $(( iv <<= 16 ))
+echo 29 $(( iv %= 33 ))
+
+echo 33 $(( 33 & 55 ))
+echo 49 $(( 33 | 17 ))
+
+echo 1 $(( iv && $jv ))
+echo 1 $(( $iv || jv ))
+
+echo 0 $(( iv && 0 ))
+echo 0 $(( iv & 0 ))
+echo 1 $(( iv && 1 ))
+echo 1 $(( iv & 1 ))
+
+echo 1 $(( $jv || 0 ))
+echo 2 $(( jv | 0 ))
+echo 3 $(( jv | 1 ))
+echo 1 $(( $jv || 1 ))
+
+let 'iv *= jv'
+echo 58 $iv
+echo 2 $jv
+let "jv += $iv"
+echo 60 $jv
+
+echo 1 $(( jv /= iv ))
+echo 256 $(( jv <<= 8 ))
+echo 16 $(( jv >>= 4 ))
+
+echo 62 $(( iv |= 4 ))
+echo 4 $(( iv &= 4 ))
+
+echo 29 $(( iv += (jv + 9)))
+echo 5 $(( (iv + 4) % 7 ))
+
+# unary plus, minus
+echo -4 $(( +4 - 8 ))
+echo 4 $(( -4 + 8 ))
+
+# conditional expressions
+echo 1 $(( 4<5 ? 1 : 32))
+echo 32 $(( 4>5 ? 1 : 32))
+echo 32 $(( 4>(2+3) ? 1 : 32))
+echo 1 $(( 4<(2+3) ? 1 : 32))
+echo 1 $(( (2+2)<(2+3) ? 1 : 32))
+echo 32 $(( (2+2)>(2+3) ? 1 : 32))
+
+# check that the unevaluated part of the ternary operator does not do
+# evaluation or assignment
+x=i+=2
+y=j+=2
+#ash# declare -i i=1 j=1
+      i=1
+      j=1
+echo 20 $((1 ? 20 : (x+=2)))
+#ash# echo $i,$x             # ash mishandles this
+echo 30 $((0 ? (y+=2) : 30))
+#ash# echo $j,$y             # ash mishandles this
+
+x=i+=2
+y=j+=2
+#ash# declare -i i=1 j=1
+      i=1
+      j=1
+echo 20 $((1 ? 20 : (x+=2)))
+#ash# echo $i,$x             # ash mishandles this
+echo 30 $((0 ? (y+=2) : 30))
+#ash# echo $i,$y             # ash mishandles this
+
+# check precedence of assignment vs. conditional operator
+# should be an error
+#ash# declare -i x=2
+      x=2
+#ashnote# bash reports error but continues, ash aborts - using subshell to 'emulate' bash:
+(  y=$((1 ? 20 : x+=2))  )
+
+# check precedence of assignment vs. conditional operator
+#ash# declare -i x=2
+      x=2
+# ash says "line NNN: syntax error: 0 ? x+=2 : 20"
+#ash# echo 20 $((0 ? x+=2 : 20))
+
+# associativity of assignment-operator operator
+#ash# declare -i i=1 j=2 k=3
+i=1
+j=2
+k=3
+echo 6 $((i += j += k))
+echo 6,5,3 $i,$j,$k
+
+# octal, hex
+echo 263 $(( 0x100 | 007 ))
+echo 255 $(( 0xff ))
+#ash# echo 255 $(( 16#ff ))
+#ash# echo 127 $(( 16#FF/2 ))
+#ash# echo 36 $(( 8#44 ))
+
+echo 40 $(( 8 ^ 32 ))
+
+#ash# # other bases
+#ash# echo 10 $(( 16#a ))
+#ash# echo 10 $(( 32#a ))
+#ash# echo 10 $(( 56#a ))
+#ash# echo 10 $(( 64#a ))
+#ash#
+#ash# echo 10 $(( 16#A ))
+#ash# echo 10 $(( 32#A ))
+#ash# echo 36 $(( 56#A ))
+#ash# echo 36 $(( 64#A ))
+#ash#
+#ash# echo 62 $(( 64#@ ))
+#ash# echo 63 $(( 64#_ ))
+
+#ash# # weird bases (error)
+#ash# echo $(( 3425#56 ))
+
+#ash# # missing number after base
+#ash# echo 0 $(( 2# ))
+
+# these should generate errors
+(  echo $(( 7 = 43 ))      )
+#ash# echo $(( 2#44 ))
+(  echo $(( 44 / 0 ))      )
+(  let 'jv += $iv'         )
+(  echo $(( jv += \$iv ))  )
+(  let 'rv = 7 + (43 * 6'  )
+
+#ash# # more errors
+#ash# declare -i i
+#ash# i=0#4
+#ash# i=2#110#11
+
+((echo abc; echo def;); echo ghi)
+
+#ash# if (((4+4) + (4 + 7))); then
+#ash# 	echo ok
+#ash# fi
+
+#ash# (())	# make sure the null expression works OK
+
+#ash# a=(0 2 4 6)
+#ash# echo 6 $(( a[1] + a[2] ))
+#ash# echo 1 $(( (a[1] + a[2]) == a[3] ))
+#ash# (( (a[1] + a[2]) == a[3] )) ; echo 0 $?
+
+# test pushing and popping the expression stack
+unset A
+A="4 + "
+(  echo A $(( ( 4 + A ) + 4 ))  )
+A="3 + 5"
+echo 16 $(( ( 4 + A ) + 4 ))
+
+# badly-formed conditional expressions
+(  echo $(( 4 ? : $A ))  )
+(  echo $(( 1 ? 20 ))    )
+(  echo $(( 4 ? 20 : ))  )
+
+# precedence and short-circuit evaluation
+B=9
+echo 9 $B
+
+# error
+(  echo $(( 0 && B=42 )); echo 9 $B  )
+
+# error
+(  echo $(( 1 || B=88 )); echo 9 $B  )
+
+# ash mistakenly evaluates B=... below
+#ash# echo 0 $(( 0 && (B=42) ))
+echo 9 $B
+#ash# echo 0 $(( (${$} - $$) && (B=42) ))
+echo 9 $B
+#ash# echo 1 $(( 1 || (B=88) ))
+echo 9 $B
+
+
+# until command with (( )) command
+x=7
+
+echo 7 $x
+#ash# until (( x == 4 ))
+      until test "$x" = 4
+do
+	echo $x
+	x=4
+done
+
+echo 4 $x
+
+# exponentiation
+echo 32767 $(( 2**15 - 1))
+echo 32768 $(( 2**(16-1)))
+echo 131072 $(( 2**16*2 ))
+echo 2147483647 $(( 2**31-1))
+echo 1 $(( 2**0 ))
+
+# {pre,post}-{inc,dec}rement and associated errors
+
+x=4
+
+echo 4 $x
+echo 4 $(( x++ ))
+echo 5 $x
+echo 5 $(( x-- ))
+echo 4 $x
+
+echo 3 $(( --x ))
+echo 3 $x
+
+echo 4 $(( ++x ))
+echo 4 $x
+
+# bash 3.2 apparently thinks that ++7 is 7
+#ash# echo 7 $(( ++7 ))
+(  echo $(( 7-- ))    )
+
+(  echo $(( --x=7 ))  )
+(  echo $(( ++x=7 ))  )
+
+(  echo $(( x++=7 ))  )
+(  echo $(( x--=7 ))  )
+
+echo 4 $x
+
+echo 7 $(( +7 ))
+echo -7 $(( -7 ))
+
+# bash 3.2 apparently thinks that ++7 is 7
+#ash# echo $(( ++7 ))
+#ash# echo $(( --7 ))
+
+${THIS_SH} ./arith1.sub
+${THIS_SH} ./arith2.sub
+
+x=4
+y=7
+
+#ash# (( x=8 , y=12 ))
+      x=8
+      y=12
+echo $x $y
+
+#ash# # should be an error
+#ash# (( x=9 y=41 ))
+
+# These are errors
+unset b
+(  echo $((a b))  )
+#ash# ((a b))
+
+n=42
+printf "%d\n" $n
+printf "%i\n" $n
+#ash# echo $(( 8#$(printf "%o\n" $n) ))
+printf "%u\n" $n
+#ash# echo $(( 16#$(printf "%x\n" $n) ))
+#ash# echo $(( 16#$(printf "%X\n" $n) ))
+
+# causes longjmp botches through bash-2.05b
+a[b[c]d]=e
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith1.sub
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith1.sub	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith1.sub	(revision 20)
@@ -0,0 +1,40 @@
+# test of redone post-increment and post-decrement code
+(  echo $(( 4-- ))   )
+(  echo $(( 4++ ))   )
+(  echo $(( 4 -- ))  )
+(  echo $(( 4 ++ ))  )
+
+#ash# (( array[0]++ ))
+#ash# echo ${array}
+
+#ash# (( array[0] ++ ))
+#ash# echo ${array}
+
+#ash# (( a++ ))
+#ash# echo $a
+#ash# (( a ++ ))
+#ash# echo $a
+      a=2
+
+echo 6 $(( a ++ + 4 ))
+echo 3 $a
+
+echo 7 $(( a+++4 ))
+echo 4 $a
+
+echo 0 $(( a---4 ))
+echo 3 $a
+
+echo 7 $(( a -- + 4 ))
+echo 2 $a
+
+echo -2 $(( a -- - 4 ))
+echo 1 $a
+
+#ash# (( ++ + 7 ))
+
+#ash# (( ++ ))
+(  echo $(( +++7 ))  )
+# bash 3.2 apparently thinks that ++ +7 is 7
+#ash# echo $(( ++ + 7 ))
+#ash# (( -- ))
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith2.sub
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith2.sub	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-arith/arith2.sub	(revision 20)
@@ -0,0 +1,57 @@
+# bash 3.2 apparently thinks that ++7 is 7 etc
+(  echo $(( --7 ))   )
+(  echo $(( ++7 ))   )
+(  echo $(( -- 7 ))  )
+(  echo $(( ++ 7 ))  )
+
+#ash# ((++array[0] ))
+#ash# echo 1 $array
+#ash# (( ++ array[0] ))
+#ash# echo 2 $array
+
+#ash# (( ++a ))
+#ash# echo 1 $a
+#ash# (( ++ a ))
+#ash# echo 2 $a
+
+#ash# (( --a ))
+#ash# echo 1 $a
+#ash# (( -- a ))
+#ash# echo 0 $a
+      a=0
+
+echo 5 $(( 4 + ++a ))
+echo 1 $a
+
+# ash doesn't handle it right...
+#ash# echo 6 $(( 4+++a ))
+#ash# echo 2 $a
+      a=2
+
+# ash doesn't handle it right...
+#ash# echo 3 $(( 4---a ))
+#ash# echo 1 $a
+      a=1
+
+echo 4 $(( 4 - -- a ))
+echo 0 $a
+
+#ash# (( -- ))
+# bash 3.2 apparently thinks that ---7 is -7
+#ash# echo $(( ---7 ))
+(  echo $(( -- - 7 ))  )
+
+#ash# (( ++ ))
+# bash 3.2: 7
+#ash# echo 7 $(( ++7 ))
+(  echo $(( ++ + 7 ))  )
+
+# bash 3.2: -7
+#ash# echo -7 $(( ++-7 ))
+# bash 3.2: -7
+#ash# echo -7 $(( ++ - 7 ))
+
+# bash 3.2: 7
+#ash# echo 7 $(( +--7 ))
+# bash 3.2: 7
+#ash# echo 7 $(( -- + 7 ))
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-heredoc/heredoc.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-heredoc/heredoc.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-heredoc/heredoc.right	(revision 20)
@@ -0,0 +1,21 @@
+there
+one - alpha
+two - beta
+three - gamma
+hi\
+there$a
+stuff
+hi\
+there
+EO\
+F
+hi
+tab 1
+tab 2
+tab 3
+abc
+def ghi
+jkl mno
+fff is a shell function
+hi
+there
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-heredoc/heredoc.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-heredoc/heredoc.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-heredoc/heredoc.tests	(revision 20)
@@ -0,0 +1,94 @@
+# check order and content of multiple here docs
+
+cat << EOF1 << EOF2
+hi
+EOF1
+there
+EOF2
+
+while read line1; do
+	read line2 <&3
+	echo $line1 - $line2
+done <<EOF1 3<<EOF2
+one
+two
+three
+EOF1
+alpha
+beta
+gamma
+EOF2
+
+
+# check quoted here-doc is protected
+
+a=foo
+cat << 'EOF'
+hi\
+there$a
+stuff
+EOF
+
+# check that quoted here-documents don't have \newline processing done
+
+cat << 'EOF'
+hi\
+there
+EO\
+F
+EOF
+true
+
+# check that \newline is removed at start of here-doc
+cat << EO\
+F
+hi
+EOF
+
+#ash# # check that \newline removal works for here-doc delimiter
+#ash# cat << EOF
+#ash# hi
+#ash# EO\
+#ash# F
+
+# check operation of tab removal in here documents
+cat <<- EOF
+	tab 1
+	tab 2
+	tab 3
+	EOF
+
+# check appending of text to file from here document
+rm -f /tmp/bash-zzz
+cat > /tmp/bash-zzz << EOF
+abc
+EOF
+cat >> /tmp/bash-zzz << EOF
+def ghi
+jkl mno
+EOF
+cat /tmp/bash-zzz
+rm -f /tmp/bash-zzz
+
+# make sure command printing puts the here-document as the last redirection
+# on the line, and the function export code preserves syntactic correctness
+fff()
+{
+  ed /tmp/foo <<ENDOFINPUT >/dev/null
+/^name/d
+w
+q
+ENDOFINPUT
+aa=1
+}
+
+type fff
+#ash# export -f fff
+#ash# ${THIS_SH} -c 'type fff'
+
+# check that end of file delimits a here-document
+# THIS MUST BE LAST!
+
+cat << EOF
+hi
+there
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-invert/invert.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-invert/invert.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-invert/invert.right	(revision 20)
@@ -0,0 +1,10 @@
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-invert/invert.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-invert/invert.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/ash-invert/invert.tests	(revision 20)
@@ -0,0 +1,19 @@
+# tests of return value inversion
+# placeholder for future expansion
+
+# user subshells (...) did this wrong in bash versions before 2.04
+
+! ( echo hello | grep h >/dev/null 2>&1 ); echo $?
+! echo hello | grep h >/dev/null 2>&1 ; echo $?
+
+! true ; echo $?
+! false; echo $?
+
+! (false) ; echo $?
+! (true); echo $?
+
+! true | false ; echo $?
+! false | true ; echo $?
+
+! (true | false) ; echo $?
+! (false | true) ; echo $?
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/run-all
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/run-all	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/ash_test/run-all	(revision 20)
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+test -x ash || { echo "No ./ash?!"; exit; }
+test -x printenv || gcc -O2 -o printenv printenv.c || exit $?
+test -x recho    || gcc -O2 -o recho    recho.c    || exit $?
+test -x zecho    || gcc -O2 -o zecho    zecho.c    || exit $?
+
+PATH="$PWD:$PATH" # for ash and recho/zecho/printenv
+export PATH
+
+THIS_SH="$PWD/ash"
+export THIS_SH
+
+do_test()
+{
+    test -d "$1" || return 0
+    (
+    cd "$1" || { echo "cannot cd $1!"; exit 1; }
+    for x in run-*; do
+	test -f "$x" || continue
+	case "$x" in
+	    "$0"|run-minimal|run-gprof) ;;
+	    *.orig|*~) ;;
+	    #*) echo $x ; sh $x ;;
+	    *)
+	    sh "$x" >"../$1-$x.fail" 2>&1 && \
+	    { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
+	    ;;
+	esac
+    done
+    # Many bash run-XXX scripts just do this,
+    # no point in duplication it all over the place
+    for x in *.tests; do
+	test -x "$x" || continue
+	name="${x%%.tests}"
+	test -f "$name.right" || continue
+	{
+	    "$THIS_SH" "./$x" >"$name.xx" 2>&1
+	    diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
+	} && echo "$1/$x: ok" || echo "$1/$x: fail"
+    done
+    )
+}
+
+# main part of this script
+# Usage: run-all [directories]
+
+if [ $# -lt 1 ]; then
+    # All sub directories
+    modules=`ls -d ash-*`
+
+    for module in $modules; do
+	do_test $module
+    done
+else
+    while [ $# -ge 1 ]; do
+	if [ -d $1 ]; then
+	    do_test $1
+	fi
+	shift
+    done
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/quote3.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/quote3.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/quote3.right	(revision 20)
@@ -0,0 +1,3 @@
+Testing: in $empty""
+..
+Finished
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/quote3.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/quote3.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/quote3.tests	(revision 20)
@@ -0,0 +1,8 @@
+if test $# = 0; then
+    exec "$THIS_SH" quote3.tests abc "d e"
+fi
+
+echo 'Testing: in $empty""'
+empty=''
+for a in $empty""; do echo ".$a."; done
+echo Finished
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/tick.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/tick.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-bugs/tick.tests	(revision 20)
@@ -0,0 +1,4 @@
+true
+false; echo `echo $?`
+true
+{ false; echo `echo $?`; }
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/read.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/read.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/read.right	(revision 20)
@@ -0,0 +1,4 @@
+read
+cat
+echo "REPLY=$REPLY"
+REPLY=exec <read.tests
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/read.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/read.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/read.tests	(revision 20)
@@ -0,0 +1,4 @@
+exec <read.tests
+read
+cat
+echo "REPLY=$REPLY"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/shift.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/shift.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/shift.right	(revision 20)
@@ -0,0 +1,6 @@
+./shift.tests abc d e
+./shift.tests d e 123
+./shift.tests d e 123
+./shift.tests
+./shift.tests
+./shift.tests
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/shift.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/shift.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/shift.tests	(revision 20)
@@ -0,0 +1,14 @@
+if test $# = 0; then
+    exec "$THIS_SH" $0 abc "d e" 123
+fi
+echo $0 $1 $2
+shift
+echo $0 $1 $2
+shift 999
+echo $0 $1 $2
+shift 2
+echo $0 $1 $2
+shift 2
+echo $0 $1 $2
+shift
+echo $0 $1 $2
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/syntax_err.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/syntax_err.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/syntax_err.right	(revision 20)
@@ -0,0 +1,2 @@
+shown
+hush: syntax error: unterminated '
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/syntax_err.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/syntax_err.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-misc/syntax_err.tests	(revision 20)
@@ -0,0 +1,3 @@
+echo shown
+echo test `echo 'aa`
+echo not shown
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/argv0.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/argv0.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/argv0.right	(revision 20)
@@ -0,0 +1,1 @@
+OK
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/argv0.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/argv0.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/argv0.tests	(revision 20)
@@ -0,0 +1,4 @@
+if test $# = 0; then
+    exec "$THIS_SH" "$0" arg
+fi
+echo OK
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol.right	(revision 20)
@@ -0,0 +1,1 @@
+HELLO
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol.tests	(revision 20)
@@ -0,0 +1,2 @@
+# next line has no EOL!
+echo HELLO
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol2.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol2.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol2.right	(revision 20)
@@ -0,0 +1,1 @@
+1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol2.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol2.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol2.tests	(revision 20)
@@ -0,0 +1,7 @@
+# last line has no EOL!
+if true
+then
+  echo 1
+else
+  echo 2
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol3.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol3.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol3.right	(revision 20)
@@ -0,0 +1,1 @@
+hush: syntax error: unterminated "
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol3.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol3.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/noeol3.tests	(revision 20)
@@ -0,0 +1,2 @@
+# last line has no EOL!
+echo "unterminated
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/process_subst.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/process_subst.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/process_subst.right	(revision 20)
@@ -0,0 +1,3 @@
+TESTzzBEST
+TEST$(echo zz)BEST
+TEST'BEST
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/process_subst.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/process_subst.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/process_subst.tests	(revision 20)
@@ -0,0 +1,3 @@
+echo "TEST`echo zz;echo;echo`BEST"
+echo "TEST`echo '$(echo zz)'`BEST"
+echo "TEST`echo "'"`BEST"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote1.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote1.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote1.right	(revision 20)
@@ -0,0 +1,1 @@
+'1'
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote1.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote1.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote1.tests	(revision 20)
@@ -0,0 +1,2 @@
+a=1
+echo "'$a'"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote2.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote2.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote2.right	(revision 20)
@@ -0,0 +1,1 @@
+>1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote2.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote2.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote2.tests	(revision 20)
@@ -0,0 +1,2 @@
+a=1
+echo ">$a"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote4.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote4.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote4.right	(revision 20)
@@ -0,0 +1,1 @@
+a b
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote4.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote4.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/quote4.tests	(revision 20)
@@ -0,0 +1,2 @@
+a_b='a b'
+echo "$a_b"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/starquoted.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/starquoted.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/starquoted.right	(revision 20)
@@ -0,0 +1,8 @@
+.1 abc d e f.
+.1.
+.abc.
+.d e f.
+.-1 abc d e f-.
+.-1.
+.abc.
+.d e f-.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/starquoted.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/starquoted.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-parsing/starquoted.tests	(revision 20)
@@ -0,0 +1,8 @@
+if test $# = 0; then
+    exec "$THIS_SH" "$0" 1 abc 'd e f'
+fi
+
+for a in "$*"; do echo ".$a."; done
+for a in "$@"; do echo ".$a."; done
+for a in "-$*-"; do echo ".$a."; done
+for a in "-$@-"; do echo ".$a."; done
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/star.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/star.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/star.right	(revision 20)
@@ -0,0 +1,6 @@
+.1.
+.abc.
+.d.
+.e.
+.f.
+.1 abc d e f.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/star.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/star.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/star.tests	(revision 20)
@@ -0,0 +1,8 @@
+if test $# = 0; then
+    exec "$THIS_SH" star.tests 1 abc 'd e f'
+fi
+# 'd e f' should be split into 3 separate args:
+for a in $*; do echo ".$a."; done
+
+# must produce .1 abc d e f.
+for a in "$*"; do echo ".$a."; done
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var.right	(revision 20)
@@ -0,0 +1,4 @@
+http://busybox.net
+http://busybox.net_abc
+1
+1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var.tests	(revision 20)
@@ -0,0 +1,9 @@
+URL=http://busybox.net
+
+echo $URL
+echo ${URL}_abc
+
+true
+false; echo $?
+true
+{ false; echo $?; }
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_expand_in_assign.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_expand_in_assign.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_expand_in_assign.right	(revision 20)
@@ -0,0 +1,5 @@
+. .
+.abc d e.
+.abc d e.
+.abc d e.
+.abc d e.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_expand_in_assign.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_expand_in_assign.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_expand_in_assign.tests	(revision 20)
@@ -0,0 +1,15 @@
+if test $# = 0; then
+    exec "$THIS_SH" "$0" abc "d e"
+fi
+
+space=' '
+echo .$space.
+
+a=$*
+echo .$a.
+a=$@
+echo .$a.
+a="$*"
+echo .$a.
+a="$@"
+echo .$a.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_subst_in_for.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_subst_in_for.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_subst_in_for.right	(revision 20)
@@ -0,0 +1,40 @@
+Testing: in x y z
+.x.
+.y.
+.z.
+Testing: in u $empty v
+.u.
+.v.
+Testing: in u " $empty" v
+.u.
+. .
+.v.
+Testing: in u $empty $empty$a v
+.u.
+.a.
+.v.
+Testing: in $a_b
+.a.
+.b.
+Testing: in $*
+.abc.
+.d.
+.e.
+Testing: in $@
+.abc.
+.d.
+.e.
+Testing: in -$*-
+.-abc.
+.d.
+.e-.
+Testing: in -$@-
+.-abc.
+.d.
+.e-.
+Testing: in $a_b -$a_b-
+.a.
+.b.
+.-a.
+.b-.
+Finished
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_subst_in_for.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_subst_in_for.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-vars/var_subst_in_for.tests	(revision 20)
@@ -0,0 +1,40 @@
+if test $# = 0; then
+    exec "$THIS_SH" var_subst_in_for.tests abc "d e"
+fi
+
+echo 'Testing: in x y z'
+for a in x y z; do echo ".$a."; done
+
+echo 'Testing: in u $empty v'
+empty=''
+for a in u $empty v; do echo ".$a."; done
+
+echo 'Testing: in u " $empty" v'
+empty=''
+for a in u " $empty" v; do echo ".$a."; done
+
+echo 'Testing: in u $empty $empty$a v'
+a='a'
+for a in u $empty $empty$a v; do echo ".$a."; done
+
+echo 'Testing: in $a_b'
+a_b='a b'
+for a in $a_b; do echo ".$a."; done
+
+echo 'Testing: in $*'
+for a in $*; do echo ".$a."; done
+
+echo 'Testing: in $@'
+for a in $@; do echo ".$a."; done
+
+echo 'Testing: in -$*-'
+for a in -$*-; do echo ".$a."; done
+
+echo 'Testing: in -$@-'
+for a in -$@-; do echo ".$a."; done
+
+echo 'Testing: in $a_b -$a_b-'
+a_b='a b'
+for a in $a_b -$a_b-; do echo ".$a."; done
+
+echo Finished
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-z_slow/leak_var.right
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-z_slow/leak_var.right	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-z_slow/leak_var.right	(revision 20)
@@ -0,0 +1,2 @@
+Measuring memory leak...
+vsz does not grow
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-z_slow/leak_var.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-z_slow/leak_var.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/hush-z_slow/leak_var.tests	(revision 20)
@@ -0,0 +1,69 @@
+pid=$$
+
+# Warm up
+unset t
+t=111111111111111111111111111111111111111111111111111111111111111111111111
+export t
+unset t
+t=111111111111111111111111111111111111111111111111111111111111111111111111
+export t
+unset t
+t=111111111111111111111111111111111111111111111111111111111111111111111111
+export t
+unset t
+t=111111111111111111111111111111111111111111111111111111111111111111111111
+export t
+unset t
+t=111111111111111111111111111111111111111111111111111111111111111111111111
+export t
+i=1
+if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi
+beg=`ps -o pid,vsz | grep "^ *$pid "`
+
+echo "Measuring memory leak..."
+beg=`ps -o pid,vsz | grep "^ *$pid "`
+i=1
+while test $i != X; do
+    unset t
+    t=111111111111111111111111111111111111111111111111111111111111111111111111
+    export t
+    unset t
+    t=111111111111111111111111111111111111111111111111111111111111111111111111
+    export t
+    unset t
+    t=111111111111111111111111111111111111111111111111111111111111111111111111
+    export t
+    unset t
+    t=111111111111111111111111111111111111111111111111111111111111111111111111
+    export t
+    unset t
+    t=111111111111111111111111111111111111111111111111111111111111111111111111
+    export t
+    i=1$i
+    if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi
+    if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi
+    if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi
+    if test $i = 1111111111111111111111111111111111111111111114; then i=5; fi
+    if test $i = 1111111111111111111111111111111111111111111115; then i=6; fi
+    if test $i = 1111111111111111111111111111111111111111111116; then i=7; fi
+    if test $i = 1111111111111111111111111111111111111111111117; then i=8; fi
+    if test $i = 1111111111111111111111111111111111111111111118; then i=9; fi
+    if test $i = 1111111111111111111111111111111111111111111119; then i=a; fi
+    if test $i = 111111111111111111111111111111111111111111111a; then i=b; fi
+    if test $i = 111111111111111111111111111111111111111111111b; then i=c; fi
+    if test $i = 111111111111111111111111111111111111111111111c; then i=d; fi
+    if test $i = 111111111111111111111111111111111111111111111d; then i=e; fi
+    if test $i = 111111111111111111111111111111111111111111111e; then i=f; fi
+    if test $i = 111111111111111111111111111111111111111111111f; then i=g; fi
+    if test $i = 111111111111111111111111111111111111111111111g; then i=h; fi
+    if test $i = 111111111111111111111111111111111111111111111h; then i=i; fi
+    if test $i = 111111111111111111111111111111111111111111111i; then i=j; fi
+    if test $i = 111111111111111111111111111111111111111111111j; then i=X; fi
+done
+end=`ps -o pid,vsz | grep "^ *$pid "`
+
+if test "$beg" != "$end"; then
+    echo "vsz grows: $beg -> $end"
+else
+    echo "vsz does not grow"
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/run-all
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/run-all	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/shell/hush_test/run-all	(revision 20)
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+test -x hush || { echo "No ./hush?!"; exit; }
+
+PATH="$PWD:$PATH" # for hush and recho/zecho/printenv
+export PATH
+
+THIS_SH="$PWD/hush"
+export THIS_SH
+
+do_test()
+{
+    test -d "$1" || return 0
+    (
+    cd "$1" || { echo "cannot cd $1!"; exit 1; }
+    for x in run-*; do
+	test -f "$x" || continue
+	case "$x" in
+	    "$0"|run-minimal|run-gprof) ;;
+	    *.orig|*~) ;;
+	    #*) echo $x ; sh $x ;;
+	    *)
+	    sh "$x" >"../$1-$x.fail" 2>&1 && \
+	    { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
+	    ;;
+	esac
+    done
+    # Many bash run-XXX scripts just do this,
+    # no point in duplication it all over the place
+    for x in *.tests; do
+	test -x "$x" || continue
+	name="${x%%.tests}"
+	test -f "$name.right" || continue
+	{
+	    "$THIS_SH" "./$x" >"$name.xx" 2>&1
+	    diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
+	} && echo "$1/$x: ok" || echo "$1/$x: fail"
+    done
+    )
+}
+
+# Main part of this script
+# Usage: run-all [directories]
+
+if [ $# -lt 1 ]; then
+    # All sub directories
+    modules=`ls -d hush-*`
+
+    for module in $modules; do
+	do_test $module
+    done
+else
+    while [ $# -ge 1 ]; do
+	if [ -d $1 ]; then
+	    do_test $1
+	fi
+	shift
+    done
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/sysklogd/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/sysklogd/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/sysklogd/Config.in	(revision 20)
@@ -0,0 +1,110 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "System Logging Utilities"
+
+config SYSLOGD
+	bool "syslogd"
+	default n
+	help
+	  The syslogd utility is used to record logs of all the
+	  significant events that occur on a system.  Every
+	  message that is logged records the date and time of the
+	  event, and will generally also record the name of the
+	  application that generated the message.  When used in
+	  conjunction with klogd, messages from the Linux kernel
+	  can also be recorded.  This is terribly useful,
+	  especially for finding what happened when something goes
+	  wrong.  And something almost always will go wrong if
+	  you wait long enough....
+
+config FEATURE_ROTATE_LOGFILE
+	bool "Rotate message files"
+	default n
+	depends on SYSLOGD
+	help
+	  This enables syslogd to rotate the message files
+	  on his own. No need to use an external rotatescript.
+
+config FEATURE_REMOTE_LOG
+	bool "Remote Log support"
+	default n
+	depends on SYSLOGD
+	help
+	  When you enable this feature, the syslogd utility can
+	  be used to send system log messages to another system
+	  connected via a network.  This allows the remote
+	  machine to log all the system messages, which can be
+	  terribly useful for reducing the number of serial
+	  cables you use.  It can also be a very good security
+	  measure to prevent system logs from being tampered with
+	  by an intruder.
+
+config FEATURE_IPC_SYSLOG
+	bool "Circular Buffer support"
+	default n
+	depends on SYSLOGD
+	help
+	  When you enable this feature, the syslogd utility will
+	  use a circular buffer to record system log messages.
+	  When the buffer is filled it will continue to overwrite
+	  the oldest messages.  This can be very useful for
+	  systems with little or no permanent storage, since
+	  otherwise system logs can eventually fill up your
+	  entire filesystem, which may cause your system to
+	  break badly.
+
+config FEATURE_IPC_SYSLOG_BUFFER_SIZE
+	int "    Circular buffer size in Kbytes (minimum 4KB)"
+	default 16
+	range 4 2147483647
+	depends on FEATURE_IPC_SYSLOG
+	help
+	  This option sets the size of the circular buffer
+	  used to record system log messages.
+
+config LOGREAD
+	bool "logread"
+	default y
+	depends on FEATURE_IPC_SYSLOG
+	help
+	  If you enabled Circular Buffer support, you almost
+	  certainly want to enable this feature as well.  This
+	  utility will allow you to read the messages that are
+	  stored in the syslogd circular buffer.
+
+config FEATURE_LOGREAD_REDUCED_LOCKING
+	bool "logread double buffering"
+	default n
+	depends on LOGREAD
+	help
+	  'logread' ouput to slow serial terminals can have
+	  side effects on syslog because of the semaphore.
+	  This option make logread to double buffer copy
+	  from circular buffer, minimizing semaphore
+	  contention at some minor memory expense.
+
+config KLOGD
+	bool "klogd"
+	default n
+	help
+	  klogd is a utility which intercepts and logs all
+	  messages from the Linux kernel and sends the messages
+	  out to the 'syslogd' utility so they can be logged.  If
+	  you wish to record the messages produced by the kernel,
+	  you should enable this option.
+
+config LOGGER
+	bool "logger"
+	default n
+	select FEATURE_SYSLOG
+	help
+	    The logger utility allows you to send arbitrary text
+	    messages to the system log (i.e. the 'syslogd' utility) so
+	    they can be logged.  This is generally used to help locate
+	    problems that occur within programs and scripts.
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/sysklogd/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/sysklogd/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/sysklogd/Kbuild	(revision 20)
@@ -0,0 +1,11 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_KLOGD)		+= klogd.o
+lib-$(CONFIG_LOGGER)		+= logger.o
+lib-$(CONFIG_LOGREAD)		+= logread.o
+lib-$(CONFIG_SYSLOGD)		+= syslogd.o
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/README
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/README	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/README	(revision 20)
@@ -0,0 +1,34 @@
+Update: doesn't work as described. Try "make check" from parent dir...
+* * *
+
+To run the test suite, change to this directory and run "./runtest".  It will
+run all of the test cases, and list those with unexpected outcomes.  Adding the
+-v option will cause it to show expected outcomes as well.  To only run the test
+cases for particular applets, specify them as parameters to runtest.
+
+The test cases for an applet reside in the subdirectory of the applet name.  The
+name of the test case should be the assertion that is tested.  The test case
+should be a shell fragment that returns successfully if the test case passes,
+and unsuccessfully otherwise.
+
+If the test case relies on a certain feature, it should include the string
+"FEATURE: " followed by the name of the feature in a comment.  If it is always
+expected to fail, it should include the string "XFAIL" in a comment.
+
+For the entire testsuite, the copyright is as follows:
+
+Copyright (C) 2001, 2002  Matt Kraai
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/TODO
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/TODO	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/TODO	(revision 20)
@@ -0,0 +1,26 @@
+This testsuite is quite obviously a work in progress.  As such,
+there are a number of good extensions.  If you are looking for
+something to do, feel free to tackle one or more of the following:
+
+Moving to the new format.
+	The old way was "lots of little tests files in a directory", which
+	doesn't interact well with source control systems.  The new test
+	format is command.tests files that use testing.sh.
+
+Every busybox applet needs a corresponding applet.tests.
+
+Full SUSv3 test suite.
+	Let's make the Linux Test Project jealous, shall we?  Don't just
+	audit programs for standards compliance, _prove_ it with a regression
+	test harness.
+
+	http://www.opengroup.org/onlinepubs/009695399/utilities/
+
+Some tests need root access.
+	It's hard to test things like mount or init as a normal user.
+	Possibly User Mode Linux could be used for this, or perhaps
+	Erik's buildroot.
+
+libbb unit testing
+	Being able to test the functions of libbb individually may
+	help to prevent regressions.
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/all_sourcecode.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/all_sourcecode.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/all_sourcecode.tests	(revision 20)
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Tests for the sourcecode base itself.
+# Copyright 2006 by Mike Frysinger <vapier@gentoo.org>
+# Licensed under GPL v2, see file LICENSE for details.
+
+[ -n "$srcdir" ] || srcdir=$(pwd)
+. testing.sh
+
+
+#
+# if we don't have the sourcecode available, let's just bail
+#
+[ -s "$srcdir/../Makefile" ] || exit 0
+[ -s "$srcdir/../include/applets.h" ] || exit 0
+
+
+#
+# verify the applet order is correct in applets.h, otherwise
+# applets won't be called properly.
+#
+sed -n -e '/^USE_[A-Z]*(APPLET/{s:,.*::;s:.*(::;s:"::g;p}' \
+	$srcdir/../include/applets.h > applet.order.current
+LC_ALL=C sort applet.order.current > applet.order.correct
+testing "Applet order" "diff -u applet.order.current applet.order.correct" "" "" ""
+rm -f applet.order.current applet.order.correct
+
+
+#
+# check for misc common typos
+#
+find $srcdir/../ \
+	'(' -type d -a '(' -name .svn -o -name testsuite ')' -prune ')' \
+	-o '(' -type f -a -print0 ')' | xargs -0 \
+	grep -I \
+		-e '\<compatability\>' \
+		-e '\<compatable\>' \
+		-e '\<fordeground\>' \
+		-e '\<depency\>' -e '\<dependancy\>' -e '\<dependancies\>' \
+		-e '\<defalt\>' \
+		-e '\<remaing\>' \
+		-e '\<queueing\>' \
+		-e '\<detatch\>' \
+		-e '\<sempahore\>' \
+		-e '\<reprenstative\>' \
+		-e '\<overriden\>' \
+		-e '\<readed\>' \
+		-e '\<formated\>' \
+		-e '\<algorithic\>' \
+		-e '\<deamon\>' \
+		-e '\<derefernce\>' \
+		-e '\<acomadate\>' \
+		| sed -e "s:^$srcdir/\.\./::g" > src.typos
+testing "Common typos" "cat src.typos" "" "" ""
+rm -f src.typos
+
+
+#
+# don't allow obsolete functions
+#
+find $srcdir/.. '(' -name '*.c' -o -name '*.h' ')' -print0 | xargs -0 \
+	grep -E -e '\<(bcmp|bcopy|bzero|getwd|index|mktemp|rindex|utimes)\>[[:space:]]*\(' \
+	| sed -e "s:^$srcdir/\.\./::g" > src.obsolete.funcs
+testing "Obsolete function usage" "cat src.obsolete.funcs" "" "" ""
+rm -f src.obsolete.funcs
+
+
+#
+# don't allow obsolete headers
+#
+find $srcdir/.. '(' -name '*.c' -o -name '*.h' ')' -print0 | xargs -0 \
+	grep -E -e '\<(malloc|memory|sys/(errno|fcntl|signal|stropts|termios|unistd))\.h\>' \
+	| sed -e "s:^$srcdir/\.\./::g" > src.obsolete.headers
+testing "Obsolete headers" "cat src.obsolete.headers" "" "" ""
+rm -f src.obsolete.headers
+
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/awk.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/awk.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/awk.tests	(revision 20)
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# awk tests.
+# Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com>
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# testing "description" "arguments" "result" "infile" "stdin"
+
+testing "awk -F case 0" "awk -F '[#]' '{ print NF }'" ""    "" ""
+testing "awk -F case 1" "awk -F '[#]' '{ print NF }'" "0\n" "" "\n"
+testing "awk -F case 2" "awk -F '[#]' '{ print NF }'" "2\n" "" "#\n"
+testing "awk -F case 3" "awk -F '[#]' '{ print NF }'" "3\n" "" "#abc#\n"
+testing "awk -F case 4" "awk -F '[#]' '{ print NF }'" "3\n" "" "#abc#zz\n"
+testing "awk -F case 5" "awk -F '[#]' '{ print NF }'" "4\n" "" "#abc##zz\n"
+testing "awk -F case 6" "awk -F '[#]' '{ print NF }'" "4\n" "" "z#abc##zz\n"
+testing "awk -F case 7" "awk -F '[#]' '{ print NF }'" "5\n" "" "z##abc##zz\n"
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/basename/basename-does-not-remove-identical-extension
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/basename/basename-does-not-remove-identical-extension	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/basename/basename-does-not-remove-identical-extension	(revision 20)
@@ -0,0 +1,1 @@
+test xfoo = x`busybox basename foo foo`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/basename/basename-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/basename/basename-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/basename/basename-works	(revision 20)
@@ -0,0 +1,2 @@
+test x$(basename $(pwd)) = x$(busybox basename $(pwd))
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2.tests	(revision 20)
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+if test "${0##*/}" = "gunzip.tests"; then
+    unpack=gunzip
+    ext=gz
+elif test "${0##*/}" = "bunzip2.tests"; then
+    unpack=bunzip2
+    ext=bz2
+else
+    echo "WTF? argv0='$0'"
+    exit 1
+fi
+
+bb="busybox "
+
+unset LC_ALL
+unset LC_MESSAGES
+unset LANG
+unset LANGUAGE
+
+hello_gz() {
+    # Gzipped "HELLO\n"
+    #_________________________ vvv vvv vvv vvv - mtime
+    echo -ne "\x1f\x8b\x08\x00\x85\x1d\xef\x45\x02\x03\xf3\x70\xf5\xf1\xf1\xe7"
+    echo -ne "\x02\x00\x6e\xd7\xac\xfd\x06\x00\x00\x00"
+}
+
+hello_bz2() {
+    # Bzipped "HELLO\n"
+    echo -ne "\x42\x5a\x68\x39\x31\x41\x59\x26\x53\x59\x5b\xb8\xe8\xa3\x00\x00"
+    echo -ne "\x01\x44\x00\x00\x10\x02\x44\xa0\x00\x30\xcd\x00\xc3\x46\x29\x97"
+    echo -ne "\x17\x72\x45\x38\x50\x90\x5b\xb8\xe8\xa3"
+}
+
+prep() {
+    rm -f t*
+    hello_$ext >t1.$ext
+    hello_$ext >t2.$ext
+}
+
+check() {
+    eval $2 >t_actual 2>&1
+    if echo -ne "$expected" | cmp - t_actual; then
+	echo "$1: PASS"
+    else
+	echo "$1: FAIL"
+    fi
+}
+
+mkdir testdir 2>/dev/null
+(
+cd testdir || { echo "cannot cd testdir!"; exit 1; }
+
+expected="$unpack: z: No such file or directory
+1
+HELLO
+"
+prep; check "$unpack: doesnt exist" "${bb}$unpack z t1.$ext; echo \$?; cat t1"
+
+
+expected="$unpack: t.zz: unknown suffix - ignored
+1
+HELLO
+"
+prep; >t.zz; check "$unpack: unknown suffix" "${bb}$unpack t.zz t1.$ext; echo \$?; cat t1"
+
+
+# In this case file "t1" exists, and we skip t1.gz and unpack t2.gz
+expected="$unpack: can't open 't1': File exists
+1
+HELLO
+"
+prep; >t1; check "$unpack: already exists" "${bb}$unpack t1.$ext t2.$ext; echo \$?; cat t1 t2"
+
+
+# From old testsuite
+expected="HELLO\n0\n"
+prep; check "$unpack: stream unpack" "cat t1.$ext | ${bb}$unpack; echo $?"
+
+expected="ok\n"
+prep; check "$unpack: delete src" "${bb}$unpack t2.$ext; test ! -f t2.$ext && echo ok"
+
+)
+rm -rf testdir
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bunzip2-reads-from-standard-input
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bunzip2-reads-from-standard-input	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bunzip2-reads-from-standard-input	(revision 20)
@@ -0,0 +1,2 @@
+echo foo | bzip2 | busybox bunzip2 > output
+echo foo | cmp - output
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bunzip2-removes-compressed-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bunzip2-removes-compressed-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bunzip2-removes-compressed-file	(revision 20)
@@ -0,0 +1,3 @@
+echo foo | bzip2 >foo.bz2
+busybox bunzip2 foo.bz2
+test ! -f foo.bz2
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bzcat-does-not-remove-compressed-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bzcat-does-not-remove-compressed-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bunzip2/bzcat-does-not-remove-compressed-file	(revision 20)
@@ -0,0 +1,3 @@
+echo foo | bzip2 >foo.bz2
+busybox bzcat foo.bz2
+test -f foo.bz2
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/busybox.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/busybox.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/busybox.tests	(revision 20)
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Tests for busybox applet itself.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+HELPDUMP=`busybox`
+
+# We need to test under calling the binary under other names.
+
+
+testing "busybox --help busybox" "busybox --help busybox" "$HELPDUMP\n\n" "" ""
+
+ln -s `which busybox` busybox-suffix
+for i in busybox ./busybox-suffix
+do
+	# The gratuitous "\n"s are due to a shell idiosyncrasy:
+	# environment variables seem to strip trailing whitespace.
+
+	testing "" "$i" "$HELPDUMP\n\n" "" ""
+
+	testing "$i unknown" "$i unknown 2>&1" \
+		"unknown: applet not found\n" "" ""
+
+	testing "$i --help" "$i --help 2>&1" "$HELPDUMP\n\n" "" ""
+
+	optional CAT
+	testing "" "$i cat" "moo" "" "moo"
+	testing "$i --help cat" "$i --help cat 2>&1 | grep prints" \
+		"Concatenates FILE(s) and prints them to stdout.\n" "" ""
+	optional ""
+
+	testing "$i --help unknown" "$i --help unknown 2>&1" \
+		"unknown: applet not found\n" "" ""
+done
+rm busybox-suffix
+
+ln -s `which busybox` unknown
+
+testing "busybox as unknown name" "./unknown 2>&1" \
+	"unknown: applet not found\n" "" ""
+rm unknown
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bzcat.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bzcat.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/bzcat.tests	(revision 20)
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+ext=bz2
+
+bb="busybox "
+
+unset LC_ALL
+unset LC_MESSAGES
+unset LANG
+unset LANGUAGE
+
+hello_gz() {
+    # Gzipped "HELLO\n"
+    #_________________________ vvv vvv vvv vvv - mtime
+    echo -ne "\x1f\x8b\x08\x00\x85\x1d\xef\x45\x02\x03\xf3\x70\xf5\xf1\xf1\xe7"
+    echo -ne "\x02\x00\x6e\xd7\xac\xfd\x06\x00\x00\x00"
+}
+
+hello_bz2() {
+    # Bzipped "HELLO\n"
+    echo -ne "\x42\x5a\x68\x39\x31\x41\x59\x26\x53\x59\x5b\xb8\xe8\xa3\x00\x00"
+    echo -ne "\x01\x44\x00\x00\x10\x02\x44\xa0\x00\x30\xcd\x00\xc3\x46\x29\x97"
+    echo -ne "\x17\x72\x45\x38\x50\x90\x5b\xb8\xe8\xa3"
+}
+
+prep() {
+    rm -f t*
+    hello_$ext >t1.$ext
+    hello_$ext >t2.$ext
+}
+
+check() {
+    eval $2 >t_actual 2>&1
+    if echo -ne "$expected" | cmp - t_actual; then
+	echo "$1: PASS"
+    else
+	echo "$1: FAIL"
+    fi
+}
+
+mkdir testdir 2>/dev/null
+(
+cd testdir || { echo "cannot cd testdir!"; exit 1; }
+
+expected="HELLO\nok\n"
+prep; check "bzcat: dont delete src" "${bb}bzcat t2.bz2; test -f t2.bz2 && echo ok"
+
+)
+rm -rf testdir
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cat/cat-prints-a-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cat/cat-prints-a-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cat/cat-prints-a-file	(revision 20)
@@ -0,0 +1,3 @@
+echo I WANT > foo
+busybox cat foo >bar
+cmp foo bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cat/cat-prints-a-file-and-standard-input
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cat/cat-prints-a-file-and-standard-input	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cat/cat-prints-a-file-and-standard-input	(revision 20)
@@ -0,0 +1,7 @@
+echo I WANT > foo
+echo SOMETHING | busybox cat foo - >bar
+cat >baz <<EOF
+I WANT
+SOMETHING
+EOF
+cmp bar baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cmp/cmp-detects-difference
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cmp/cmp-detects-difference	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cmp/cmp-detects-difference	(revision 20)
@@ -0,0 +1,9 @@
+echo foo >foo
+echo bar >bar
+set +e
+busybox cmp -s foo bar
+if [ $? != 0 ] ; then
+	exit 0;
+fi
+
+exit 1;
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-a-files-to-dir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-a-files-to-dir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-a-files-to-dir	(revision 20)
@@ -0,0 +1,14 @@
+echo file number one > file1
+echo file number two > file2
+ln -s file2 link1
+mkdir dir1
+touch --date='Sat Jan 29 21:24:08 PST 2000' dir1/file3
+mkdir there
+busybox cp -a file1 file2 link1 dir1 there
+test -f there/file1
+test -f there/file2
+test ! -s there/dir1/file3
+test -L there/link1
+test xfile2 = x`readlink there/link1`
+test ! dir1/file3 -ot there/dir1/file3
+test ! dir1/file3 -nt there/dir1/file3
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-a-preserves-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-a-preserves-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-a-preserves-links	(revision 20)
@@ -0,0 +1,5 @@
+touch foo
+ln -s foo bar
+busybox cp -a bar baz
+test -L baz
+test xfoo = x`readlink baz`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-empty-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-empty-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-empty-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+busybox cp foo bar
+cmp foo bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-large-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-large-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-large-file	(revision 20)
@@ -0,0 +1,3 @@
+dd if=/dev/zero of=foo seek=10k count=1 2>/dev/null
+busybox cp foo bar
+cmp foo bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-small-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-small-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-copies-small-file	(revision 20)
@@ -0,0 +1,3 @@
+echo I WANT > foo
+busybox cp foo bar
+cmp foo bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-d-files-to-dir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-d-files-to-dir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-d-files-to-dir	(revision 20)
@@ -0,0 +1,11 @@
+echo file number one > file1
+echo file number two > file2
+touch file3
+ln -s file2 link1
+mkdir there
+busybox cp -d file1 file2 file3 link1 there
+test -f there/file1
+test -f there/file2
+test ! -s there/file3
+test -L there/link1
+test xfile2 = x`readlink there/link1`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-dir-create-dir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-dir-create-dir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-dir-create-dir	(revision 20)
@@ -0,0 +1,4 @@
+mkdir bar
+touch bar/baz
+busybox cp -R bar foo
+test -f foo/baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-dir-existing-dir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-dir-existing-dir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-dir-existing-dir	(revision 20)
@@ -0,0 +1,5 @@
+mkdir bar
+touch bar/baz
+mkdir foo
+busybox cp -R bar foo
+test -f foo/bar/baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-does-not-copy-unreadable-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-does-not-copy-unreadable-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-does-not-copy-unreadable-file	(revision 20)
@@ -0,0 +1,6 @@
+touch foo
+chmod a-r foo
+set +e
+busybox cp foo bar
+set -e
+test ! -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-files-to-dir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-files-to-dir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-files-to-dir	(revision 20)
@@ -0,0 +1,11 @@
+echo file number one > file1
+echo file number two > file2
+touch file3
+ln -s file2 link1
+mkdir there
+busybox cp file1 file2 file3 link1 there
+test -f there/file1
+test -f there/file2
+test ! -s there/file3
+test -f there/link1
+cmp there/file2 there/link1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-follows-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-follows-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-follows-links	(revision 20)
@@ -0,0 +1,4 @@
+touch foo
+ln -s foo bar
+busybox cp bar baz
+test -f baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-hard-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-hard-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-hard-links	(revision 20)
@@ -0,0 +1,6 @@
+# FEATURE: CONFIG_FEATURE_PRESERVE_HARDLINKS
+touch foo
+ln foo bar
+mkdir baz
+busybox cp -d foo bar baz
+test baz/foo -ef baz/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-links	(revision 20)
@@ -0,0 +1,5 @@
+touch foo
+ln -s foo bar
+busybox cp -d bar baz
+test -L baz
+test xfoo = x`readlink baz`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-source-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-source-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cp/cp-preserves-source-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+busybox cp foo bar
+test -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-character
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-character	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-character	(revision 20)
@@ -0,0 +1,1 @@
+test $(echo abcd | busybox cut -c 3) = c
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-closed-range
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-closed-range	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-closed-range	(revision 20)
@@ -0,0 +1,1 @@
+test $(echo abcd | busybox cut -c 1-2) = ab
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-field
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-field	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-a-field	(revision 20)
@@ -0,0 +1,1 @@
+test $(echo -e "f1\tf2\tf3" | busybox cut -f 2) = f2
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-an-open-range
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-an-open-range	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-an-open-range	(revision 20)
@@ -0,0 +1,1 @@
+test $(echo abcd | busybox cut -c -3) = abc
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-an-unclosed-range
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-an-unclosed-range	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/cut/cut-cuts-an-unclosed-range	(revision 20)
@@ -0,0 +1,1 @@
+test $(echo abcd | busybox cut -c 3-) = cd
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-R-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-R-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-R-works	(revision 20)
@@ -0,0 +1,2 @@
+test x"`date -R`" = x"`busybox date -R`"
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-format-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-format-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-format-works	(revision 20)
@@ -0,0 +1,1 @@
+test x"`date +%d/%m/%y`" = x"`busybox date +%d/%m/%y`"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-u-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-u-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-u-works	(revision 20)
@@ -0,0 +1,2 @@
+test x"`date -u`" = x"`busybox date -u`"
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/date/date-works	(revision 20)
@@ -0,0 +1,2 @@
+test x"`date`" = x"`busybox date`"
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-accepts-if
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-accepts-if	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-accepts-if	(revision 20)
@@ -0,0 +1,2 @@
+echo I WANT >foo
+test "$(busybox dd if=foo 2>/dev/null)" = "I WANT"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-accepts-of
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-accepts-of	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-accepts-of	(revision 20)
@@ -0,0 +1,2 @@
+echo I WANT | busybox dd of=foo 2>/dev/null
+echo I WANT | cmp foo -
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-copies-from-standard-input-to-standard-output
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-copies-from-standard-input-to-standard-output	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-copies-from-standard-input-to-standard-output	(revision 20)
@@ -0,0 +1,1 @@
+test "$(echo I WANT | busybox dd 2>/dev/null)" = "I WANT"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-prints-count-to-standard-error
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-prints-count-to-standard-error	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dd/dd-prints-count-to-standard-error	(revision 20)
@@ -0,0 +1,2 @@
+echo I WANT | busybox dd of=foo >/dev/null 2>bar
+grep -q records bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-absolute-path
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-absolute-path	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-absolute-path	(revision 20)
@@ -0,0 +1,1 @@
+test $(busybox dirname /foo/bar/baz) = /foo/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-empty-path
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-empty-path	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-empty-path	(revision 20)
@@ -0,0 +1,1 @@
+test $(busybox dirname '') = .
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-multiple-slashes
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-multiple-slashes	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-multiple-slashes	(revision 20)
@@ -0,0 +1,1 @@
+test $(busybox dirname foo/bar///baz) = foo/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-relative-path
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-relative-path	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-relative-path	(revision 20)
@@ -0,0 +1,1 @@
+test $(busybox dirname foo/bar/baz) = foo/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-root
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-root	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-root	(revision 20)
@@ -0,0 +1,1 @@
+test $(busybox dirname /) = /
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-single-component
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-single-component	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-handles-single-component	(revision 20)
@@ -0,0 +1,1 @@
+test $(busybox dirname foo) = .
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/dirname/dirname-works	(revision 20)
@@ -0,0 +1,2 @@
+test x$(dirname $(pwd)) = x$(busybox dirname $(pwd))
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-h-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-h-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-h-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+du -h "$d" > logfile.gnu
+busybox du -h "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-k-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-k-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-k-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+du -k "$d" > logfile.gnu
+busybox du -k "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-l-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-l-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-l-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+du -l "$d" > logfile.gnu
+busybox du -l "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-m-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-m-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-m-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+du -m "$d" > logfile.gnu
+busybox du -m "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-s-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-s-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-s-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+du -s "$d" > logfile.gnu
+busybox du -s "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/du/du-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+du "$d" > logfile.gnu
+busybox du "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-does-not-print-newline
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-does-not-print-newline	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-does-not-print-newline	(revision 20)
@@ -0,0 +1,1 @@
+test `busybox echo -n word | wc -c` -eq 4
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-argument
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-argument	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-argument	(revision 20)
@@ -0,0 +1,1 @@
+test xfubar = x`busybox echo fubar`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-arguments
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-arguments	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-arguments	(revision 20)
@@ -0,0 +1,1 @@
+test "`busybox echo foo bar`" = "foo bar"
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-newline
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-newline	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/echo/echo-prints-newline	(revision 20)
@@ -0,0 +1,1 @@
+test `busybox echo word | wc -c` -eq 5
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/expand/expand-works-like-GNU
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/expand/expand-works-like-GNU	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/expand/expand-works-like-GNU	(revision 20)
@@ -0,0 +1,18 @@
+rm -f foo bar
+echo -e "\ty" | expand -t 3 ../../busybox > foo
+echo -e "\ty" | busybox unexpand -t 3 ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
+rm -f foo bar
+echo -e "\ty\tx" | expand -it 3 ../../busybox > foo
+echo -e "\ty\tx" | busybox unexpand -it 3 ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/expr/expr-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/expr/expr-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/expr/expr-works	(revision 20)
@@ -0,0 +1,59 @@
+# busybox expr
+busybox expr 1 \| 1
+busybox expr 1 \| 0
+busybox expr 0 \| 1
+busybox expr 1 \& 1
+busybox expr 0 \< 1
+busybox expr 1 \> 0
+busybox expr 0 \<= 1
+busybox expr 1 \<= 1
+busybox expr 1 \>= 0
+busybox expr 1 \>= 1
+busybox expr 1 + 2
+busybox expr 2 - 1
+busybox expr 2 \* 3
+busybox expr 12 / 2
+busybox expr 12 % 5
+
+
+set +e
+busybox expr 0 \| 0
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 1 \& 0
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 0 \& 1
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 0 \& 0
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 1 \< 0
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 0 \> 1
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 1 \<= 0
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
+busybox expr 0 \>= 1
+if [ $? != 1 ] ; then
+	exit 1;
+fi;
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/false/false-is-silent
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/false/false-is-silent	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/false/false-is-silent	(revision 20)
@@ -0,0 +1,1 @@
+busybox false 2>&1 | cmp - /dev/null
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/false/false-returns-failure
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/false/false-returns-failure	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/false/false-returns-failure	(revision 20)
@@ -0,0 +1,1 @@
+! busybox false
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/find/find-supports-minus-xdev
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/find/find-supports-minus-xdev	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/find/find-supports-minus-xdev	(revision 20)
@@ -0,0 +1,1 @@
+busybox find . -xdev >/dev/null 2>&1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/grep.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/grep.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/grep.tests	(revision 20)
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+# grep tests.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+# AUDIT:
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+#   file input will be file called "input"
+#   test can create a file "actual" instead of writing to stdout
+
+# Test exit status
+
+testing "grep (exit with error)" "grep nonexistent 2> /dev/null ; echo \$?" \
+	"1\n" "" ""
+testing "grep (exit success)" "grep grep $0 > /dev/null 2>&1 ; echo \$?" "0\n" \
+	"" ""
+# Test various data sources and destinations
+
+testing "grep (default to stdin)" "grep two" "two\n" "" \
+	"one\ntwo\nthree\nthree\nthree\n"
+testing "grep - (specify stdin)" "grep two -" "two\n" "" \
+	"one\ntwo\nthree\nthree\nthree\n"
+testing "grep input (specify file)" "grep two input" "two\n" \
+	"one\ntwo\nthree\nthree\nthree\n" ""
+
+testing "grep (no newline at EOL)" "grep bug" "bug" "bug" ""
+
+# Note that this assumes actual is empty.
+testing "grep input actual (two files)" "grep two input actual 2> /dev/null" \
+	"input:two\n" "one\ntwo\nthree\nthree\nthree\n" ""
+
+testing "grep - infile (specify stdin and file)" "grep two - input" \
+	"(standard input):two\ninput:two\n" "one\ntwo\nthree\n" \
+	"one\ntwo\ntoo\nthree\nthree\n"
+
+# Check if we see the correct return value if both stdin and non-existing file
+# are given.
+testing "grep - nofile (specify stdin and nonexisting file)" \
+	"grep two - nonexistent 2> /dev/null ; echo \$?" \
+	"(standard input):two\n(standard input):two\n2\n" \
+	"" "one\ntwo\ntwo\nthree\nthree\nthree\n"
+testing "grep -q - nofile (specify stdin and nonexisting file, no match)" \
+	"grep -q nomatch - nonexistent 2> /dev/null ; echo \$?" \
+	"2\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"
+# SUSv3: If the -q option is specified, the exit status shall be zero
+#        if an input line is selected, even if an error was detected.
+testing "grep -q - nofile (specify stdin and nonexisting file, match)" \
+	"grep -q two - nonexistent ; echo \$?" \
+	"0\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"
+
+# Test various command line options
+# -s no error messages
+testing "grep -s nofile (nonexisting file, no match)" \
+	"grep -s nomatch nonexistent ; echo \$?" "2\n" "" ""
+testing "grep -s nofile - (stdin and nonexisting file, match)" \
+	"grep -s domatch nonexistent - ; echo \$?" \
+	"(standard input):domatch\n2\n" "" "nomatch\ndomatch\nend\n"
+
+# This doesn't match GNU behaviour (Binary file input matches)
+# acts like GNU grep -a
+testing "grep handles binary files" "grep foo input" "foo\n" "\0foo\n\n" ""
+# This doesn't match GNU behaviour (Binary file (standard input) matches)
+# acts like GNU grep -a
+testing "grep handles binary stdin" "grep foo" "foo\n" "" "\0foo\n\n"
+
+testing "grep matches NUL" "grep . input > /dev/null 2>&1 ; echo \$?" \
+	"0\n" "\0\n" ""
+
+# -e regex
+testing "grep handles multiple regexps" "grep -e one -e two input ; echo \$?" \
+	"one\ntwo\n0\n" "one\ntwo\n" ""
+
+optional FEATURE_GREP_EGREP_ALIAS
+testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \
+	"b\ar\nfoo\nbaz"
+testing "grep is also egrep" "egrep foo" "foo\n" "" "foo\nbar\n"
+testing "egrep is not case insensitive" \
+	"egrep foo ; [ \$? -ne 0 ] && echo yes" "yes\n" "" "FOO\n"
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gunzip.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gunzip.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gunzip.tests	(revision 20)
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+. bunzip2.tests
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gunzip/gunzip-reads-from-standard-input
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gunzip/gunzip-reads-from-standard-input	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gunzip/gunzip-reads-from-standard-input	(revision 20)
@@ -0,0 +1,2 @@
+echo foo | gzip | busybox gunzip > output
+echo foo | cmp - output
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-accepts-multiple-files
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-accepts-multiple-files	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-accepts-multiple-files	(revision 20)
@@ -0,0 +1,3 @@
+touch foo bar
+busybox gzip foo bar
+test -f foo.gz -a -f bar.gz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-accepts-single-minus
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-accepts-single-minus	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-accepts-single-minus	(revision 20)
@@ -0,0 +1,1 @@
+echo foo | busybox gzip - >/dev/null
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-removes-original-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-removes-original-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/gzip/gzip-removes-original-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+busybox gzip foo
+test ! -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/head/head-n-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/head/head-n-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/head/head-n-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+head -n 2 "$d/README" > logfile.gnu
+busybox head -n 2 "$d/README" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/head/head-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/head/head-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/head/head-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+head "$d/README" > logfile.gnu
+busybox head "$d/README" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostid/hostid-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostid/hostid-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostid/hostid-works	(revision 20)
@@ -0,0 +1,2 @@
+test x$(hostid) = x$(busybox hostid)
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-d-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-d-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-d-works	(revision 20)
@@ -0,0 +1,2 @@
+test x$(hostname -d) = x$(busybox hostname -d)
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-i-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-i-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-i-works	(revision 20)
@@ -0,0 +1,2 @@
+test x$(hostname -i) = x$(busybox hostname -i)
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-s-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-s-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-s-works	(revision 20)
@@ -0,0 +1,1 @@
+test x$(hostname -s) = x$(busybox hostname -s)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/hostname/hostname-works	(revision 20)
@@ -0,0 +1,1 @@
+test x$(hostname) = x$(busybox hostname)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-g-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-g-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-g-works	(revision 20)
@@ -0,0 +1,1 @@
+test x$(id -g) = x$(busybox id -g)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-u-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-u-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-u-works	(revision 20)
@@ -0,0 +1,1 @@
+test x$(id -u) = x$(busybox id -u)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-un-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-un-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-un-works	(revision 20)
@@ -0,0 +1,1 @@
+test x$(id -un) = x$(busybox id -un)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-ur-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-ur-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/id/id-ur-works	(revision 20)
@@ -0,0 +1,1 @@
+test x$(id -ur) = x$(busybox id -ur)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-creates-hard-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-creates-hard-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-creates-hard-links	(revision 20)
@@ -0,0 +1,4 @@
+echo file number one > file1
+busybox ln file1 link1
+test -f file1
+test -f link1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-creates-soft-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-creates-soft-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-creates-soft-links	(revision 20)
@@ -0,0 +1,4 @@
+echo file number one > file1
+busybox ln -s file1 link1
+test -L link1
+test xfile1 = x`readlink link1`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-force-creates-hard-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-force-creates-hard-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-force-creates-hard-links	(revision 20)
@@ -0,0 +1,5 @@
+echo file number one > file1
+echo file number two > link1
+busybox ln -f file1 link1
+test -f file1
+test -f link1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-force-creates-soft-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-force-creates-soft-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-force-creates-soft-links	(revision 20)
@@ -0,0 +1,5 @@
+echo file number one > file1
+echo file number two > link1
+busybox ln -f -s file1 link1
+test -L link1
+test xfile1 = x`readlink link1`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-preserves-hard-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-preserves-hard-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-preserves-hard-links	(revision 20)
@@ -0,0 +1,8 @@
+echo file number one > file1
+echo file number two > link1
+set +e
+busybox ln file1 link1
+if [ $? != 0 ] ; then
+	exit 0;
+fi
+exit 1;
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-preserves-soft-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-preserves-soft-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ln/ln-preserves-soft-links	(revision 20)
@@ -0,0 +1,9 @@
+echo file number one > file1
+echo file number two > link1
+set +e
+busybox ln -s file1 link1
+if [ $? != 0 ] ; then
+	exit 0;
+fi
+exit 1;
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-1-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-1-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-1-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+ls -1 "$d" > logfile.gnu
+busybox ls -1 "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-h-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-h-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-h-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+ls -h "$d" > logfile.gnu
+busybox ls -h "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-l-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-l-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-l-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+LC_ALL=C ls -l "$d" > logfile.gnu
+busybox ls -l "$d" > logfile.bb
+diff -w logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-s-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-s-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/ls/ls-s-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+LC_ALL=C ls -1s "$d" > logfile.gnu
+busybox ls -1s "$d" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/md5sum/md5sum-verifies-non-binary-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/md5sum/md5sum-verifies-non-binary-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/md5sum/md5sum-verifies-non-binary-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+md5sum foo > bar
+busybox md5sum -c bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mkdir/mkdir-makes-a-directory
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mkdir/mkdir-makes-a-directory	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mkdir/mkdir-makes-a-directory	(revision 20)
@@ -0,0 +1,2 @@
+busybox mkdir foo
+test -d foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mkdir/mkdir-makes-parent-directories
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mkdir/mkdir-makes-parent-directories	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mkdir/mkdir-makes-parent-directories	(revision 20)
@@ -0,0 +1,2 @@
+busybox mkdir -p foo/bar
+test -d foo -a -d foo/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mount.testroot
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mount.testroot	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mount.testroot	(revision 20)
@@ -0,0 +1,183 @@
+#!/bin/sh
+
+# SUSv3 compliant mount and umount tests.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+if [ -z "$TESTDIR" ]
+then
+  echo 'Need $TESTDIR'
+  exit 1
+fi
+
+cd "$TESTDIR"
+
+. testing.sh
+
+# If we aren't PID 1, barf.
+
+#if [ $$ -ne 1 ]
+#then
+#  echo "SKIPPED: mount test requires emulation environment"
+#  exit 0
+#fi
+
+# Run tests within the chroot environment.
+dochroot bash rm ls ln cat ps mknod mkdir dd grep cmp diff tail \
+	mkfs.ext2 mkfs.vfat mount umount losetup wc << EOF
+#!/bin/bash
+
+. /testing.sh
+
+mknod /dev/loop0 b 7 0
+mknod /dev/loop1 b 7 1
+
+# We need /proc to do much.  Make sure we can mount it explicitly.
+
+testing "mount no proc [GNUFAIL]" "mount 2> /dev/null || echo yes" "yes\n" "" ""
+testing "mount /proc" "mount -t proc /proc /proc && ls -d /proc/1" \
+	"/proc/1\n" "" ""
+
+# Make sure the last thing in the list is /proc
+
+testing "mount list1" "mount | tail -n 1" "/proc on /proc type proc (rw)\n" \
+	"" ""
+
+
+# Create an ext2 image
+
+mkdir -p images/{ext2.dir,vfat.dir,test1,test2,test3}
+dd if=/dev/zero of=images/ext2.img bs=1M count=1 2> /dev/null
+mkfs.ext2 -F -b 1024 images/ext2.img > /dev/null 2> /dev/null
+dd if=/dev/zero of=images/vfat.img bs=1M count=1 2> /dev/null
+mkfs.vfat images/vfat.img > /dev/null
+
+# Test mount it
+
+testing "mount vfat image (explicitly autodetect type)" \
+	"mount -t auto images/vfat.img images/vfat.dir && mount | tail -n 1 | grep -o 'vfat.dir type vfat'" \
+	"vfat.dir type vfat\n" "" ""
+testing "mount ext2 image (autodetect type)" \
+	"mount images/ext2.img images/ext2.dir 2> /dev/null && mount | tail -n 1" \
+	"/dev/loop1 on /images/ext2.dir type ext2 (rw)\n" "" ""
+testing "mount remount ext2 image noatime" \
+	"mount -o remount,noatime images/ext2.dir && mount | tail -n 1" \
+	"/dev/loop1 on /images/ext2.dir type ext2 (rw,noatime)\n" "" ""
+testing "mount remount ext2 image ro remembers noatime" \
+	"mount -o remount,ro images/ext2.dir && mount | tail -n 1" \
+	"/dev/loop1 on /images/ext2.dir type ext2 (ro,noatime)\n" "" ""
+
+umount -d images/vfat.dir
+umount -d images/ext2.dir
+
+testing "mount umount freed loop device" \
+	"mount images/ext2.img images/ext2.dir && mount | tail -n 1" \
+	"/dev/loop0 on /images/ext2.dir type ext2 (rw)\n" "" ""
+
+testing "mount block device" \
+	"mount -t ext2 /dev/loop0 images/test1 && mount | tail -n 1" \
+	"/dev/loop0 on /images/test1 type ext2 (rw)\n" "" ""
+
+umount -d images/ext2.dir images/test1
+
+testing "mount remount nonexistent directory" \
+	"mount -o remount,noatime images/ext2.dir 2> /dev/null || echo yes" \
+	"yes\n" "" ""
+
+# Fun with mount -a
+
+testing "mount -a no fstab" "mount -a 2>/dev/null || echo yes" "yes\n" "" ""
+
+umount /proc
+
+# The first field is space delimited, the rest tabs.
+
+cat > /etc/fstab << FSTAB
+/proc             /proc			proc	defaults	0	0
+# Autodetect loop, and provide flags with commas in them.
+/images/ext2.img  /images/ext2.dir	ext2	noatime,nodev	0	0
+# autodetect filesystem, flags without commas.
+/images/vfat.img  /images/vfat.dir	auto	ro		0	0
+# A block device
+/dev/loop2        /images/test1		auto	defaults	0	0
+# tmpfs, filesystem specific flag.
+walrus		  /images/test2		tmpfs	size=42		0	0
+# Autodetect a bind mount.
+/images/test2     /images/test3		auto	defaults	0	0
+FSTAB
+
+# Put something on loop2.
+mknod /dev/loop2 b 7 2
+cat images/ext2.img > images/ext2-2.img
+losetup /dev/loop2 images/ext2-2.img
+
+testing "mount -a" "mount -a && echo hello > /images/test2/abc && cat /images/test3/abc && (mount | wc -l)" "hello\n8\n" "" ""
+
+testing "umount -a" "umount -a && ls /proc" "" "" ""
+
+#/bin/bash < /dev/tty > /dev/tty 2> /dev/tty
+mknod /dev/console c 5 1
+/bin/bash < /dev/console > /dev/console 2> /dev/console
+EOF
+
+exit 0
+
+# Run some tests
+
+losetup nonexistent device (should return error 2)
+losetup unbound loop device (should return error 1)
+losetup bind file to loop device
+losetup bound loop device (display)  (should return error 0)
+losetup filename (error)
+losetup nofile (file not found)
+losetup -d
+losetup bind with offset
+losetup -f (print first loop device)
+losetup -f filename (associate file with first loop device)
+losetup -o (past end of file) -f filename
+
+mount -a
+  with multiple entries in fstab
+  with duplicate entries in fstab
+  with relative paths in fstab
+  with user entries in fstab
+mount -o async,sync,atime,noatime,dev,nodev,exec,noexec,loop,suid,nosuid,remount,ro,rw,bind,move
+mount -r
+mount -o rw -r
+mount -w -o ro
+mount -t auto
+
+mount with relative path in fstab
+mount block device
+mount char device
+mount file (autoloop)
+mount directory (autobind)
+
+
+testing "umount with no /proc"
+testing "umount curdir"
+
+# The basic tests.  These should work even with the small busybox.
+
+testing "sort" "input" "a\nb\nc\n" "c\na\nb\n" ""
+testing "sort #2" "input" "010\n1\n3\n" "3\n1\n010\n" ""
+testing "sort stdin" "" "a\nb\nc\n" "" "b\na\nc\n"
+testing "sort numeric" "-n input" "1\n3\n010\n" "3\n1\n010\n" ""
+testing "sort reverse" "-r input" "wook\nwalrus\npoint\npabst\naargh\n" \
+	"point\nwook\npabst\naargh\nwalrus\n" ""
+
+optional FEATURE_MOUNT_LOOP
+testing "umount -D"
+
+optional FEATURE_MTAB_SUPPORT
+optional FEATURE_MOUNT_NFS
+# No idea what to test here.
+
+optional UMOUNT
+optional FEATURE_UMOUNT_ALL
+testing "umount -a"
+testing "umount -r"
+testing "umount -l"
+testing "umount -f"
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/msh/msh-supports-underscores-in-variable-names
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/msh/msh-supports-underscores-in-variable-names	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/msh/msh-supports-underscores-in-variable-names	(revision 20)
@@ -0,0 +1,1 @@
+test "`busybox msh -c 'FOO_BAR=foo; echo $FOO_BAR'`" = foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-files-to-dir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-files-to-dir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-files-to-dir	(revision 20)
@@ -0,0 +1,16 @@
+echo file number one > file1
+echo file number two > file2
+ln -s file2 link1
+mkdir dir1
+touch --date='Sat Jan 29 21:24:08 PST 2000' dir1/file3
+mkdir there
+busybox mv file1 file2 link1 dir1 there
+test -f there/file1
+test -f there/file2
+test -f there/dir1/file3
+test -L there/link1
+test xfile2 = x`readlink there/link1`
+test ! -e file1
+test ! -e file2
+test ! -e link1
+test ! -e dir1/file3
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-follows-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-follows-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-follows-links	(revision 20)
@@ -0,0 +1,4 @@
+touch foo
+ln -s foo bar
+busybox mv bar baz
+test -f baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-empty-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-empty-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-empty-file	(revision 20)
@@ -0,0 +1,4 @@
+touch foo
+busybox mv foo bar
+test ! -e foo
+test -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+busybox mv foo bar
+test ! -f foo -a -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-hardlinks
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-hardlinks	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-hardlinks	(revision 20)
@@ -0,0 +1,4 @@
+touch foo
+ln foo bar
+busybox mv bar baz
+test ! -f bar -a -f baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-large-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-large-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-large-file	(revision 20)
@@ -0,0 +1,4 @@
+dd if=/dev/zero of=foo seek=10k count=1 2>/dev/null
+busybox mv foo bar
+test ! -e foo
+test -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-small-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-small-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-small-file	(revision 20)
@@ -0,0 +1,4 @@
+echo I WANT > foo
+busybox mv foo bar
+test ! -e foo
+test -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-symlinks
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-symlinks	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-symlinks	(revision 20)
@@ -0,0 +1,6 @@
+touch foo
+ln -s foo bar
+busybox mv bar baz
+test -f foo
+test ! -e bar
+test -L baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-unreadable-files
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-unreadable-files	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-moves-unreadable-files	(revision 20)
@@ -0,0 +1,5 @@
+touch foo
+chmod a-r foo
+busybox mv foo bar
+test ! -e foo
+test -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-preserves-hard-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-preserves-hard-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-preserves-hard-links	(revision 20)
@@ -0,0 +1,6 @@
+# FEATURE: CONFIG_FEATURE_PRESERVE_HARDLINKS
+touch foo
+ln foo bar
+mkdir baz
+busybox mv foo bar baz
+test baz/foo -ef baz/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-preserves-links
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-preserves-links	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-preserves-links	(revision 20)
@@ -0,0 +1,5 @@
+touch foo
+ln -s foo bar
+busybox mv bar baz
+test -L baz
+test xfoo = x`readlink baz`
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-refuses-mv-dir-to-subdir
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-refuses-mv-dir-to-subdir	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-refuses-mv-dir-to-subdir	(revision 20)
@@ -0,0 +1,23 @@
+echo file number one > file1
+echo file number two > file2
+ln -s file2 link1
+mkdir dir1
+touch --date='Sat Jan 29 21:24:08 PST 2000' dir1/file3
+mkdir there
+busybox mv file1 file2 link1 dir1 there
+test -f there/file1
+test -f there/file2
+test -f there/dir1/file3
+test -L there/link1
+test xfile2 = x`readlink there/link1`
+test ! -e file1
+test ! -e file2
+test ! -e link1
+test ! -e dir1/file3
+set +e
+busybox mv there there/dir1
+if [ $? != 0 ] ; then
+	exit 0;
+fi
+
+exit 1;
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-removes-source-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-removes-source-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/mv/mv-removes-source-file	(revision 20)
@@ -0,0 +1,4 @@
+touch foo
+busybox mv foo bar
+test ! -e foo
+test -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/pidof.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/pidof.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/pidof.tests	(revision 20)
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# pidof tests.
+# Copyright 2005 by Bernhard Fischer
+# Licensed under GPL v2, see file LICENSE for details.
+
+# AUDIT:
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+
+testing "pidof (exit with error)" \
+	"pidof veryunlikelyoccuringbinaryname ; echo \$?" "1\n" "" ""
+testing "pidof (exit with success)" "pidof pidof > /dev/null; echo \$?" \
+	"0\n" "" ""
+# We can get away with this because it says #!/bin/sh up top.
+
+testing "pidof this" "pidof pidof.tests | grep -o -w $$" "$$\n" "" ""
+
+optional FEATURE_PIDOF_SINGLE
+testing "pidof -s" "pidof -s init" "1\n" "" ""
+
+optional FEATURE_PIDOF_OMIT
+testing "pidof -o %PPID" "pidof -o %PPID pidof.tests | grep -o -w $$" "" "" ""
+testing "pidof -o %PPID NOP" "pidof -o %PPID -s init" "1\n" "" ""
+testing "pidof -o init" "pidof -o 1 init | grep -o -w 1" "" "" ""
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/pwd/pwd-prints-working-directory
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/pwd/pwd-prints-working-directory	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/pwd/pwd-prints-working-directory	(revision 20)
@@ -0,0 +1,1 @@
+test $(pwd) = $(busybox pwd)
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/readlink.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/readlink.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/readlink.tests	(revision 20)
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Readlink tests.
+# Copyright 2006 by Natanael Copa <n@tanael.org>
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+TESTDIR=readlink_testdir
+TESTFILE="$TESTDIR/testfile"
+TESTLINK="testlink"
+FAILLINK="$TESTDIR/$TESTDIR/testlink"
+
+# create the dir and test files
+mkdir -p "./$TESTDIR"
+touch "./$TESTFILE"
+ln -s "./$TESTFILE" "./$TESTLINK"
+
+testing "readlink on a file" "readlink ./$TESTFILE" "" "" ""
+testing "readlink on a link" "readlink ./$TESTLINK" "./$TESTFILE\n" "" ""
+
+optional FEATURE_READLINK_FOLLOW
+
+testing "readlink -f on a file" "readlink -f ./$TESTFILE" "$PWD/$TESTFILE\n" "" ""
+testing "readlink -f on a link" "readlink -f ./$TESTLINK" "$PWD/$TESTFILE\n" "" ""
+testing "readlink -f on an invalid link" "readlink -f ./$FAILLINK" "" "" ""
+testing "readlink -f on a wierd dir" "readlink -f $TESTDIR/../$TESTFILE" "$PWD/$TESTFILE\n" "" ""
+
+
+# clean up
+rm -r "$TESTLINK" "$TESTDIR"
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/rm/rm-removes-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/rm/rm-removes-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/rm/rm-removes-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+busybox rm foo
+test ! -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/rmdir/rmdir-removes-parent-directories
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/rmdir/rmdir-removes-parent-directories	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/rmdir/rmdir-removes-parent-directories	(revision 20)
@@ -0,0 +1,3 @@
+mkdir -p foo/bar
+busybox rmdir -p foo/bar
+test ! -d foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/runtest
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/runtest	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/runtest	(revision 20)
@@ -0,0 +1,150 @@
+#!/bin/sh
+
+[ -n "$srcdir" ] || srcdir=$(pwd)
+[ -n "$bindir" ] || bindir=$(dirname $(pwd))
+PATH=$bindir:$PATH
+
+# Run old-style test.
+
+run_applet_testcase()
+{
+	local applet=$1
+	local testcase=$2
+
+	local status=0
+	local RES=
+
+	local uc_applet=$(echo $applet | tr a-z A-Z)
+	local testname=$(basename $testcase)
+
+	if grep -q "^# CONFIG_${uc_applet} is not set$" $bindir/.config; then
+		echo UNTESTED: $testname
+		return 0
+	fi
+
+	if grep -q "^# FEATURE: " $testcase; then
+		local feature=`sed -ne 's/^# FEATURE: //p' $testcase`
+
+		if grep -q "^# ${feature} is not set$" $bindir/.config; then
+			echo UNTESTED: $testname
+			return 0
+		fi
+	fi
+
+	rm -rf tmp
+	mkdir -p tmp
+	pushd tmp > /dev/null
+
+	d=$srcdir sh -x -e $testcase >.logfile.txt 2>&1 || status=$?
+
+	if [ $status -ne 0 ] ; then
+		echo FAIL: $testname
+		if [ $verbose -gt 0 ]; then
+			cat .logfile.txt
+		fi
+		status=$?
+	else
+		echo PASS: $testname
+		rm -f .logfile.txt
+		status=$?
+	fi
+
+	popd > /dev/null
+	rm -rf tmp
+
+	return $status
+}
+
+run_applet_tests()
+{
+	local applet=$1
+
+	local status=0
+
+	for testcase in $srcdir/$applet/*; do
+		if [ "$testcase" = "$srcdir/$applet/CVS" ]; then
+			continue
+		fi
+
+		if run_applet_testcase $applet $testcase; then
+			:
+		else
+			status=1
+		fi
+	done
+
+	return $status
+}
+
+
+status=0
+verbose=0
+
+if [ x"$1" = x"-v" ]; then
+	verbose=1
+	export VERBOSE=$verbose
+	shift
+fi
+
+if [ $# -ne 0 ]; then
+	applets=$(cd $srcdir ; for i in $@; do ls ${i}* ; done)
+else
+	applets=$(ls $srcdir)
+fi
+
+# Populate a directory with links to all busybox applets
+
+LINKSDIR="$bindir/runtest-tempdir-links"
+implemented=$($bindir/busybox 2>&1 |
+	while read line
+	do
+		if test x"$line" = x"Currently defined functions:"
+		then
+			xargs | sed 's/,//g'
+			break
+		fi
+	done
+	)
+rm -rf "$LINKSDIR" 2>/dev/null
+mkdir "$LINKSDIR"
+for i in $implemented
+do
+	ln -s $bindir/busybox "$LINKSDIR"/$i
+done
+
+# Set up option flags so tests can be selective.
+
+configfile=${bindir:-../../}/.config
+export OPTIONFLAGS=:$(echo $(sed -nr 's/^CONFIG_(.*)=.*/\1/p' $configfile) | sed 's/ /:/g')
+
+for applet in $applets; do
+	if [ "$applet" = "links" ]; then continue; fi
+	if [ "$applet" != "CVS" -a -d "$srcdir/$applet" ]; then
+		if run_applet_tests $applet; then
+			:
+		else
+			status=1
+		fi
+	fi
+
+	# Is this a new-style test?
+	applet=$(echo "$applet" | sed -n 's/\.tests$//p')
+	if [ ${#applet} -ne 0 ]
+	then
+		if [ ! -h "$LINKSDIR/$applet" ] && [ "${applet:0:4}" != "all_" ]
+		then
+			echo "SKIPPED: $applet (not built)"
+			continue
+		fi
+		if PATH="$LINKSDIR":$srcdir:$bindir:$PATH \
+				"${srcdir:-.}/$applet".tests
+		then
+			:
+		else
+			status=1
+		fi
+	fi
+
+done
+rm -rf "$LINKSDIR"
+exit $status
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sed.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sed.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sed.tests	(revision 20)
@@ -0,0 +1,203 @@
+#!/bin/sh
+
+# SUSv3 compliant sed tests.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# testing "description" "arguments" "result" "infile" "stdin"
+
+# Corner cases
+testing "sed no files (stdin)" 'sed ""' "hello\n" "" "hello\n"
+testing "sed explicit stdin" 'sed "" -' "hello\n" "" "hello\n"
+testing "sed handles empty lines" "sed -e 's/\$/@/'" "@\n" "" "\n"
+testing "sed stdin twice" 'sed "" - -' "hello" "" "hello"
+
+# Trailing EOF.
+#	Match $, at end of each file or all files?
+
+# -e corner cases
+#	without -e
+#	multiple -e
+#		interact with a
+#	-eee arg1 arg2 arg3
+# -f corner cases
+#	-e -f -e
+# -n corner cases
+#	no newline at EOF?
+# -r corner cases
+#	Just make sure it works.
+# -i corner cases:
+#	sed -i -
+#	permissions
+#	-i on a symlink
+#	on a directory
+#       With $ last-line test
+# Continue with \
+#       End of script with trailing \
+
+# command list
+testing "sed accepts blanks before command" "sed -e '1 d'" "" "" ""
+testing "sed accepts newlines in -e" "sed -e 'i\
+1
+a\
+3'" "1\n2\n3\n" "" "2\n"
+testing "sed accepts multiple -e" "sed -e 'i\' -e '1' -e 'a\' -e '3'" \
+	"1\n2\n3\n" "" "2\n"
+
+# substitutions
+testing "sed -n" "sed -n -e s/foo/bar/ -e s/bar/baz/" "" "" "foo\n"
+testing "sed s//p" "sed -e s/foo/bar/p -e s/bar/baz/p" "bar\nbaz\nbaz\n" \
+	"" "foo\n"
+testing "sed -n s//p" "sed -ne s/abc/def/p" "def\n" "" "abc\n"
+testing "sed s//g (exhaustive)" "sed -e 's/[[:space:]]*/,/g'" ",1,2,3,4,5,\n" \
+	"" "12345\n"
+testing "sed s arbitrary delimiter" "sed -e 's woo boing '" "boing\n" "" "woo\n"
+testing "sed s chains" "sed -e s/foo/bar/ -e s/bar/baz/" "baz\n" "" "foo\n"
+testing "sed s chains2" "sed -e s/foo/bar/ -e s/baz/nee/" "bar\n" "" "foo\n"
+testing "sed s [delimiter]" "sed -e 's@[@]@@'" "onetwo" "" "one@two"
+
+# branch
+testing "sed b (branch)" "sed -e 'b one;p;: one'" "foo\n" "" "foo\n"
+testing "sed b (branch with no label jumps to end)" "sed -e 'b;p'" \
+	"foo\n" "" "foo\n"
+
+# test and branch
+testing "sed t (test/branch)" "sed -e 's/a/1/;t one;p;: one;p'" \
+	"1\n1\nb\nb\nb\nc\nc\nc\n" "" "a\nb\nc\n"
+testing "sed t (test/branch clears test bit)" "sed -e 's/a/b/;:loop;t loop'" \
+	"b\nb\nc\n" "" "a\nb\nc\n"
+testing "sed T (!test/branch)" "sed -e 's/a/1/;T notone;p;: notone;p'" \
+	"1\n1\n1\nb\nb\nc\nc\n" "" "a\nb\nc\n"
+
+# Normal sed end-of-script doesn't print "c" because n flushed the pattern
+# space.  If n hits EOF, pattern space is empty when script ends.
+# Query: how does this interact with no newline at EOF?
+testing "sed n (flushes pattern space, terminates early)" "sed -e 'n;p'" \
+	"a\nb\nb\nc\n" "" "a\nb\nc\n"
+# N does _not_ flush pattern space, therefore c is still in there @ script end.
+testing "sed N (doesn't flush pattern space when terminating)" "sed -e 'N;p'" \
+	"a\nb\na\nb\nc\n" "" "a\nb\nc\n"
+testing "sed address match newline" 'sed "/b/N;/b\\nc/i woo"' \
+	"a\nwoo\nb\nc\nd\n" "" "a\nb\nc\nd\n"
+
+# Multiple lines in pattern space
+testing "sed N (stops at end of input) and P (prints to first newline only)" \
+	"sed -n 'N;P;p'" "a\na\nb\n" "" "a\nb\nc\n"
+
+# Hold space
+testing "sed G (append hold space to pattern space)" 'sed G' "a\n\nb\n\nc\n\n" \
+	"" "a\nb\nc\n"
+#testing "sed g/G (swap/append hold and patter space)"
+#testing "sed g (swap hold/pattern space)"
+
+testing "sed d ends script iteration" \
+	"sed -e '/ook/d;s/ook/ping/p;i woot'" "" "" "ook\n"
+testing "sed d ends script iteration (2)" \
+	"sed -e '/ook/d;a\' -e 'bang'" "woot\nbang\n" "" "ook\nwoot\n"
+
+# Multiple files, with varying newlines and NUL bytes
+testing "sed embedded NUL" "sed -e 's/woo/bang/'" "\0bang\0woo\0" "" \
+	"\0woo\0woo\0"
+testing "sed embedded NUL g" "sed -e 's/woo/bang/g'" "bang\0bang\0" "" \
+	"woo\0woo\0"
+echo -e "/woo/a he\0llo" > sed.commands
+testing "sed NUL in command" "sed -f sed.commands" "woo\nhe\0llo\n" "" "woo"
+rm sed.commands
+
+# sed has funky behavior with newlines at the end of file.  Test lots of
+# corner cases with the optional newline appending behavior.
+
+testing "sed normal newlines" "sed -e 's/woo/bang/' input -" "bang\nbang\n" \
+	"woo\n" "woo\n"
+testing "sed leave off trailing newline" "sed -e 's/woo/bang/' input -" \
+	"bang\nbang" "woo\n" "woo"
+testing "sed autoinsert newline" "sed -e 's/woo/bang/' input -" "bang\nbang" \
+	"woo" "woo"
+testing "sed empty file plus cat" "sed -e 's/nohit//' input -" "one\ntwo" \
+	"" "one\ntwo"
+testing "sed cat plus empty file" "sed -e 's/nohit//' input -" "one\ntwo" \
+	"one\ntwo" ""
+testing "sed append autoinserts newline" "sed -e '/woot/a woo' -" \
+	"woot\nwoo\n" "" "woot"
+testing "sed insert doesn't autoinsert newline" "sed -e '/woot/i woo' -" \
+	"woo\nwoot" "" "woot"
+testing "sed print autoinsert newlines" "sed -e 'p' -" "one\none" "" "one"
+testing "sed print autoinsert newlines two files" "sed -e 'p' input -" \
+	"one\none\ntwo\ntwo" "one" "two"
+testing "sed noprint, no match, no newline" "sed -ne 's/woo/bang/' input" \
+	"" "no\n" ""
+testing "sed selective matches with one nl" "sed -ne 's/woo/bang/p' input -" \
+	"a bang\nc bang\n" "a woo\nb no" "c woo\nd no"
+testing "sed selective matches insert newline" \
+	"sed -ne 's/woo/bang/p' input -" "a bang\nb bang\nd bang" \
+	"a woo\nb woo" "c no\nd woo"
+testing "sed selective matches noinsert newline" \
+	"sed -ne 's/woo/bang/p' input -" "a bang\nb bang" "a woo\nb woo" \
+	"c no\nd no"
+testing "sed clusternewline" \
+	"sed -e '/one/a 111' -e '/two/i 222' -e p input -" \
+	"one\none\n111\n222\ntwo\ntwo" "one" "two"
+testing "sed subst+write" \
+	"sed -e 's/i/z/' -e 'woutputw' input -; echo -n X; cat outputw" \
+	"thzngy\nagaznXthzngy\nagazn" "thingy" "again"
+rm outputw
+testing "sed trailing NUL" \
+	"sed 's/i/z/' input -" \
+	"a\0b\0\nc" "a\0b\0" "c"
+testing "sed escaped newline in command" \
+	"sed 's/a/z\\
+z/' input" \
+	"z\nz" "a" ""
+
+# Test end-of-file matching behavior
+
+testing "sed match EOF" "sed -e '"'$p'"'" "hello\nthere\nthere" "" \
+	"hello\nthere"
+testing "sed match EOF two files" "sed -e '"'$p'"' input -" \
+	"one\ntwo\nthree\nfour\nfour" "one\ntwo" "three\nfour"
+# sed match EOF inline: gnu sed 4.1.5 outputs this:
+#00000000  6f 6e 65 0a 6f 6f 6b 0a  6f 6f 6b 0a 74 77 6f 0a  |one.ook.ook.two.|
+#00000010  0a 74 68 72 65 65 0a 6f  6f 6b 0a 6f 6f 6b 0a 66  |.three.ook.ook.f|
+#00000020  6f 75 72                                          |our|
+# which looks buggy to me.
+echo -ne "three\nfour" > input2
+testing "sed match EOF inline" \
+	"sed -e '"'$i ook'"' -i input input2 && cat input input2" \
+	"one\nook\ntwothree\nook\nfour" "one\ntwo" ""
+rm input2
+
+# Test lie-to-autoconf
+
+testing "sed lie-to-autoconf" "sed --version | grep -o 'GNU sed version '" \
+	"GNU sed version \n" "" ""
+
+# Jump to nonexistent label
+testing "sed nonexistent label" "sed -e 'b walrus' 2> /dev/null || echo yes" \
+	"yes\n" "" ""
+
+testing "sed backref from empty s uses range regex" \
+	"sed -e '/woot/s//eep \0 eep/'" "eep woot eep" "" "woot"
+
+testing "sed backref from empty s uses range regex with newline" \
+	"sed -e '/woot/s//eep \0 eep/'" "eep woot eep\n" "" "woot\n"
+
+# -i with no filename
+
+touch ./-  # Detect gnu failure mode here.
+testing "sed -i with no arg [GNUFAIL]" "sed -e '' -i 2> /dev/null || echo yes" \
+	"yes\n" "" ""
+rm ./-     # Clean up
+
+testing "sed s/xxx/[/" "sed -e 's/xxx/[/'" "[\n" "" "xxx\n"
+
+# Ponder this a bit more, why "woo not found" from gnu version?
+#testing "sed doesn't substitute in deleted line" \
+#	"sed -e '/ook/d;s/ook//;t woo;a bang;'" "bang" "" "ook\n"
+
+# This makes both seds very unhappy.  Why?
+#testing "sed -g (exhaustive)" "sed -e 's/[[:space:]]*/,/g'" ",1,2,3,4,5," \
+#	"" "12345"
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/seq.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/seq.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/seq.tests	(revision 20)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# SUSv3 compliant seq tests.
+# Copyright 2006 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+# AUDIT: Full SUSv3 coverage (except internationalization).
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+#   file input will be file called "input"
+#   test can create a file "actual" instead of writing to stdout
+
+# Test exit status
+
+testing "seq (exit with error)" "seq 2> /dev/null || echo yes" "yes\n" "" ""
+testing "seq (exit with error)" "seq 1 2 3 4 2> /dev/null || echo yes" \
+	"yes\n" "" ""
+testing "seq one argument" "seq 3" "1\n2\n3\n" "" ""
+testing "seq two arguments" "seq 5 7" "5\n6\n7\n" "" ""
+testing "seq two arguments reversed" "seq 7 5" "" "" ""
+testing "seq two arguments equal" "seq 3 3" "3\n" "" ""
+testing "seq two arguments equal, arbitrary negative step" "seq 1 -15 1" \
+	"1\n" "" ""
+testing "seq two arguments equal, arbitrary positive step" "seq 1 +15 1" \
+	"1\n" "" ""
+testing "seq count up by 2" "seq 4 2 8" "4\n6\n8\n" "" ""
+testing "seq count down by 2" "seq 8 -2 4" "8\n6\n4\n" "" ""
+testing "seq count wrong way #1" "seq 4 -2 8" "" "" ""
+testing "seq count wrong way #2" "seq 8 2 4" "" "" ""
+testing "seq count by .3" "seq 3 .3 4" "3\n3.3\n3.6\n3.9\n" "" ""
+testing "seq count by -.9" "seq .7 -.9 -2.2" "0.7\n-0.2\n-1.1\n-2\n" "" ""
+testing "seq count by zero" "seq 4 0 8 | head -n 10" "" "" ""
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sort.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sort.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sort.tests	(revision 20)
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+# SUSv3 compliant sort tests.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# The basic tests.  These should work even with the small busybox.
+
+testing "sort" "sort input" "a\nb\nc\n" "c\na\nb\n" ""
+testing "sort #2" "sort input" "010\n1\n3\n" "3\n1\n010\n" ""
+testing "sort stdin" "sort" "a\nb\nc\n" "" "b\na\nc\n"
+testing "sort numeric" "sort -n input" "1\n3\n010\n" "3\n1\n010\n" ""
+testing "sort reverse" "sort -r input" "wook\nwalrus\npoint\npabst\naargh\n" \
+	"point\nwook\npabst\naargh\nwalrus\n" ""
+
+# These tests require the full option set.
+
+optional FEATURE_SORT_BIG
+# Longish chunk of data re-used by the next few tests
+
+data="42	1	3	woot
+42	1	010	zoology
+egg	1	2	papyrus
+7	3	42	soup
+999	3	0	algebra
+"
+
+# Sorting with keys
+
+testing "sort one key" "sort -k4,4 input" \
+"999	3	0	algebra
+egg	1	2	papyrus
+7	3	42	soup
+42	1	3	woot
+42	1	010	zoology
+" "$data" ""
+
+testing "sort key range with numeric option" "sort -k2,3n input" \
+"42	1	010	zoology
+42	1	3	woot
+egg	1	2	papyrus
+7	3	42	soup
+999	3	0	algebra
+" "$data" ""
+
+# Busybox is definitely doing this one wrong just now.  FIXME
+
+testing "sort key range with numeric option and global reverse" \
+"sort -k2,3n -r input" \
+"egg	1	2	papyrus
+42	1	3	woot
+42	1	010	zoology
+999	3	0	algebra
+7	3	42	soup
+" "$data" ""
+
+#
+
+testing "sort key range with multiple options" "sort -k2,3rn input" \
+"7	3	42	soup
+999	3	0	algebra
+42	1	010	zoology
+42	1	3	woot
+egg	1	2	papyrus
+" "$data" ""
+
+testing "sort key range with two -k options" "sort -k 2,2n -k 1,1r input" "\
+d 2
+b 2
+c 3
+" "\
+c 3
+b 2
+d 2
+" ""
+
+testing "sort with non-default leading delim 1" "sort -n -k2 -t/ input" "\
+/a/2
+/b/1
+" "\
+/a/2
+/b/1
+" ""
+
+testing "sort with non-default leading delim 2" "sort -n -k3 -t/ input" "\
+/b/1
+/a/2
+" "\
+/b/1
+/a/2
+" ""
+
+testing "sort with non-default leading delim 3" "sort -n -k3 -t/ input" "\
+//a/2
+//b/1
+" "\
+//a/2
+//b/1
+" ""
+
+testing "sort -u should consider field only when discarding" "sort -u -k2 input" "\
+a c
+" "\
+a c
+b c
+" ""
+
+testing "sort key doesn't strip leading blanks, disables fallback global sort" \
+"sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/strings/strings-works-like-GNU
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/strings/strings-works-like-GNU	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/strings/strings-works-like-GNU	(revision 20)
@@ -0,0 +1,9 @@
+rm -f foo bar
+strings -af ../../busybox > foo
+busybox strings -af ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sum.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sum.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/sum.tests	(revision 20)
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# unit test for sum.
+# Copyright 2007 by Bernhard Fischer
+# Licensed under GPL v2 or later, see file LICENSE for details.
+
+# AUDIT: Unit tests for sum
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+#   file input will be file called "input"
+#   test can create a file "actual" instead of writing to stdout
+
+testing "sum -r file doesn't print file's name" \
+        "sum -r $0 | grep -c $0 && echo wrongly_printed_filename || echo yes" \
+	"0\nyes\n" "" ""
+testing "sum -r file file does print both names" \
+        "sum -r $0 $0 | grep -c $0 && echo yes || echo wrongly_omitted_filename" \
+	"2\nyes\n" "" ""
+testing "sum -s file does print file's name" \
+        "sum -s $0 | grep -c $0 && echo yes || echo wrongly_omitted_filename" \
+	"1\nyes\n" "" ""
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tail/tail-n-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tail/tail-n-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tail/tail-n-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+tail -n 2 "$d/README" > logfile.gnu
+busybox tail -n 2 "$d/README" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tail/tail-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tail/tail-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tail/tail-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+tail -n 2 "$d/README" > logfile.gnu
+busybox tail -n 2 "$d/README" > logfile.bb
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-archives-multiple-files
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-archives-multiple-files	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-archives-multiple-files	(revision 20)
@@ -0,0 +1,6 @@
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+touch foo bar
+busybox tar cf foo.tar foo bar
+rm foo bar
+tar xf foo.tar
+test -f foo -a -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-complains-about-missing-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-complains-about-missing-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-complains-about-missing-file	(revision 20)
@@ -0,0 +1,3 @@
+touch foo
+tar cf foo.tar foo
+! busybox tar xf foo.tar bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-demands-at-least-one-ctx
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-demands-at-least-one-ctx	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-demands-at-least-one-ctx	(revision 20)
@@ -0,0 +1,1 @@
+! busybox tar v
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-demands-at-most-one-ctx
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-demands-at-most-one-ctx	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-demands-at-most-one-ctx	(revision 20)
@@ -0,0 +1,1 @@
+! busybox tar tx
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-all-subdirs
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-all-subdirs	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-all-subdirs	(revision 20)
@@ -0,0 +1,12 @@
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+mkdir -p foo/{1,2,3}
+mkdir -p foo/1/{10,11}
+mkdir -p foo/1/10/{100,101,102}
+tar cf foo.tar -C foo .
+rm -rf foo/*
+busybox tar xf foo.tar -C foo ./1/10
+find foo | sort >logfile.bb
+rm -rf foo/*
+tar xf foo.tar -C foo ./1/10
+find foo | sort >logfile.gnu
+cmp logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-file	(revision 20)
@@ -0,0 +1,5 @@
+touch foo
+tar cf foo.tar foo
+rm foo
+busybox tar xf foo.tar
+test -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-from-standard-input
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-from-standard-input	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-from-standard-input	(revision 20)
@@ -0,0 +1,5 @@
+touch foo
+tar cf foo.tar foo
+rm foo
+cat foo.tar | busybox tar x
+test -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-multiple-files
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-multiple-files	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-multiple-files	(revision 20)
@@ -0,0 +1,6 @@
+touch foo bar
+busybox tar cf foo.tar foo bar
+rm foo bar
+busybox tar -xf foo.tar
+test -f foo
+test -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-to-standard-output
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-to-standard-output	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-extracts-to-standard-output	(revision 20)
@@ -0,0 +1,3 @@
+echo foo > foo
+tar cf foo.tar foo
+cat foo.tar | busybox tar Ox | cmp foo -
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-cz-options
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-cz-options	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-cz-options	(revision 20)
@@ -0,0 +1,5 @@
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+# FEATURE: CONFIG_FEATURE_TAR_GZIP
+touch foo
+busybox tar czf foo.tar.gz foo
+gzip -d foo.tar.gz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-empty-include-and-non-empty-exclude-list
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-empty-include-and-non-empty-exclude-list	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-empty-include-and-non-empty-exclude-list	(revision 20)
@@ -0,0 +1,6 @@
+# FEATURE: CONFIG_FEATURE_TAR_FROM
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+touch foo
+tar cf foo.tar foo
+echo foo >foo.exclude
+busybox tar xf foo.tar -X foo.exclude
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-exclude-and-extract-lists
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-exclude-and-extract-lists	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-exclude-and-extract-lists	(revision 20)
@@ -0,0 +1,8 @@
+# FEATURE: CONFIG_FEATURE_TAR_FROM
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+touch foo bar baz
+tar cf foo.tar foo bar baz
+echo foo >foo.exclude
+rm foo bar baz
+busybox tar xf foo.tar foo bar -X foo.exclude
+test ! -f foo -a -f bar -a ! -f baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-multiple-X-options
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-multiple-X-options	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-multiple-X-options	(revision 20)
@@ -0,0 +1,10 @@
+# FEATURE: CONFIG_FEATURE_TAR_FROM
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+touch foo
+touch bar
+tar cf foo.tar foo bar
+echo foo > foo.exclude
+echo bar > bar.exclude
+rm foo bar
+busybox tar xf foo.tar -X foo.exclude -X bar.exclude
+test ! -f foo -a ! -f bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-nested-exclude
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-nested-exclude	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tar/tar-handles-nested-exclude	(revision 20)
@@ -0,0 +1,9 @@
+# FEATURE: CONFIG_FEATURE_TAR_FROM
+# FEATURE: CONFIG_FEATURE_TAR_CREATE
+mkdir foo
+touch foo/bar
+tar cf foo.tar foo
+rm -rf foo
+echo foo/bar >foobar.exclude
+busybox tar xf foo.tar foo -X foobar.exclude
+test -d foo -a ! -f foo/bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/taskset.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/taskset.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/taskset.tests	(revision 20)
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Copyright 2006 Bernhard Fischer
+# Licensed under GPL v2 or later, see file LICENSE for details.
+
+. testing.sh
+a="taskset"
+
+# testing "test name"              "opts" "expected result" "file inp" "stdin"
+testing "taskset (get from pid 1)" "$a -p1 >/dev/null;echo \$?" "0\n" "" ""
+testing "taskset (invalid pid)"    "$a -p0 >/dev/null 2>&1;echo \$?" "1\n" "" ""
+testing "taskset (set_aff, needs CAP_SYS_NICE)" \
+                                   "$a 0x1 $SHELL -c $a\ -p\ \$$\|grep\ \"current\ affinity\ mask:\ 1\" >/dev/null;echo \$?" \
+				                                "0\n" "" ""
+
+unset a
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tee/tee-appends-input
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tee/tee-appends-input	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tee/tee-appends-input	(revision 20)
@@ -0,0 +1,5 @@
+echo i\'m a little teapot >foo
+cp foo bar
+echo i\'m a little teapot >>foo
+echo i\'m a little teapot | busybox tee -a bar >/dev/null
+cmp foo bar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tee/tee-tees-input
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tee/tee-tees-input	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tee/tee-tees-input	(revision 20)
@@ -0,0 +1,3 @@
+echo i\'m a little teapot >foo
+echo i\'m a little teapot | busybox tee bar >baz
+cmp foo bar && cmp foo baz
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-creates-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-creates-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-creates-file	(revision 20)
@@ -0,0 +1,2 @@
+busybox touch foo
+test -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-does-not-create-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-does-not-create-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-does-not-create-file	(revision 20)
@@ -0,0 +1,2 @@
+busybox touch -c foo
+test ! -f foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-touches-files-after-non-existent-file
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-touches-files-after-non-existent-file	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/touch/touch-touches-files-after-non-existent-file	(revision 20)
@@ -0,0 +1,3 @@
+touch -t 198001010000 bar
+busybox touch -c foo bar
+test x"`find bar -mtime -1`" = xbar
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-d-alnum-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-d-alnum-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-d-alnum-works	(revision 20)
@@ -0,0 +1,4 @@
+echo testing | tr -d '[[:alnum:]]' > logfile.gnu
+echo testing | busybox tr -d '[[:alnum:]]' > logfile.bb
+
+diff -u logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-d-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-d-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-d-works	(revision 20)
@@ -0,0 +1,4 @@
+echo testing | tr -d aeiou > logfile.gnu
+echo testing | busybox tr -d aeiou > logfile.bb
+
+diff -u logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-non-gnu
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-non-gnu	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-non-gnu	(revision 20)
@@ -0,0 +1,1 @@
+echo fdhrnzvfu bffvsentr | busybox tr '[a-z]' '[n-z][a-m]'
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-rejects-wrong-class
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-rejects-wrong-class	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-rejects-wrong-class	(revision 20)
@@ -0,0 +1,19 @@
+echo t12esting | tr -d '[[:alpha:]]' > logfile.gnu
+echo t12esting | tr -d '[:alpha:]'  >> logfile.gnu
+echo t12esting | tr -d '[[:alpha:]' >> logfile.gnu
+echo t12esting | tr -d '[[:alpha:' >> logfile.gnu
+echo t12esting | tr -d '[[:alpha' >> logfile.gnu
+echo t12esting | tr -d '[:alpha:]' >> logfile.gnu
+echo t12esting | tr -d '[:alpha:' >> logfile.gnu
+echo t12esting | tr -d '[:alpha' >> logfile.gnu
+
+echo t12esting | busybox tr -d '[[:alpha:]]' > logfile.bb
+echo t12esting | busybox tr -d '[:alpha:]'  >> logfile.bb
+echo t12esting | busybox tr -d '[[:alpha:]' >> logfile.bb
+echo t12esting | busybox tr -d '[[:alpha:' >> logfile.bb
+echo t12esting | busybox tr -d '[[:alpha' >> logfile.bb
+echo t12esting | busybox tr -d '[:alpha:]' >> logfile.bb
+echo t12esting | busybox tr -d '[:alpha:' >> logfile.bb
+echo t12esting | busybox tr -d '[:alpha' >> logfile.bb
+
+diff -u logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/tr/tr-works	(revision 20)
@@ -0,0 +1,26 @@
+run_tr ()
+{
+	echo -n "echo '$1' | tr '$2' '$3': "
+	echo "$1" | $bb tr "$2" "$3"
+	echo
+}
+tr_test ()
+{
+	run_tr "cbaab"		abc 		zyx
+	run_tr "TESTING A B C" 	'[A-Z]' 	'[a-z]'
+	run_tr "abc[]" 		"a[b" 		AXB
+	run_tr abc		'[:alpha:]' 	A-ZA-Z
+	run_tr abc56		'[:alnum:]' 	A-ZA-Zxxxxxxxxxx
+	run_tr 012		'[:digit:]' 	abcdefghi
+	run_tr abc56		'[:lower:]' 	'[:upper:]'
+	run_tr " 	"	'[:space:]' 	12345
+	run_tr " 	"	'[:blank:]' 	12
+	run_tr 'a b'		'[= =]' 	X
+	run_tr "[:"		'[:' 		ab
+	run_tr " 	.,:"	'[:punct:]'	12
+	run_tr " 	.,:"	'[:cntrl:]'	12
+}
+
+bb=        tr_test > logfile.gnu
+bb=busybox tr_test > logfile.bb
+diff -u logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/true/true-is-silent
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/true/true-is-silent	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/true/true-is-silent	(revision 20)
@@ -0,0 +1,1 @@
+busybox true 2>&1 | cmp - /dev/null
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/true/true-returns-success
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/true/true-returns-success	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/true/true-returns-success	(revision 20)
@@ -0,0 +1,1 @@
+busybox true
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/unexpand/unexpand-works-like-GNU
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/unexpand/unexpand-works-like-GNU	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/unexpand/unexpand-works-like-GNU	(revision 20)
@@ -0,0 +1,52 @@
+rm -f foo bar
+echo "       y" | unexpand ../../busybox > foo
+echo "       y" | busybox unexpand ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
+rm -f foo bar
+echo "        y" | unexpand ../../busybox > foo
+echo "        y" | busybox unexpand ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
+echo "       y       y" | unexpand ../../busybox > foo
+echo "       y       y" | busybox unexpand ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
+rm -f foo bar
+echo "        y        y" | unexpand ../../busybox > foo
+echo "        y        y" | busybox unexpand ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
+echo "       y       y" | unexpand -a ../../busybox > foo
+echo "       y       y" | busybox unexpand -a ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
+rm -f foo bar
+echo "        y        y" | unexpand -a ../../busybox > foo
+echo "        y        y" | busybox unexpand -a ../../busybox > bar
+set +e
+test ! -f foo -a -f bar
+if [ $? = 0 ] ; then
+	set -e
+	diff -q foo bar
+fi
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uniq.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uniq.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uniq.tests	(revision 20)
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# SUSv3 compliant uniq tests.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+# AUDIT: Full SUSv3 coverage (except internationalization).
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+#   file input will be file called "input"
+#   test can create a file "actual" instead of writing to stdout
+
+# Test exit status
+
+testing "uniq (exit with error)" "uniq nonexistent 2> /dev/null || echo yes" \
+	"yes\n" "" ""
+testing "uniq (exit success)" "uniq /dev/null && echo yes" "yes\n" "" ""
+
+# Test various data sources and destinations
+
+testing "uniq (default to stdin)" "uniq" "one\ntwo\nthree\n" "" \
+	"one\ntwo\ntwo\nthree\nthree\nthree\n"
+testing "uniq - (specify stdin)" "uniq -" "one\ntwo\nthree\n" "" \
+	"one\ntwo\ntwo\nthree\nthree\nthree\n"
+testing "uniq input (specify file)" "uniq input" "one\ntwo\nthree\n" \
+	"one\ntwo\ntwo\nthree\nthree\nthree\n" ""
+
+testing "uniq input outfile (two files)" "uniq input actual > /dev/null" \
+	"one\ntwo\nthree\n" "one\ntwo\ntwo\nthree\nthree\nthree\n" ""
+testing "uniq (stdin) outfile" "uniq - actual" \
+	"one\ntwo\nthree\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"
+# Note: SUSv3 doesn't seem to require support for "-" output, but we do anyway.
+testing "uniq input - (specify stdout)" "uniq input -" \
+	"one\ntwo\nthree\n" "one\ntwo\ntwo\nthree\nthree\nthree\n" ""
+
+
+#-f skip fields
+#-s skip chars
+#-c occurrences
+#-d dups only
+#-u
+
+# Test various command line options
+
+# Leading whitespace is a minor technical violation of the spec,
+# but since gnu does it...
+testing "uniq -c (occurrence count)" "uniq -c | sed 's/^[ \t]*//'" \
+	"1 one\n2 two\n3 three\n" "" \
+	"one\ntwo\ntwo\nthree\nthree\nthree\n"
+testing "uniq -d (dups only) " "uniq -d" "two\nthree\n" "" \
+	"one\ntwo\ntwo\nthree\nthree\nthree\n"
+
+testing "uniq -f -s (skip fields and chars)" "uniq -f2 -s 3" \
+"cc	dd	ee8
+aa	bb	cc9
+" "" \
+"cc	dd	ee8
+bb	cc	dd8
+aa	bb	cc9
+"
+
+# -d is "Suppress the writing fo lines that are not repeated in the input."
+# -u is "Suppress the writing of lines that are repeated in the input."
+# Therefore, together this means they should produce no output.
+testing "uniq -u and -d produce no output" "uniq -d -u" "" "" \
+	"one\ntwo\ntwo\nthree\nthree\nthree\n"
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/unzip.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/unzip.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/unzip.tests	(revision 20)
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# Tests for unzip.
+# Copyright 2006 Rob Landley <rob@landley.net>
+# Copyright 2006 Glenn McGrath <bug1@ihug.co.nz>
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+#   file input will be file called "input"
+#   test can create a file "actual" instead of writing to stdout
+
+# Create a scratch directory
+
+mkdir temp
+cd temp
+
+# Create test file to work with.
+
+mkdir foo
+touch foo/bar
+zip foo.zip foo foo/bar > /dev/null
+rm -f foo/bar
+rmdir foo
+
+# Test that unzipping just foo doesn't create bar.
+testing "unzip (subdir only)" "unzip -q foo.zip foo/ && test -d foo && test ! -f foo/bar && echo yes" "yes\n" "" ""
+
+rmdir foo
+rm foo.zip
+
+# Clean up scratch directory.
+
+cd ..
+rm -rf temp
+
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uptime/uptime-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uptime/uptime-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uptime/uptime-works	(revision 20)
@@ -0,0 +1,2 @@
+busybox uptime
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uuencode.tests
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uuencode.tests	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/uuencode.tests	(revision 20)
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# unit test for uuencode to test functionality.
+# Copyright 2006 by Erik Hovland <erik@hovland.org>
+# Licensed under GPL v2, see file LICENSE for details.
+
+# AUDIT: Unit tests for uuencode
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+#   file input will be file called "input"
+#   test can create a file "actual" instead of writing to stdout
+
+# Test setup of standard input
+saved_umask=$(umask)
+umask 0
+testing "uuencode sets standard input mode correctly" \
+        "uuencode foo </dev/null | head -n 1 | grep -q 666 && echo yes" "yes\n" "" ""
+umask $saved_umask
+
+testing "uuencode correct encoding" "uuencode bb_uuenc_test.out" \
+"begin 644 bb_uuenc_test.out\nM5&AE(&9A<W0@9W)E>2!F;W@@:G5M<&5D(&]V97(@=&AE(&QA>GD@8G)O=VX@\n%9&]G+@H\`\n\`\nend\n" \
+        "" "The fast grey fox jumped over the lazy brown dog.\n"
+testing "uuencode correct base64 encoding" "uuencode -m bb_uuenc_test.out" \
+"begin-base64 644 bb_uuenc_test.out\nVGhlIGZhc3QgZ3JleSBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgYnJvd24g\nZG9nLgo=\n====\n" \
+        "" "The fast grey fox jumped over the lazy brown dog.\n"
+exit $FAILCOUNT
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-all
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-all	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-all	(revision 20)
@@ -0,0 +1,2 @@
+# 1 line, 4 words, 20 chars.
+test "`echo i\'m a little teapot | busybox wc | sed 's/  */ /g' | sed 's/^ //'`" = '1 4 20'
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-characters
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-characters	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-characters	(revision 20)
@@ -0,0 +1,1 @@
+test `echo i\'m a little teapot | busybox wc -c` -eq 20
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-lines
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-lines	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-lines	(revision 20)
@@ -0,0 +1,1 @@
+test `echo i\'m a little teapot | busybox wc -l` -eq 1
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-words
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-words	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-counts-words	(revision 20)
@@ -0,0 +1,1 @@
+test `echo i\'m a little teapot | busybox wc -w` -eq 4
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-prints-longest-line-length
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-prints-longest-line-length	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wc/wc-prints-longest-line-length	(revision 20)
@@ -0,0 +1,1 @@
+test `echo i\'m a little teapot | busybox wc -L` -eq 19
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget--O-overrides--P
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget--O-overrides--P	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget--O-overrides--P	(revision 20)
@@ -0,0 +1,3 @@
+mkdir foo
+busybox wget -q -O index.html -P foo http://www.google.com/
+test -s index.html
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-handles-empty-path
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-handles-empty-path	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-handles-empty-path	(revision 20)
@@ -0,0 +1,1 @@
+busybox wget http://www.google.com
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-retrieves-google-index
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-retrieves-google-index	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-retrieves-google-index	(revision 20)
@@ -0,0 +1,2 @@
+busybox wget -q -O foo http://www.google.com/
+test -s foo
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-supports--P
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-supports--P	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/wget/wget-supports--P	(revision 20)
@@ -0,0 +1,3 @@
+mkdir foo
+busybox wget -q -P foo http://www.google.com/
+test -s foo/index.html
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/which/which-uses-default-path
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/which/which-uses-default-path	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/which/which-uses-default-path	(revision 20)
@@ -0,0 +1,4 @@
+BUSYBOX=$(type -p busybox)
+SAVED_PATH=$PATH
+unset PATH
+$BUSYBOX which ls
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/xargs/xargs-works
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/xargs/xargs-works	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/testsuite/xargs/xargs-works	(revision 20)
@@ -0,0 +1,4 @@
+[ -n "$d" ] || d=..
+find "$d" -name \*works -type f | xargs md5sum > logfile.gnu
+find "$d" -name \*works -type f | busybox xargs md5sum > logfile.bb
+diff -u logfile.gnu logfile.bb
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/util-linux/Config.in
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/util-linux/Config.in	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/util-linux/Config.in	(revision 20)
@@ -0,0 +1,521 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+menu "Linux System Utilities"
+
+config DMESG
+	bool "dmesg"
+	default n
+	help
+	  dmesg is used to examine or control the kernel ring buffer.  When the
+	  Linux kernel prints messages to the system log, they are stored in
+	  the kernel ring buffer.  You can use dmesg to print the kernel's ring
+	  buffer, clear the kernel ring buffer, change the size of the kernel
+	  ring buffer, and change the priority level at which kernel messages
+	  are also logged to the system console.  Enable this option if you
+	  wish to enable the 'dmesg' utility.
+
+config FEATURE_DMESG_PRETTY
+	bool "pretty dmesg output"
+	default y
+	depends on DMESG
+	help
+	  If you wish to scrub the syslog level from the output, say 'Y' here.
+	  The syslog level is a string prefixed to every line with the form "<#>".
+
+	  With this option you will see:
+	    # dmesg
+	    Linux version 2.6.17.4 .....
+	    BIOS-provided physical RAM map:
+	     BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
+
+	  Without this option you will see:
+	    # dmesg
+	    <5>Linux version 2.6.17.4 .....
+	    <6>BIOS-provided physical RAM map:
+	    <6> BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
+
+config FBSET
+	bool "fbset"
+	default n
+	help
+	  fbset is used to show or change the settings of a Linux frame buffer
+	  device.  The frame buffer device provides a simple and unique
+	  interface to access a graphics display.  Enable this option
+	  if you wish to enable the 'fbset' utility.
+
+config FEATURE_FBSET_FANCY
+	bool "Turn on extra fbset options"
+	default n
+	depends on FBSET
+	help
+	  This option enables extended fbset options, allowing one to set the
+	  framebuffer size, color depth, etc.  interface to access a graphics
+	  display.  Enable this option if you wish to enable extended fbset
+	  options.
+
+config FEATURE_FBSET_READMODE
+	bool "Turn on fbset readmode support"
+	default n
+	depends on FBSET
+	help
+	  This option allows fbset to read the video mode database stored by
+	  default as /etc/fb.modes, which can be used to set frame buffer
+	  device to pre-defined video modes.
+
+config FDFLUSH
+	bool "fdflush"
+	default n
+	help
+	  fdflush is only needed when changing media on slightly-broken
+	  removable media drives.  It is used to make Linux believe that a
+	  hardware disk-change switch has been actuated, which causes Linux to
+	  forget anything it has cached from the previous media.  If you have
+	  such a slightly-broken drive, you will need to run fdflush every time
+	  you change a disk.  Most people have working hardware and can safely
+	  leave this disabled.
+
+config FDFORMAT
+	bool "fdformat"
+	default n
+	help
+	  fdformat is used to low-level format a floppy disk.
+
+config FDISK
+	bool "fdisk"
+	default n
+	help
+	  The fdisk utility is used to divide hard disks into one or more
+	  logical disks, which are generally called partitions.  This utility
+	  can be used to list and edit the set of partitions or BSD style
+	  'disk slices' that are defined on a hard drive.
+
+config FDISK_SUPPORT_LARGE_DISKS
+	bool "support over 4GB disks"
+	default y
+	depends on FDISK
+	help
+	  Enable this option to support large disks > 4GB.
+
+config FEATURE_FDISK_WRITABLE
+	bool "Write support"
+	default y
+	depends on FDISK
+	help
+	  Enabling this option allows you to create or change a partition table
+	  and write those changes out to disk.  If you leave this option
+	  disabled, you will only be able to view the partition table.
+
+config FEATURE_AIX_LABEL
+	bool "Support AIX disklabels"
+	default n
+	depends on FDISK && FEATURE_FDISK_WRITABLE
+	help
+	  Enabling this option allows you to create or change AIX disklabels.
+	  Most people can safely leave this option disabled.
+
+config FEATURE_SGI_LABEL
+	bool "Support SGI disklabels"
+	default n
+	depends on FDISK && FEATURE_FDISK_WRITABLE
+	help
+	  Enabling this option allows you to create or change SGI disklabels.
+	  Most people can safely leave this option disabled.
+
+config FEATURE_SUN_LABEL
+	bool "Support SUN disklabels"
+	default n
+	depends on FDISK && FEATURE_FDISK_WRITABLE
+	help
+	  Enabling this option allows you to create or change SUN disklabels.
+	  Most people can safely leave this option disabled.
+
+config FEATURE_OSF_LABEL
+	bool "Support BSD disklabels"
+	default n
+	depends on FDISK && FEATURE_FDISK_WRITABLE
+	help
+	  Enabling this option allows you to create or change BSD disklabels
+	  and define and edit BSD disk slices.
+
+config FEATURE_FDISK_ADVANCED
+	bool "Support expert mode"
+	default n
+	depends on FDISK && FEATURE_FDISK_WRITABLE
+	help
+	  Enabling this option allows you to do terribly unsafe things like
+	  define arbitrary drive geometry, move the beginning of data in a
+	  partition, and similarly evil things.  Unless you have a very good
+	  reason you would be wise to leave this disabled.
+
+config FREERAMDISK
+	bool "freeramdisk"
+	default n
+	help
+	  Linux allows you to create ramdisks.  This utility allows you to
+	  delete them and completely free all memory that was used for the
+	  ramdisk.  For example, if you boot Linux into a ramdisk and later
+	  pivot_root, you may want to free the memory that is allocated to the
+	  ramdisk.  If you have no use for freeing memory from a ramdisk, leave
+	  this disabled.
+
+config FSCK_MINIX
+	bool "fsck_minix"
+	default n
+	help
+	  The minix filesystem is a nice, small, compact, read-write filesystem
+	  with little overhead.  It is not a journaling filesystem however and
+	  can experience corruption if it is not properly unmounted or if the
+	  power goes off in the middle of a write.  This utility allows you to
+	  check for and attempt to repair any corruption that occurs to a minix
+	  filesystem.
+
+config MKFS_MINIX
+	bool "mkfs_minix"
+	default n
+	help
+	  The minix filesystem is a nice, small, compact, read-write filesystem
+	  with little overhead.  If you wish to be able to create minix filesystems
+	  this utility will do the job for you.
+
+comment "Minix filesystem support"
+	depends on FSCK_MINIX || MKFS_MINIX
+
+config FEATURE_MINIX2
+	bool "Support Minix fs v2 (fsck_minix/mkfs_minix)"
+	default y
+	depends on FSCK_MINIX || MKFS_MINIX
+	help
+	  If you wish to be able to create version 2 minix filesystems, enable this.
+	  If you enabled 'mkfs_minix' then you almost certainly want to be using the
+	  version 2 filesystem support.
+
+config GETOPT
+	bool "getopt"
+	default n
+	help
+	  The getopt utility is used to break up (parse) options in command
+	  lines to make it easy to write complex shell scripts that also check
+	  for legal (and illegal) options.  If you want to write horribly
+	  complex shell scripts, or use some horribly complex shell script
+	  written by others, this utility may be for you.  Most people will
+	  wisely leave this disabled.
+
+config HEXDUMP
+	bool "hexdump"
+	default n
+	help
+	  The hexdump utility is used to display binary data in a readable
+	  way that is comparable to the output from most hex editors.
+
+config HWCLOCK
+	bool "hwclock"
+	default n
+	help
+	  The hwclock utility is used to read and set the hardware clock
+	  on a system.  This is primarily used to set the current time on
+	  shutdown in the hardware clock, so the hardware will keep the
+	  correct time when Linux is _not_ running.
+
+config FEATURE_HWCLOCK_LONG_OPTIONS
+	bool "Support long options (--hctosys,...)"
+	default n
+	depends on HWCLOCK && GETOPT_LONG
+	help
+	  By default, the hwclock utility only uses short options.  If you
+	  are overly fond of its long options, such as --hctosys, --utc, etc)
+	  then enable this option.
+
+config FEATURE_HWCLOCK_ADJTIME_FHS
+	bool "Use FHS /var/lib/hwclock/adjtime"
+	default y
+	depends on HWCLOCK
+	help
+	  Starting with FHS 2.3, the adjtime state file is supposed to exist
+	  at /var/lib/hwclock/adjtime instead of /etc/adjtime.  If you wish
+	  to use the FHS behavior, answer Y here, otherwise answer N for the
+	  classic /etc/adjtime path.
+
+	  http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
+
+config IPCRM
+	bool "ipcrm"
+	default n
+	select FEATURE_SUID
+	help
+	  The ipcrm utility allows the removal of System V interprocess
+	  communication (IPC) objects and the associated data structures
+	  from the system.
+
+config IPCS
+	bool "ipcs"
+	default n
+	select FEATURE_SUID
+	help
+	  The ipcs utility is used to provide information on the currently
+	  allocated System V interprocess (IPC) objects in the system.
+
+config LOSETUP
+	bool "losetup"
+	default n
+	help
+	  losetup is used to associate or detach a loop device with a regular
+	  file or block device, and to query the status of a loop device.  This
+	  version does not currently support enabling data encryption.
+
+config MDEV
+	bool "mdev"
+	default n
+	help
+	  mdev is a mini-udev implementation for dynamically creating device
+	  nodes in the /dev directory.
+
+	  For more information, please see docs/mdev.txt
+
+config FEATURE_MDEV_CONF
+	bool "Support /etc/mdev.conf"
+	default n
+	depends on MDEV
+	help
+	  Add support for the mdev config file to control ownership and
+	  permissions of the device nodes.
+
+	  For more information, please see docs/mdev.txt
+
+config FEATURE_MDEV_EXEC
+	bool "Support command execution at device addition/removal"
+	default n
+	depends on FEATURE_MDEV_CONF
+	help
+	  This adds support for an optional field to /etc/mdev.conf for
+	  executing commands when devices are created/removed.
+
+	  For more information, please see docs/mdev.txt
+
+config FEATURE_MDEV_LOAD_FIRMWARE
+	bool "Support loading of firmwares"
+	default n
+	depends on MDEV
+	help
+	  Some devices need to load firmware before they can be usable.
+
+	  These devices will request userspace look up the files in
+	  /lib/firmware/ and if it exists, send it to the kernel for
+	  loading into the hardware.
+
+config MKSWAP
+	bool "mkswap"
+	default n
+	help
+	  The mkswap utility is used to configure a file or disk partition as
+	  Linux swap space.  This allows Linux to use the entire file or
+	  partition as if it were additional RAM, which can greatly increase
+	  the capability of low-memory machines.  This additional memory is
+	  much slower than real RAM, but can be very helpful at preventing your
+	  applications being killed by the Linux out of memory (OOM) killer.
+	  Once you have created swap space using 'mkswap' you need to enable
+	  the swap space using the 'swapon' utility.
+
+config FEATURE_MKSWAP_V0
+	bool "version 0 support"
+	default n
+	depends on MKSWAP
+#	depends on MKSWAP && DEPRECATED
+	help
+	  Enable support for the old v0 style.
+	  If your kernel is older than 2.1.117, then v0 support is the
+	  only option.
+
+config MORE
+	bool "more"
+	default n
+	help
+	  more is a simple utility which allows you to read text one screen
+	  sized page at a time.  If you want to read text that is larger than
+	  the screen, and you are using anything faster than a 300 baud modem,
+	  you will probably find this utility very helpful.  If you don't have
+	  any need to reading text files, you can leave this disabled.
+
+config FEATURE_USE_TERMIOS
+	bool "Use termios to manipulate the screen"
+	default y
+	depends on MORE
+	help
+	  This option allows utilities such as 'more' and 'top' to determine
+	  the size of the screen.  If you leave this disabled, your utilities
+	  that display things on the screen will be especially primitive and
+	  will be unable to determine the current screen size, and will be
+	  unable to move the cursor.
+
+config MOUNT
+	bool "mount"
+	default n
+	help
+	  All files and filesystems in Unix are arranged into one big directory
+	  tree.  The 'mount' utility is used to graft a filesystem onto a
+	  particular part of the tree.  A filesystem can either live on a block
+	  device, or it can be accessible over the network, as is the case with
+	  NFS filesystems.  Most people using BusyBox will also want to enable
+	  the 'mount' utility.
+
+config FEATURE_MOUNT_NFS
+	bool "Support mounting NFS file systems"
+	default n
+	depends on MOUNT
+	select FEATURE_HAVE_RPC
+	select FEATURE_SYSLOG
+	help
+	  Enable mounting of NFS file systems.
+
+config FEATURE_MOUNT_CIFS
+	bool "Support mounting CIFS/SMB file systems"
+	default n
+	depends on MOUNT
+	help
+	  Enable support for samba mounts.
+
+config FEATURE_MOUNT_FLAGS
+	depends on MOUNT
+	bool "Support lots of -o flags in mount"
+	default y
+	help
+	  Without this, mount only supports ro/rw/remount.  With this, it
+	  supports nosuid, suid, dev, nodev, exec, noexec, sync, async, atime,
+	  noatime, diratime, nodiratime, loud, bind, move, shared, slave,
+	  private, unbindable, rshared, rslave, rprivate, and runbindable.
+
+config FEATURE_MOUNT_FSTAB
+	depends on MOUNT
+	bool "Support /etc/fstab and -a"
+	default y
+	help
+	  Support mount all and looking for files in /etc/fstab.
+
+config PIVOT_ROOT
+	bool "pivot_root"
+	default n
+	help
+	  The pivot_root utility swaps the mount points for the root filesystem
+	  with some other mounted filesystem.  This allows you to do all sorts
+	  of wild and crazy things with your Linux system and is far more
+	  powerful than 'chroot'.
+
+	  Note: This is for initrd in linux 2.4.  Under initramfs (introduced
+	  in linux 2.6) use switch_root instead.
+
+config RDATE
+	bool "rdate"
+	default n
+	help
+	  The rdate utility allows you to synchronize the date and time of your
+	  system clock with the date and time of a remote networked system using
+	  the RFC868 protocol, which is built into the inetd daemon on most
+	  systems.
+
+config READPROFILE
+	bool "readprofile"
+	default n
+	help
+	  This allows you to parse /proc/profile for basic profiling.
+
+config SETARCH
+	bool "setarch"
+	default n
+	help
+	  The linux32 utility is used to create a 32bit environment for the
+	  specified program (usually a shell).  It only makes sense to have
+	  this util on a system that supports both 64bit and 32bit userland
+	  (like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
+
+config SWAPONOFF
+	bool "swaponoff"
+	default n
+	help
+	  This option enables both the 'swapon' and the 'swapoff' utilities.
+	  Once you have created some swap space using 'mkswap', you also need
+	  to enable your swap space with the 'swapon' utility.  The 'swapoff'
+	  utility is used, typically at system shutdown, to disable any swap
+	  space.  If you are not using any swap space, you can leave this
+	  option disabled.
+
+config SWITCH_ROOT
+	bool "switch_root"
+	default n
+	help
+	  The switch_root utility is used from initramfs to select a new
+	  root device.  Under initramfs, you have to use this instead of
+	  pivot_root.  (Stop reading here if you don't care why.)
+
+	  Booting with initramfs extracts a gzipped cpio archive into rootfs
+	  (which is a variant of ramfs/tmpfs).  Because rootfs can't be moved
+	  or unmounted*, pivot_root will not work from initramfs.  Instead,
+	  switch_root deletes everything out of rootfs (including itself),
+	  does a mount --move that overmounts rootfs with the new root, and
+	  then execs the specified init program.
+
+	  * Because the Linux kernel uses rootfs internally as the starting
+	  and ending point for searching through the kernel's doubly linked
+	  list of active mount points.  That's why.
+
+config UMOUNT
+	bool "umount"
+	default n
+	help
+	  When you want to remove a mounted filesystem from its current mount point,
+	  for example when you are shutting down the system, the 'umount' utility is
+	  the tool to use.  If you enabled the 'mount' utility, you almost certainly
+	  also want to enable 'umount'.
+
+config FEATURE_UMOUNT_ALL
+	bool "umount -a option"
+	default n
+	depends on UMOUNT
+	help
+	  Support -a option to unmount all currently mounted filesystems.
+
+comment "Common options for mount/umount"
+	depends on MOUNT || UMOUNT
+
+config FEATURE_MOUNT_LOOP
+	bool "Support loopback mounts"
+	default n
+	depends on MOUNT || UMOUNT
+	help
+	  Enabling this feature allows automatic mounting of files (containing
+	  filesystem images) via the linux kernel's loopback devices.  The mount
+	  command will detect you are trying to mount a file instead of a block
+	  device, and transparently associate the file with a loopback device.
+	  The umount command will also free that loopback device.
+
+	  You can still use the 'losetup' utility (to manually associate files
+	  with loop devices) if you need to do something advanced, such as
+	  specify an offset or cryptographic options to the loopback device.
+	  (If you don't want umount to free the loop device, use "umount -D".)
+
+config FEATURE_MTAB_SUPPORT
+	bool "Support for the old /etc/mtab file"
+	default n
+	depends on MOUNT || UMOUNT
+	help
+	  Historically, Unix systems kept track of the currently mounted
+	  partitions in the file "/etc/mtab".  These days, the kernel exports
+	  the list of currently mounted partitions in "/proc/mounts", rendering
+	  the old mtab file obsolete.  (In modern systems, /etc/mtab should be
+	  a symlink to /proc/mounts.)
+
+	  The only reason to have mount maintain an /etc/mtab file itself is if
+	  your stripped-down embedded system does not have a /proc directory.
+	  If you must use this, keep in mind it's inherently brittle (for
+	  example a mount under chroot won't update it), can't handle modern
+	  features like separate per-process filesystem namespaces, requires
+	  that your /etc directory be writeable, tends to get easily confused
+	  by --bind or --move mounts, won't update if you rename a directory
+	  that contains a mount point, and so on.  (In brief: avoid.)
+
+	  About the only reason to use this is if you've removed /proc from
+	  your kernel.
+
+endmenu
+
Index: drbl_ui/backup/test_busybox/busybox-1.7.2/util-linux/Kbuild
===================================================================
--- drbl_ui/backup/test_busybox/busybox-1.7.2/util-linux/Kbuild	(revision 20)
+++ drbl_ui/backup/test_busybox/busybox-1.7.2/util-linux/Kbuild	(revision 20)
@@ -0,0 +1,32 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_DMESG)		+=dmesg.o
+lib-$(CONFIG_FBSET)		+=fbset.o
+lib-$(CONFIG_FDFLUSH)		+=freeramdisk.o
+lib-$(CONFIG_FDFORMAT)		+=fdformat.o
+lib-$(CONFIG_FDISK)		+=fdisk.o
+lib-$(CONFIG_FREERAMDISK)	+=freeramdisk.o
+lib-$(CONFIG_FSCK_MINIX)	+=fsck_minix.o
+lib-$(CONFIG_GETOPT)		+=getopt.o
+lib-$(CONFIG_HEXDUMP)		+=hexdump.o
+lib-$(CONFIG_HWCLOCK)		+=hwclock.o
+lib-$(CONFIG_IPCRM)		+=ipcrm.o
+lib-$(CONFIG_IPCS)		+=ipcs.o
+lib-$(CONFIG_LOSETUP)		+=losetup.o
+lib-$(CONFIG_MDEV)		+=mdev.o
+lib-$(CONFIG_MKFS_MINIX)	+=mkfs_minix.o
+lib-$(CONFIG_MKSWAP)		+=mkswap.o
+lib-$(CONFIG_MORE)		+=more.o
+lib-$(CONFIG_MOUNT)		+=mount.o
+lib-$(CONFIG_PIVOT_ROOT)	+=pivot_root.o
+lib-$(CONFIG_RDATE)		+=rdate.o
+lib-$(CONFIG_READPROFILE)	+=readprofile.o
+lib-$(CONFIG_SETARCH)		+=setarch.o
+lib-$(CONFIG_SWAPONOFF)		+=swaponoff.o
+lib-$(CONFIG_SWITCH_ROOT)	+=switch_root.o
+lib-$(CONFIG_UMOUNT)		+=umount.o
Index: drbl_ui/backup/wwWizard.py
===================================================================
--- drbl_ui/backup/wwWizard.py	(revision 20)
+++ drbl_ui/backup/wwWizard.py	(revision 20)
@@ -0,0 +1,2875 @@
+import  wx
+import  wx.wizard as wiz
+import	sys
+import	os
+import	gettext
+import	string
+import	time
+from wx.lib.mixins.listctrl import CheckListCtrlMixin
+import  wx.lib.filebrowsebutton as filebrowse
+
+cat = gettext.GNUTranslations(open(sys.argv[1]))
+_ = cat.gettext
+
+global FinalArgs
+FinalArgs = []
+for i in range(0,37):
+    FinalArgs.insert(i,'')
+#FinalArgs = ['','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''] 
+#global PXE_CFG
+#PXE_CFG = []
+global Labels
+Labels = []
+
+#----------------------------------------------------------------------
+ClonezillaStartSaveArgs = {
+1: ("-q", _('msg_ocs_param_q')),
+2: ("-c", _('msg_ocs_param_c')),
+3: ("-nogui", _('msg_ocs_param_nogui')),
+4: ("-a", _('msg_ocs_param_a')),
+5: ("-f", _('msg_ocs_param_f')),
+6: ("-s", _('msg_ocs_param_s')),
+7: ("-ntfs-ok", _('msg_ocs_param_notfs_ok')),
+}
+
+#----------------------------------------------------------------------
+ClonezillaStartRestoreArgs = {
+1: ("-g auto", _('msg_ocs_param_g_auto')),
+2: ("-x", _('msg_ocs_param_x')),
+3: ("-brdcst", _('msg_ocs_param_broadcast')),
+4: ("-v", _('msg_ocs_param_v')),
+5: ("-nogui", _('msg_ocs_param_nogui')),
+6: ("-c", _('msg_ocs_param_c')),
+7: ("-u", _('msg_ocs_param_u')),
+8: ("-t", _('msg_ocs_param_t')),
+9: ("-j0", _('msg_ocs_param_j0')),
+10: ("-ns", _('msg_ocs_param_ns')),
+11: ("-k", _('msg_ocs_param_k')),
+12: ("-r", _('msg_ocs_param_r')),
+13: ("-e", _('msg_ocs_param_e')),
+14: ("-f", _('msg_ocs_param_f')),
+15: ("-s", _('msg_ocs_param_s')),
+16: ("-a", _('msg_ocs_param_a')),
+17: ("-o0", _('msg_ocs_param_o0')),
+18: ("-o1", _('msg_ocs_param_o1')),
+19: ("-hn0", _('msg_ocs_param_hn0')),
+20: ("-hn1", _('msg_ocs_param_hn1')),
+}
+
+#----------------------------------------------------------------------
+class CSSCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartSaveArgs[data][0]
+        if flag:
+	    FinalArgs[index+3] = arg
+        else:
+	    FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+class CSRCheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.log = log
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    # this is called by the base class when an item is checked/unchecked
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = ClonezillaStartRestoreArgs[data][0]
+        if flag:
+	    if index == 19:
+		FinalArgs[index+4] = arg
+	    else:
+		FinalArgs[index+3] = arg
+        else:
+	    if index == 19:
+		FinalArgs[index+4] = ''
+	    else:
+		FinalArgs[index+3] = ''
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class WizardBasePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SetAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_select_all_clients_or_select_part_them'), pos=(10,60), size=(400,100), style=wx.TE_MULTILINE)
+	wx.StaticText(self, -1, _('msg_set_all_clients_des'), pos=(10,80), size=(400,100), style=wx.TE_MULTILINE)
+	ox = ['Yes', 'No']
+	self.rb = wx.RadioBox(self, -1, _('msg_set_all_clients'), (10,150), (250,75), ox, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+	self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.rb)
+	FinalArgs[1] = '-nl'
+
+    def EvtRadioBox(self, event):
+	if event.GetSelection() == 0:
+	    FinalArgs[1] = '-nl'
+	if event.GetSelection() == 1:
+	    FinalArgs[1] = '-h'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def GetNext(self):
+	next = self.next
+	if self.rb.GetSelection()==0:
+	    next = next.GetNext()
+        return next
+
+#----------------------------------------------------------------------
+class SelectOneClientPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.selected_hosts = []
+        self.selected_clients = ''
+        self.lenghth = 0
+        self.filename_temp = []
+
+        file = open("/home/chris/ip_list", "r")
+        ip_list = file.read()
+        tokens = ("%s" % ip_list).split()
+        self.lenghth = len(tokens)
+        for i in range(0,len(tokens)):
+                self.selected_hosts.insert(len(tokens),"")
+                i = i+1
+        file.close()
+
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,590),
+                tokens, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[1] = '-h'
+	FinalArgs[2] = "\"" + tokens[0] + "\""
+
+    def EvtRadioBox(self, event):
+	FinalArgs[2] = ""
+	FinalArgs[2] = "\"" + event.GetString() + "\""
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        return next
+
+    def GetPrev(self):
+	FinalArgs[1] = ''
+	FinalArgs[2] = ''
+        return self.prev
+
+#----------------------------------------------------------------------
+class SelectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	global PXE_CFG
+	PXE_CFG = []
+	self.SelectedClientsArray = []
+	self.SelectedClientsStr = ''
+	self.fuse_next = self.fuse_prev = 0
+	
+        AllClientsArray = open('/home/chris/ip_list').read().split()
+        self.lb = wx.CheckListBox(self, -1, (10,50), (470,250), AllClientsArray)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, self.lb)
+        self.lb.SetSelection(0)
+
+    def EvtCheckListBox(self, event):
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+	    self.SelectedClientsArray.append(label)
+        if not (self.lb.IsChecked(index)):
+	    self.SelectedClientsArray.remove(label)
+        self.lb.SetSelection(index)    #so that (un)checking also selects (moves the highlight)
+	self.SelectedClientsStr = ''
+	PXE_CFG = []
+	for x in self.SelectedClientsArray:
+	    self.SelectedClientsStr = x + ' ' + self.SelectedClientsStr
+	    SinglePXECfgFileName = string.upper('%x' % int(x.split('.')[0],10) + '%x' % int(x.split('.')[1],10) + '%x' % int(x.split('.')[2],10) + '%x' % int(x.split('.')[3],10))
+	    PXE_CFG.append(SinglePXECfgFileName)
+        self.SelectedClientsStr = '\"' + self.SelectedClientsStr + '\"'
+	#print self.SelectedClientsStr
+	#print PXE_CFG[:]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	command = ''
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if FinalArgs[1] == '-nl':
+                FinalArgs[2] = ''
+                clients_pxe_cfg_filename = ''
+                PXE_CFG = []
+	    elif (self.SelectedClientsStr == '\"\"') or (self.SelectedClientsStr == ''):
+	        war = wx.MessageDialog(self, 'YOU MUST CHOOSE AT LEAST ONE!!', 'WARNNING!!', wx.OK|wx.ICON_INFORMATION)
+                war.ShowModal()
+                war.Destroy()
+                return self
+	    else:
+		FinalArgs[2] = self.SelectedClientsStr
+		#print FinalArgs[2]
+	    if (FinalArgs[3] == 'remote-linux-gra') or (FinalArgs[3] == 'remote-linux-txt') or (FinalArgs[3] == 'terminal') or (FinalArgs[3] == 'remote-memtest') or (FinalArgs[3] == 'remote-fdos'):
+		for i in range(0,4):
+		    if FinalArgs[i] != '':
+			command = command + FinalArgs[i] + ' '
+		FinalCommand.SetLabel('%s' % command)
+		CommandLog.WriteText(os.popen('sudo %s' % command).read())
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_prev = 0
+
+        ModeList = [_('msg_clonezilla_save_disk'), _('msg_clonezilla_save_parts')]
+        rb = wx.RadioBox(
+                self, -1, _('msg_choose_mode'), (35, 50), (260,90),
+                ModeList, 1, wx.RA_SPECIFY_COLS
+                )
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[12] = 'startdisk'
+	FinalArgs[13] = 'save'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+                FinalArgs[12] = 'startdisk'
+		FinalArgs[13] = 'save'
+        if event.GetInt() == 1:
+                FinalArgs[12] = 'startparts'
+		FinalArgs[13] = 'save'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+	    prev = self.prev
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+	global CSSP2rb
+
+        choice = [_('msg_now_input_in_server'), _('msg_later_input_in_client')]
+        CSSP2rb = wx.RadioBox(self, -1, _('msg_ask_if_input_save_image_name_in_server'), (35,50), (290,150), choice, 1, wx.RA_SPECIFY_COLS)
+        CSSP2rb.SetSelection(0)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_next = self.fuse_next + 1
+	next = self.next
+	if self.fuse_next == 2:
+	    if CSSP2rb.GetSelection() == 1:
+		next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global CSSP2rb
+	self.fuse_next = self.fuse_next + 1
+	self.fuse_prev = 0
+	if self.fuse_next == 2:
+	    if CSSP2rb.GetSelection() == 1:
+                FinalArgs[14] = ''
+                FinalArgs[15] = ''
+		#print ('FinalArgs[14] is %s, FinalArgs[15] is %s' % (FinalArgs[14], FinalArgs[15]))
+	    elif self.text_img.GetValue() == '' or self.text_dev.GetValue() == '':
+		warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+		warnning.ShowModal()
+		warnning.Destroy()
+		return self
+	    else:
+	        FinalArgs[14] = self.text_img.GetValue()
+	        FinalArgs[15] = self.text_dev.GetValue()
+	        #print ('FinalArgs[14] is %s, FinalArgs[15] is %s' % (FinalArgs[14], FinalArgs[15]))
+	return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        self.list = CSSCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))	#not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)	#not translated
+
+        for key, data in ClonezillaStartSaveArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+	self.fuse_prev = self.fuse_prev + 1
+	prev = self.prev
+	if self.fuse_prev == 1:
+	    if FinalArgs[14] == '' and FinalArgs[15] == '':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[9] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            FinalArgs[9] = '-p choose'
+        if event.GetSelection() == 1:
+            FinalArgs[9] = '-p true'
+        if event.GetSelection() == 2:
+            FinalArgs[9] = '-p poweroff'
+        if event.GetSelection() == 3:
+            FinalArgs[9] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [ _('msg_ocs_param_z0'), _('msg_ocs_param_z1'), _('msg_ocs_param_z2'), _('msg_ocs_param_z3')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (340,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+	FinalArgs[10] = '-z3'
+	self.fuse_next = 0
+	self.command = ''
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[10] = '-z0'
+        if event.GetSelection() == 1:
+                FinalArgs[10] = '-z1'
+        if event.GetSelection() == 2:
+                FinalArgs[10] = '-z2'
+        if event.GetSelection() == 3:
+                FinalArgs[10] = '-z3'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+	    if FinalArgs[1] == '-nl':
+		FinalArgs[1] = ''
+            for i in range(0,20):
+                if FinalArgs[i] != '':
+                    self.command = self.command + FinalArgs[i] + ' '
+	    file = open('tmp.log','w')
+	    os.system('sudo %s > tmp.log' % self.command)
+	    time.sleep(6)
+	    file.close()
+	    file = open('tmp.log')
+	    while True:
+		line = file.readline()
+		if len(line) == 0: # Zero length indicates EOF
+        	    break
+		command_log = command_log + line
+	    tc.WriteText('%s' % command_log)
+	    file.close()
+	    os.remove('tmp.log')
+	return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0	
+
+        ModeList = [_('msg_clonezilla_restore_disk'), _('msg_clonezilla_restore_parts')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+        FinalArgs[33] = 'startdisk'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[33] = 'startdisk'
+        if event.GetInt() == 1:
+            FinalArgs[33] = 'startparts'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    print ('ClonezillaRestorePage1: FinalArgs[33] is %s' % FinalArgs[33])
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            if FinalArgs[1] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        self.list = CSRCheckListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        	       #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT) #not translated
+
+        for key, data in ClonezillaStartRestoreArgs.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if not (self.list.IsChecked(18) or self.list.IsChecked(19)):
+	        next = next.GetNext()
+	        next = next.GetNext()
+	    print ('ClonezillaRestorePage2: arguments are : %s' % FinalArgs[3:24])
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self,-1,_('msg_write_MS_WIN_is_necessary'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        wx.StaticText(self, -1, _('msg_What_the_win_hostname_prefix'), (5, 80))
+        self.text = wx.TextCtrl(self, -1, "PC", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if FinalArgs[21] == '-hn0':
+                FinalArgs[22] = self.text.GetValue()
+            else:
+                FinalArgs[22] = ''
+            if FinalArgs[23] == '-hn1':
+                FinalArgs[24] = self.text.GetValue()
+            else:
+                FinalArgs[24] = ''
+	    print ('ClonezillaRestorePage4 : FinalArgs[21-24] are %s' % FinalArgs[21:25])
+	    #print ('FinalArgs[22] is %s, FinalArgs[24] is %s' % (FinalArgs[22], FinalArgs[24]))
+        return self.next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,150), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[25] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[25] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[25] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[25] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    print ('ClonezillaRestorePage5 : FinalArgs[25](-y) is %s' % FinalArgs[25])
+        return self.next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[21] == '' and FinalArgs[23] == '':
+	        prev = prev.GetPrev()
+	        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_prev = self.fuse_next = 0
+	self.command = ''
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        FinalArgs[26] = '-p reboot'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[26] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[26] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[26] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[26] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		if FinalArgs[1] == '-nl':
+		    FinalArgs[1] = ''
+		FinalArgs[27] = FinalArgs[29] = ''
+		FinalArgs[34] = 'restore'
+                for i in range(0,37):
+                    if FinalArgs[i] != '':
+                        self.command = self.command + FinalArgs[i] + ' '
+		print ('ClonezillaRestorePage6 : FinalArgs[26] (-z) is %s' % FinalArgs[26])
+		print ('FinalCommands : %s' % self.command)
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % self.command)
+                time.sleep(6)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+                tc.WriteText('%s' % command_log)
+                file.close()
+                os.remove('tmp.log')
+		#tc.WriteText(os.popen('sudo %s' % self.command).read())
+		for i in range(0,8):
+		    next = next.GetNext()
+	    else:
+	        print ('ClonezillaRestorePage6 : FinalArgs[26] (-z) is %s' % FinalArgs[26])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[34] = 'multicast_restore'
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        wx.StaticText(self, -1, _('msg_choose_the_image_to_restore'), (5,80))
+        self.fbb = filebrowse.FileBrowseButton(self, -1, pos=(50,150), size=(350, -1), buttonText='browse', 
+toolTip='Enter the img name or click browse button to choose img', fileMask='*.img', changeCallback = self.fbbCallback)
+
+    def fbbCallback(self, evt):
+        FinalArgs[35] = evt.GetString()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		FinalArgs[35] = ''
+		next = next.GetNext()
+		print ('ClonezillaRestorePage7 : FinalArgs[9] = -u')
+	    elif FinalArgs[35] == '':
+                warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                warnning.ShowModal()
+                warnning.Destroy()
+		return self			
+	    elif FinalArgs[33] == 'startparts':
+	        next = next.GetNext()
+		print ('ClonezillaRestorePage7 : FinalArgs[33] = startparts')
+	    print ('ClonezillaRestorePage7 : FinalArgs[35] is %s' % FinalArgs[35])
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8a(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        wx.StaticText(self, -1, _('msg_choose_the_disks_to_restore'), (5,80))
+        self.text = wx.TextCtrl(self, -1, "sda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		next = next.GetNext()
+		FinalArgs[36] = ''
+		print ('ClonezillaRestorePage8a : FinalArgs[9] = -u')
+	    elif FinalArgs[33] == 'startdisk':
+	        if self.text.GetValue() == '':
+                    warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                    warnning.ShowModal()
+                    warnning.Destroy()
+                    return self
+	        else:
+	            FinalArgs[36] = self.text.GetValue()
+	            next = next.GetNext()
+		    print ('ClonezillaRestorePage8a : FinalArgs[33] = startdisk, FinalArgs[36] is %s' % FinalArgs[36])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[36] = ''
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage8b(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        wx.StaticText(self, -1, _('msg_choose_the_parts_to_restore'), (5,80))
+        self.text = wx.TextCtrl(self, -1, "sda", (5, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[9] == '-u':
+		next = next.GetNext()
+		FinalArgs[36] = ''
+		print ('ClonezillaRestorePage8b : FinalArgs[9] = -u')
+	    elif FinalArgs[33] == 'startparts':
+	        if self.text.GetValue() == '':
+                    warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                    warnning.ShowModal()
+                    warnning.Destroy()
+                    return self
+	        else:		
+                    FinalArgs[36] = self.text.GetValue()
+	            next = next.GetNext()
+		    print ('ClonezillaRestorePage8b : FinalArgs[33] = startparts, FinalArgs[36] is %s' % FinalArgs[36])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startparts':
+		FinalArgs[36] = ''
+	        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9a(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+	self.command = ''
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_disk'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[34] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[34] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[34] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[33] == 'startdisk':
+	        if FinalArgs[9] != '-u' and FinalArgs[34] == 'restore':
+		    if FinalArgs[1] == '-nl':
+			FinalArgs[1] = ''
+		    FinalArgs[27] = FinalArgs[29] = ''
+                    for i in range(0,37):
+                        if FinalArgs[i] != '':
+                            self.command = self.command + FinalArgs[i] + ' '
+                    print ('ClonezillaStartRestorePage9a : FinalArgs[9] is empty, FinalArgs[34] is %s' % FinalArgs[34])
+		    print ('FinalCommands : %s' % self.command)
+            	    file = open('tmp.log','w')
+            	    os.system('sudo %s > tmp.log' % self.command)
+            	    time.sleep(6)
+            	    file.close()
+            	    file = open('tmp.log')
+            	    while True:
+                	line = file.readline()
+                	if len(line) == 0: # Zero length indicates EOF
+                    	    break
+                	command_log = command_log + line
+            	    tc.WriteText('%s' % command_log)
+            	    file.close()
+            	    os.remove('tmp.log')
+                    #tc.WriteText(os.popen('sudo %s' % self.command).read())
+		    for i in range(0,4):
+			next = next.GetNext()
+		else:
+		    next = next.GetNext()
+		    print ('ClonezillaStartRestorePage9a : FinalArgs[34] is %s (should be multicast_restore)' % FinalArgs[34])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startdisk':
+		FinalArgs[27] = '--clients-to-wait'
+		FinalArgs[29] = '--max-time-to-wait'
+	        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage9b(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+	self.command = ''
+
+        ModeList = [_('msg_multicast_restore'), _('msg_unicast_restore')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_mode_to_restore_parts'), (35,50), (290,150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[34] = 'multicast_restore'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[34] = 'multicast_restore'
+        if event.GetInt() == 1:
+            FinalArgs[34] = 'restore'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[33] == 'startparts':
+		if FinalArgs[9] != '-u' and FinalArgs[34] == 'restore':
+		    if FinalArgs[1] == '-nl':
+			FinalArgs[1] = ''
+		    FinalArgs[27] = FinalArgs[29] = ''
+                    for i in range(0,37):
+                        if FinalArgs[i] != '':
+                            self.command = self.command + FinalArgs[i] + ' '
+                    print ('ClonezillaStartRestorePage9b : FinalArgs[9] is empty, FinalArgs[34] is %s' % FinalArgs[34])
+		    print ('FinalCommands : %s' % self.command)
+            	    file = open('tmp.log','w')
+            	    os.system('sudo %s > tmp.log' % self.command)
+            	    time.sleep(6)
+            	    file.close()
+            	    file = open('tmp.log')
+            	    while True:
+                	line = file.readline()
+                	if len(line) == 0: # Zero length indicates EOF
+                    	    break
+                	command_log = command_log + line
+            	    tc.WriteText('%s' % command_log)
+            	    file.close()
+            	    os.remove('tmp.log')
+                    #tc.WriteText(os.popen('sudo %s' % self.command).read())
+		    for i in range(0,3):
+			next = next.GetNext()
+                else:
+                    print ('ClonezillaStartRestorePage9b : FinalArgs[34] is %s (should be multicast_restore)' % FinalArgs[34])
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    if FinalArgs[33] == 'startparts':
+		prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage10(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+
+        ModeList = [_('msg_clients_time_to_wait'), _('msg_time_to_wait'), _('msg_clients_to_wait')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35,50), (350, 150), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+	FinalArgs[27] = '--clients-to-wait'
+	FinalArgs[29] = '--max-time-to-wait'
+
+    def EvtRadioBox(self, event):
+	if event.GetInt() == 0:
+	    FinalArgs[27] = '--clients-to-wait'
+	    FinalArgs[29] = '--max-time-to-wait'
+	elif event.GetInt() == 1:
+	    FinalArgs[27] = ''
+	    FinalArgs[29] = '--max-time-to-wait'
+	elif event.GetInt() == 2:
+	    FinalArgs[27] = '--clients-to-wait'
+	    FinalArgs[29] = ''
+ 
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if FinalArgs[27] == '' and FinalArgs[29] != '':
+	        next = next.GetNext()
+		print ('ClonezillaRestorePage10 : just time-to-wait')
+	    elif FinalArgs[27] != '' and FinalArgs[29] == '':
+		print ('ClonezillaRestorePage10 : just clients-to-wait')
+	    elif FinalArgs[27] != '' and FinalArgs[29] != '':
+		print ('ClonezillaRestorePage10 : both time-to-wait and clients-to-wait')
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    #FinalArgs[27] = '--clients-to-wait'
+	    #FinalArgs[29] = '--max-time-to-wait'
+	    if FinalArgs[33] == 'startdisk':
+	  	prev = prev.GetPrev()
+        return prev
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage11(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = self.fuse_prev = 0
+	self.command = ''
+
+        wx.StaticText(self, -1, _('msg_how_many_clients_to_restore'), (20, 80))
+	self.text = wx.TextCtrl(self, -1, '5', (20, 110), size=(200, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if self.text.GetValue() == '':
+                warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                warnning.ShowModal()
+                warnning.Destroy()
+                return self
+	    if FinalArgs[27] != '' and FinalArgs[29] == '':
+	        FinalArgs[28] = self.text.GetValue()
+                if FinalArgs[1] == '-nl':
+                    FinalArgs[1] = ''
+                for i in range(0,37):
+                    if FinalArgs[i] != '':
+                        self.command = self.command + FinalArgs[i] + ' '
+                print ('FinalCommands : %s' % self.command)
+                #tc.WriteText(os.popen('sudo %s' % self.command).read())
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % self.command)
+                time.sleep(6)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+                tc.WriteText('%s' % command_log)
+                file.close()
+                os.remove('tmp.log')
+	    elif FinalArgs[27] != '' and FinalArgs[29] != '':
+		FinalArgs[28] = self.text.GetValue()	
+        return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[28] = ''
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaStartRestorePage12(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = self.fuse_prev  = 0
+        self.command = ''
+
+        wx.StaticText(self, -1, _('msg_max_time_to_wait_sec'), pos=(10, 60), size=(475, 200), style=wx.TE_MULTILINE)
+        self.text = wx.TextCtrl(self, -1, "300", (10, 150), size=(100, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	next = self.next
+	self.fuse_prev = 0
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if self.text.GetValue() == '':
+		warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+		warnning.ShowModal()
+		warnning.Destroy()
+		return self
+	    FinalArgs[30] = self.text.GetValue()
+	    if FinalArgs[1] == '-nl':
+		FinalArgs[1] = ''
+            for i in range(0,37):
+                if FinalArgs[i] != '':
+                    self.command = self.command + FinalArgs[i] + ' '
+            print ('FinalCommands : %s' % self.command)
+            #tc.WriteText(os.popen('sudo %s' % self.command).read())
+            file = open('tmp.log','w')
+            os.system('sudo %s > tmp.log' % self.command)
+            time.sleep(6)
+            file.close()
+            file = open('tmp.log')
+            while True:
+                line = file.readline()
+                if len(line) == 0: # Zero length indicates EOF
+                    break
+                command_log = command_log + line
+	    tc.WriteText('%s' % command_log)
+            file.close()
+            os.remove('tmp.log')
+	return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	self.fuse_prev = self.fuse_prev + 1
+	if self.fuse_prev == 1:
+	    FinalArgs[30] = ''
+	    if FinalArgs[27] == '':
+		prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_ocs_param_y0'), _('msg_ocs_param_y1'), _('msg_ocs_param_y2'), _('msg_ocs_param_skip')]
+        wx.StaticText(self,-1,_('msg_if_always_provide_clonezilla_srv'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 300),wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, '', (5,100), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-ocs -b'
+	FinalArgs[5] = '-y1'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[5] = '-y0'
+        elif event.GetInt() == 1:
+            FinalArgs[5] = '-y1'
+        elif event.GetInt() == 2:
+            FinalArgs[5] = '-y2'
+        elif event.GetInt() == 3:
+            FinalArgs[5] = ''
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaSelectPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ArgList = [_('msg_ocs_param_p_choose'), _('msg_ocs_param_p_true'), _('msg_ocs_param_p_poweroff'), _('msg_ocs_param_p_reboot')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (35,50), (290,150), ArgList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        self.j = 0
+        self.command = ''
+        FinalArgs[6] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+                FinalArgs[6] = '-p choose'
+        if event.GetSelection() == 1:
+                FinalArgs[6] = '-p true'
+        if event.GetSelection() == 2:
+                FinalArgs[6] = '-p poweroff'
+        if event.GetSelection() == 3:
+                FinalArgs[6] = '-p reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	FinalArgs[7] = 'select_in_client'
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+	    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaStopPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_clonezilla_stop'),(50,100))
+	self.j = 0
+	self.command = ''
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+	    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LocalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_local'),(50,100))
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+	    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class RebootPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reboot'),(50,100))
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+	    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ShutdownPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_shutdown'),(50,100))
+	self.command = ''
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+	    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class WakeOnLanPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_Wake_on_LAN'), (50,100))
+	self.command = 0
+	self.j = 0
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'Wake-on-LAN'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+	    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	ModeList = [_('msg_hide_pxe_menus'), _('msg_reveal_pxe_menus'), _('msg_setdefault_pxe_menu')]
+        rb = wx.RadioBox(self, -1, _('msg_choose_the_action'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+        FinalArgs[3] = 'hide'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+	    FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+	    FinalArgs[3] = 'hide'
+        if event.GetInt() == 1:
+            FinalArgs[0] = '/opt/drbl/bin/hide_reveal_pxe_img'
+            FinalArgs[3] = 'reveal'
+        elif event.GetInt() == 2:
+	    FinalArgs[0] = '/opt/drbl/bin/set-default-pxe-img'
+	    FinalArgs[3] = '-i'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        if FinalArgs[3] == '-i':
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.j = 0
+
+        b = wx.Button(self, -1, "Choose The Labels You Want To Reveal (MultiChoices)", (50,50))
+        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+    def OnButton(self, evt):
+	global Labels
+	Labels = []
+	index = 0
+
+        file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+        content = file.read()
+        for word in content.split():
+	    if word == 'label':
+		Labels.append(content.split()[index + 1])
+	    index = index + 1
+	file.close()
+
+        dlg = wx.MultiChoiceDialog(self, _('msg_hide_reveal'), 'Lables:', Labels)
+
+        if (dlg.ShowModal() == wx.ID_OK):
+            selections = dlg.GetSelections()
+            self.selected_labels = [Labels[x] for x in selections]
+	    #print self.selected_labels[:]
+        dlg.Destroy()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	global PXE_CFG_Files
+	next = self.next
+	self.j = self.j + 1
+	if self.j == 2:
+	    if FinalArgs[3] == 'hide' or 'reveal':
+	        if FinalArgs[1] == '-nl':
+		    for k in range(0,len(self.selected_labels[:])):
+		        os.system('sudo %s %s %s /tftpboot/nbi_img/pxelinux.cfg/default' % (FinalArgs[0], self.selected_labels[k], FinalArgs[3]))
+		        command_log = command_log + 'command : %s %s %s /tftpboot/nbi_img/pxelinux.cfg/default\n' % (FinalArgs[0], self.selected_labels[k], FinalArgs[3])
+		    os.system('sudo rm -f /tftpboot/nbi_img/pxelinux.cfg/1* 2* 3* 4* 5* 6* 7* 8* 9* 0* A* B* C* D* E* F*')
+		    command_log = command_log + 'command : rm -f /tftpboot/nbi_img/pxelinux.cfg/1* 2* 3* 4* 5* 6* 7* 8* 9* 0* A* B* C* D* E* F*\n'
+		    tc.WriteText('%s' % command_log)
+	        else:
+		    print 'pass FinalArgs[1] == -h and FinalArgs[3] == hide or reveal'
+		    for i in range(0, len(PXE_CFG_Files[:])):
+		        os.system('cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG_Files[i])
+		        command_log = command_log + 'copy /tftpboot/nbi_img/pxelinux.cfg/default to %s\n' % PXE_CFG_Files[i]
+		        for k in range(0, len(self.selected_labels[:])):
+			    os.system('%s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s' % (FinalArgs[0], self.selected_labels[k], FinalArgs[3], PXE_CFG_Files[i]))
+			    command_log = command_log + 'command : %s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s\n' % (FinalArgs[0], self.selected_labels, FinalArgs[3], PXE_CFG_Files[i])
+		    tc.WriteText('%s' % command_log)
+	    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.j = 0
+
+        b = wx.Button(self, -1, "Choose The Labels You Want To Set as Default (Single Choice)", (50,50))
+        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+    def OnButton(self, evt):
+        global Labels
+	Labels = []
+	index = 0
+
+        file = open('/tftpboot/nbi_img/pxelinux.cfg/default')
+        content = file.read()
+        for word in content.split():
+            if word == 'label':
+                Labels.append(content.split()[index + 1])
+            index = index + 1
+        file.close()
+
+        dlg = wx.SingleChoiceDialog(self, _('msg_setdefault_title'), "Lables:", Labels, wx.CHOICEDLG_STYLE)
+
+        if dlg.ShowModal() == wx.ID_OK:
+	    self.selected_label = dlg.GetStringSelection()
+        dlg.Destroy()
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	global command_log, tc
+	self.j = self.j + 1
+	if self.j == 2:
+	    if FinalArgs[1] == '-nl' and FinalArgs[3] == '-i':
+                    os.system('sudo %s %s %s /tftpboot/nbi_img/pxelinux.cfg/default' % (FinalArgs[0], self.selected_label, FinalArgs[3]))
+		    command_log = command_log + 'command : %s %s %s /tftpboot/nbi_img/pxelinux.cfg/default' % (FinalArgs[0], self.selected_label, FinalArgs[3])
+                    os.system('sudo rm -f /tftpboot/nbi_img/pxelinux.cfg/1* 2* 3* 4* 5* 6* 7* 8* 9* 0* A* B* C* D* E* F*')
+		    command_log = command_log + 'command : rm -f /tftpboot/nbi_img/pxelinux.cfg/1* 2* 3* 4* 5* 6* 7* 8* 9* 0* A* B* C* D* E* F*'
+		    tc.WriteText('%s' % command_log)
+            elif FinalArgs[1] == '-h' and FinalArgs[3] == '-i':
+                for i in range(0, len(PXE_CFG_Files[:])):
+                    os.system('cp /tftpboot/nbi_img/pxelinux.cfg/default /tftpboot/nbi_img/pxelinux.cfg/%s' % PXE_CFG_Files[i])
+                    command_log = command_log + 'copy /tftpboot/nbi_img/pxelinux.cfg/default to %s\n' % PXE_CFG_Files[i]
+                    os.system('%s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s' % (FinalArgs[0], self.selected_label, FinalArgs[3], PXE_CFG_Files[i]))
+                    command_log = command_log + 'command : %s %s %s /tftpboot/nbi_img/pxelinux.cfg/%s\n' % (FinalArgs[0], self.selected_label, FinalArgs[3], PXE_CFG_Files[i])
+		    tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class SwitchPXEMenuPage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	global tc
+        tc = wx.TextCtrl(self, -1,'', pos=(35,50), size=(350, 250), style=wx.TE_MULTILINE|wx.TE_READONLY)
+
+        #self.b1 = wx.Button(self, -1, 'detail', pos=(400,250))
+        self.b2 = wx.Button(self, -1, 'command..', pos=(400,200))
+        #self.Bind(wx.EVT_BUTTON, self.OnButtonDetail, self.b1)
+        self.Bind(wx.EVT_BUTTON, self.OnButtonCommand, self.b2)
+
+    #def OnButtonDetail(self, evt):
+        #self.tc.WriteText('%s' % command_log)
+        #self.b1.Enable(False)
+
+    def OnButtonCommand(self, evt):
+	global tc
+        final_command = ''
+        for i in range(0,36):
+            if FinalArgs[i] != '':
+                final_command = final_command + FinalArgs[i] + ' '
+        tc.WriteText('%s' % final_command)
+        self.b2.Enable(False)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+#----------------------------------------------------------------------
+class DRBLModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_drbl_mode_0'), _('msg_drbl_mode_1'), _('msg_drbl_mode_2')]
+	wx.StaticText(self,-1,_('msg_drbl_mode_switch_long'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 320, 300),wx.TE_MULTILINE)
+	rb = wx.RadioBox(self, -1, '', (5,220), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)	
+	self.j = 0
+	self.command = ''
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/tune-clientdir-opt'
+	FinalArgs[1] = '-d'
+	FinalArgs[2] = '0'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+	    FinalArgs[2] = '0'
+	elif event.GetInt() == 1:
+	    FinalArgs[2] = '1'
+	elif event.GetInt() == 2:
+	    FinalArgs[2] = '2'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+            tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class ClonezillaModePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_clonezilla_mode_0'), _('msg_clonezilla_mode_1'), _('msg_clonezilla_mode_2')]
+	wx.StaticText(self,-1,_('msg_clonezilla_mode_switch_long'),wx.DLG_PNT(self, 5, 20),wx.DLG_SZE(self, 210, 200),wx.TE_MULTILINE)
+	rb = wx.RadioBox(self, -1, '', (5,205), wx.DefaultSize, ModeList, 1, wx.RA_SPECIFY_COLS)
+	self.command = ''
+	self.j = 0
+
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/tune-clientdir-opt'
+        FinalArgs[1] = '-z'
+        FinalArgs[2] = '0'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[2] = '0'
+        elif event.GetInt() == 1:
+            FinalArgs[2] = '1'
+        elif event.GetInt() == 2:
+            FinalArgs[2] = '2'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+            tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class GenTemplateFilePage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.command = ''
+	self.j = 0
+
+        wx.StaticText(self, -1, _('msg_gen_template_files'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/gen_ssi_files'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        for i in range(0,36):
+            if FinalArgs[i] != '' and self.j == 2:
+                self.command = self.command + FinalArgs[i] + ' '
+        if self.j == 2:
+            command_log = os.popen('sudo %s' % self.command).read()
+            tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class LoginSwitchPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.j = 0
+
+	ModeList = [_('msg_normal_login'), _('msg_auto_login'), _('msg_timed_login')]
+        wx.StaticText(self, -1, _('msg_login_switch'),(50,35))
+	rb = wx.RadioBox(self, -1, _('msg_choose_action'), (35, 50), (280,200), ModeList, 1, wx.RA_SPECIFY_COLS)
+	self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-login-switch'
+	FinalArgs[3] = '-n'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+	    FinalArgs[0] = '/opt/drbl/sbin/drbl-login-switch'
+	    FinalArgs[3] = '-n'
+            FinalArgs[4] = ''
+	    FinalArgs[5] = ''
+        elif event.GetInt() == 1:
+	    FinalArgs[0] = '/opt/drbl/sbin/drbl-client-switch'
+	    FinalArgs[3] = 'remote-linux-gra'
+	    FinalArgs[4] = '/opt/drbl/sbin/drbl-login-switch'
+            FinalArgs[5] = '-a'
+        elif event.GetInt() == 2:
+            FinalArgs[0] = '/opt/drbl/sbin/drbl-client-switch'
+	    FinalArgs[3] = 'remote-linux-gra'
+            FinalArgs[4] = '/opt/drbl/sbin/drbl-login-switch'
+            FinalArgs[5] = '-t'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+        global command_log, tc
+        self.j = self.j + 1
+	if self.j == 2:
+	    if FinalArgs[3] == '-n':
+		FinalArgs[1] = FinalArgs[2] = ''
+		command_log = os.popen('sudo %s %s' % (FinalArgs[0], FinalArgs[3])).read()
+		tc.WriteText('%s' % command_log)
+	    else:
+            	command_log = os.popen('sudo %s %s %s %s' % (FinalArgs[0], FinalArgs[1],FinalArgs[2],FinalArgs[3])).read()
+		tc.WriteText('%s' % command_log)
+                command_log = os.popen('sudo %s %s' % (FinalArgs[4], FinalArgs[5])).read()
+            	tc.WriteText('%s' % command_log)
+        return next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class ClientReAutoLoginPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.j = 0
+	self.command = ''
+
+        wx.StaticText(self, -1, _('msg_client_reautologin'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-client-reautologin'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        global command_log, tc
+        self.j = self.j + 1
+        if self.j == 2:
+            for i in range(0,3):
+                if FinalArgs[i] != '' and self.j == 2:
+                    self.command = self.command + FinalArgs[i] + ' '
+            command_log = os.popen('sudo %s' % self.command).read()
+            tc.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class CleanAutoLoginAccountPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	wx.StaticText(self, -1, _('msg_clean_autologin_account'),(50,100))
+	FinalArgs[0] = '/opt/drbl/sbin/drbl-clean-autologin-account'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        prev = self.prev
+        prev = prev.GetPrev()
+        return prev
+
+
+#----------------------------------------------------------------------
+class ResetAutoLoginAccountPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_reset_autologin_account'))
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-user-env-reset'
+	FinalArgs[1] = '--auto-login'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+
+#----------------------------------------------------------------------
+class SwitchDRBLServPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        ModeList = [_('msg_start_drbl_all_services'), _('msg_stop_drbl_all_services'), _('msg_restart_drbl_all_services'), _('msg_add_drbl_all_services'), _('msg_del_drbl_all_services')]
+        wx.StaticText(self, -1, _('msg_switch_drbl_service'),(50,35))
+        rb = wx.RadioBox(self, -1, _('msg_choose_action'), (35, 50), (250,200), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        FinalArgs[0] = '/opt/drbl/sbin/drbl-all-service'
+        FinalArgs[1] = 'start'
+
+    def EvtRadioBox(self, event):
+        if event.GetInt() == 0:
+            FinalArgs[1] = 'start'
+        elif event.GetInt() == 1:
+            FinalArgs[1] = 'stop'
+        elif event.GetInt() == 2:
+            FinalArgs[1] = 'restart'
+        elif event.GetInt() == 3:
+            FinalArgs[1] = 'add'
+        elif event.GetInt() == 4:
+            FinalArgs[1] = 'del'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+#----------------------------------------------------------------------
+class ReDeployPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        wx.StaticText(self, -1, _('msg_re_deploy'),(50,100))
+        FinalArgs[0] = '/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf'	
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+	return self.prev
+
+#----------------------------------------------------------------------
+class FinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	global FinalCommand, CommandLog
+
+	FinalCommand = wx.StaticText(self, -1, '', pos=(10,60), size=(400,100))
+        CommandLog = wx.TextCtrl(self, -1, '', pos=(10,100), size=(470,200), style=wx.TE_MULTILINE|wx.TE_READONLY)
+	
+    def SetNext(self, next):
+        self.next = next
+
+    def GetNext(self):
+        return self.next
+
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self, parent, id):
+        wx.Frame.__init__(self, parent, id, _('msg_nchc_title'), (250,100), (700,400), style=wx.CAPTION)
+	#wx.NO_FULL_REPAINT_ON_RESIZE
+        self.scroll = wx.ScrolledWindow(self, -1)
+	self.scroll.SetScrollbars(1, 1, 550, 400)
+
+        FunctionList = [_('msg_remote_linux_graphic'), _('msg_remote_linux_text'), _('msg_thin_client')
+		        , _('msg_remote_memtest'), _('msg_remote_fdos'), _('msg_clonezilla_start_save')
+			, _('msg_clonezilla_start_restore'), _('msg_clonezilla_selec_in_client'), _('msg_clonezilla_stop')
+			, _('msg_local'), _('msg_reboot'), _('msg_shutdown'), _('msg_Wake_on_LAN')
+			, _('msg_switch_pxe_menu'), _('msg_switch_pxe_bg_mode'), _('msg_drbl_mode_switch')
+			, _('msg_clonezilla_mode_switch'), _('msg_gen_template_files'), _('msg_login_switch')
+			, _('msg_client_reautologin'), _('msg_clean_autologin_account'), _('msg_reset_autologin_account')
+			, _('msg_switch_drbl_service'), _('msg_re_deploy'), _('msg_clean_dhcpd_lease')
+			, _('msg_regenerate_nfs_nis_nat_config')]
+        rb = wx.RadioBox(self.scroll, -1, '', (35,20), (0,0), FunctionList, 2, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.scroll.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+	self.b1 = wx.Button(self.scroll, wx.ID_OK, pos=(600, 360))      # not translated
+	self.b2 = wx.Button(self.scroll, wx.ID_EXIT, pos=(500, 360))
+	self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b1)
+	self.scroll.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.b2)
+	self.scroll.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+	    self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxGraWizard, self.b1)
+            FinalArgs[0] = '/opt/drbl/sbin/dcs'
+            FinalArgs[3] = 'remote-linux-gra'
+        if event.GetSelection() == 1:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteLinuxTxtWizard, self.b1)
+        if event.GetSelection() == 2:
+	    self.scroll.Bind(wx.EVT_BUTTON, self.TerminalWizard, self.b1)
+        if event.GetSelection() == 3:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemoteMemTestWizard, self.b1)
+        if event.GetSelection() == 4:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RemotefdosWizard, self.b1)
+        if event.GetSelection() == 5:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartSaveWizard, self.b1)
+        if event.GetSelection() == 6:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStartRestoreWizard, self.b1)
+        if event.GetSelection() == 7:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaSelectWizard, self.b1)
+        if event.GetSelection() == 8:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaStopWizard, self.b1)
+        if event.GetSelection() == 9:
+            self.scroll.Bind(wx.EVT_BUTTON, self.LocalWizard, self.b1)
+        if event.GetSelection() == 10:
+            self.scroll.Bind(wx.EVT_BUTTON, self.RebootWizard, self.b1)
+        if event.GetSelection() == 11:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ShutdownWizard, self.b1)
+        if event.GetSelection() == 12:
+            self.scroll.Bind(wx.EVT_BUTTON, self.WakeOnLANWizard, self.b1)
+        if event.GetSelection() == 13:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchPXEMenuWizard, self.b1)
+        if event.GetSelection() == 14:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchPXEModeWizard, self.b1)
+        if event.GetSelection() == 15:
+            self.scroll.Bind(wx.EVT_BUTTON, self.DRBLModeWizard, self.b1)
+        if event.GetSelection() == 16:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClonezillaModeWizard, self.b1)
+        if event.GetSelection() == 17:
+            self.scroll.Bind(wx.EVT_BUTTON, self.GenTemplateFileWizard, self.b1)
+        if event.GetSelection() == 18:
+            self.scroll.Bind(wx.EVT_BUTTON, self.LoginSwitchWizard, self.b1)
+        if event.GetSelection() == 19:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ClientReAutoLoginWizard, self.b1)
+        if event.GetSelection() == 20:
+            self.scroll.Bind(wx.EVT_BUTTON, self.CleanAutoLoginAccountWizard, self.b1)
+        if event.GetSelection() == 21:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ResetAutoLoginAccountWizard, self.b1)
+        if event.GetSelection() == 22:
+            self.scroll.Bind(wx.EVT_BUTTON, self.SwitchDRBLServWizard, self.b1)
+        if event.GetSelection() == 23:
+            self.scroll.Bind(wx.EVT_BUTTON, self.ReDeployWizard, self.b1)
+        if event.GetSelection() == 24:
+            self.scroll.Bind(wx.EVT_BUTTON, self.CleanDHCPLeaseWizard, self.b1)
+        if event.GetSelection() == 25:
+            self.scroll.Bind(wx.EVT_BUTTON, self.Regenerate3NWizard, self.b1)
+
+#----------------------------------------------------------------------
+    def OnCloseWindow(self, event):
+	self.Destroy()
+#----------------------------------------------------------------------
+    def OnCloseMe(self, event):
+	self.Close(True)
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxGraWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_linux_graphic'), pos = (350,200))
+
+	page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+	page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+	page3 = FinalPage(wizard, _('msg_done'))
+	FinalArgs[0] = '/opt/drbl/sbin/dcs'
+	FinalArgs[3] = 'remote-linux-gra'
+
+	self.page1 = page1
+	wizard.SetPageSize((500,300))
+
+	page1.SetNext(page2)
+	page2.SetPrev(page1)
+	page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+	    for i in range(0,36):
+		FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+	    
+#------------------------------Wizard Modules--------------------------
+    def RemoteLinuxTxtWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_linux_text'), pos = (350,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-linux-txt'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def TerminalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_thin_client'), pos = (350,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'terminal'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RemoteMemTestWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_memtest'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-memtest'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RemotefdosWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_fdos'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard,_('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'remote-fdos'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartSaveWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartSaveWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+	page3 = ClonezillaStartSavePage1(wizard, '')
+	page4 = ClonezillaStartSavePage2(wizard, '')
+	page5 = ClonezillaStartSavePage3(wizard, '')
+	page6 = ClonezillaStartSavePage4(wizard, '')
+	page7 = ClonezillaStartSavePage5(wizard, '')
+	page8 = ClonezillaStartSavePage6(wizard, '')
+        page9 = FinalPage(wizard,'')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+	page6.SetPrev(page5)
+	page6.SetNext(page7)
+	page7.SetPrev(page6)
+	page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+
+        if wizard.RunWizard(page1):
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStartRestoreWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaStartRestoreWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClonezillaStartRestorePage1(wizard, 'ClonezillaStartRestorePage1')
+        page4 = ClonezillaStartRestorePage2(wizard, 'ClonezillaStartRestorePage2')
+        page5 = ClonezillaStartRestorePage3(wizard, 'ClonezillaStartRestorePage3')
+        page6 = ClonezillaStartRestorePage4(wizard, 'ClonezillaStartRestorePage4')
+        page7 = ClonezillaStartRestorePage5(wizard, 'ClonezillaStartRestorePage5')
+	page8 = ClonezillaStartRestorePage6(wizard, 'ClonezillaStartRestorePage6')
+        page9 = ClonezillaStartRestorePage7(wizard, 'ClonezillaStartRestorePage7')
+	page10 = ClonezillaStartRestorePage8a(wizard, 'ClonezillaStartRestorePage8a')
+	page11 = ClonezillaStartRestorePage8b(wizard, 'ClonezillaStartRestorePage8b')
+	page12 = ClonezillaStartRestorePage9a(wizard, 'ClonezillaStartRestorePage9a')
+	page13 = ClonezillaStartRestorePage9b(wizard, 'ClonezillaStartRestorePage9b')
+	page14 = ClonezillaStartRestorePage10(wizard, 'ClonezillaStartRestorePage10')
+	page15 = ClonezillaStartRestorePage11(wizard, 'ClonezillaStartRestorePage11')
+	page16 = ClonezillaStartRestorePage12(wizard, 'ClonezillaStartRestorePage12')
+        page17 = FinalPage(wizard,'FinalPage')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+        page4.SetPrev(page3)
+        page4.SetNext(page5)
+        page5.SetPrev(page4)
+        page5.SetNext(page6)
+        page6.SetPrev(page5)
+        page6.SetNext(page7)
+        page7.SetPrev(page6)
+        page7.SetNext(page8)
+	page8.SetPrev(page7)
+	page8.SetNext(page9)
+	page9.SetPrev(page8)
+	page9.SetNext(page10)
+	page10.SetPrev(page9)
+	page10.SetNext(page11)
+	page11.SetPrev(page10)
+	page11.SetNext(page12)
+	page12.SetPrev(page11)
+	page12.SetNext(page13)
+	page13.SetPrev(page12)
+	page13.SetNext(page14)
+	page14.SetPrev(page13)
+	page14.SetNext(page15)
+	page15.SetPrev(page14)
+	page15.SetNext(page16)
+	page16.SetPrev(page15)
+	page16.SetNext(page17)
+
+        if wizard.RunWizard(page1):
+            #wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            #wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaSelectWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clonezilla_selec_in_client'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = ClonezillaSelectPage1(wizard, '')
+	page4 = ClonezillaSelectPage2(wizard, '')
+        page5 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ClonezillaStopWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_clonezilla_stop'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'clonezilla-stop'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def LocalWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_local'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'local'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def RebootWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_reboot'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'reboot'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules--------------------------
+    def ShutdownWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_shutdown'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'shutdown'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def WakeOnLANWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_Wake_on_LAN'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = FinalPage(wizard, _('msg_done'))
+        FinalArgs[0] = '/opt/drbl/sbin/dcs'
+        FinalArgs[3] = 'Wake-on-LAN'
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchPXEMenuWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_switch_pxe_menu'), pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page2 = SelectClientsPage(wizard, _('msg_select_clients'))
+        page3 = SwitchPXEMenuPage1(wizard, '')
+        page4 = SwitchPXEMenuPage2(wizard, '')
+	page5 = SwitchPXEMenuPage3(wizard, '')
+        page6 = SwitchPXEMenuPage4(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+	page4.SetPrev(page3)
+	page4.SetNext(page5)
+	page5.SetPrev(page4)
+	page5.SetNext(page6)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchPXEModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'SwitchPXEModeWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectOnePage(wizard, '')
+        page3 = SwitchPXEModePage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def DRBLModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'DRBLModeWizard', pos = (500,200))
+
+        page1 = DRBLModePage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,330))
+
+        page1.SetNext(page2)
+        #page2.SetPrev(page1)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ClonezillaModeWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ClonezillaModeWizard', pos = (500,200))
+
+        page1 = ClonezillaModePage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def GenTemplateFileWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'GenTemplateFileWizard', pos = (500,200))
+
+        page1 = GenTemplateFilePage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def LoginSwitchWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'LoginSwitchWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+	page3 = LoginSwitchPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ClientReAutoLoginWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, ' ClientReAutoLogin', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ClientReAutoLoginPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def CleanAutoLoginAccountWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'CleanAutoLoginAccount', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectOneClientPage(wizard, '')
+        page3 = CleanAutoLoginAccountPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ResetAutoLoginAccountWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ResetAutoLoginAccount', pos = (500,200))
+
+        #page1 = SetAllClientsPage(wizard, '')
+        #page2 = SelectOneClientPage(wizard, '')
+        page1 = ResetAutoLoginAccountPage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        #page2.SetPrev(page1)
+        #page2.SetNext(page3)
+        #page3.SetPrev(page2)
+        #page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def SwitchDRBLServWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'SwitchDRBLServWizard', pos = (500,200))
+
+        page1 = SwitchDRBLServPage(wizard, '')
+        page2 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def ReDeployWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'ReDeployWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = ReDeployPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def CleanDHCPLeaseWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'CleanDHCPLeaseWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = CleanDHCPLeasePage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------Wizard Modules-----------------------------
+    def Regenerate3NWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, 'Regenerate3NWizard', pos = (500,200))
+
+        page1 = SetAllClientsPage(wizard, '')
+        page2 = SelectClientsPage(wizard, '')
+        page3 = Regenerate3NPage(wizard, '')
+        page4 = FinalPage(wizard, '')
+
+        self.page1 = page1
+        wizard.SetPageSize((500,300))
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        if wizard.RunWizard(page1):
+            wx.MessageBox(_('success'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+        else:
+            wx.MessageBox(_('cancel'), "That's all folks!", wx.CENTRE | wx.NO_DEFAULT, self)
+            for i in range(0,36):
+                FinalArgs[i] = ''
+
+#------------------------------------------------------------------------
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame(parent=None, id=-1)
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/config/config.py
===================================================================
--- drbl_ui/config/config.py	(revision 20)
+++ drbl_ui/config/config.py	(revision 20)
@@ -0,0 +1,27 @@
+import  wx, sys, os, string, gettext
+import  wx.wizard as wiz
+
+cat = gettext.GNUTranslations(open('../langs/%s.mo' % os.getenv('LANG')))
+_ = cat.gettext
+
+# Example
+# ITEM ID : ('ITEM NAME', 'ITEM DESCRIBE')
+main_functions = {
+0:('remote', 'this is a test string1'),
+1:('clonezilla', 'this is a test string2'),
+2:('client_actions', 'this is a test string3'),
+3:('drbl_config', 'this is a test string4'),
+4:('others', 'this is a test string5')
+}
+
+# Example
+# ITEM ID : ('ITEM NAME', 'ITEM DESCRIBE', 'COMMAND')
+remote_functions = {
+0:('remote-linux', _('msg_remote_linux'), 'remote-linux'),
+1:('remote-linux-gra', _('msg_remote_linux_graphic'), 'remote-linux-gra'),
+2:('remote-linux-txt', _('msg_remote_linux_text'), 'remote-linux-txt'),
+3:('terminal', _('msg_thin_client'), 'terminal'),
+4:('remote-memtest', _('msg_remote_memtest'), 'remote-memtest'),
+5:('remote-fdos', _('msg_remote_fdos'), 'remote-fdos')
+}
+
Index: drbl_ui/langs/msgfmt.py
===================================================================
--- drbl_ui/langs/msgfmt.py	(revision 20)
+++ drbl_ui/langs/msgfmt.py	(revision 20)
@@ -0,0 +1,210 @@
+#! /usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+# Written by Martin v. L饖is <loewis@informatik.hu-berlin.de>
+
+"""Generate binary message catalog from textual translation description.
+
+This program converts a textual Uniforum-style message catalog (.po file) into
+a binary GNU catalog (.mo file).  This is essentially the same function as the
+GNU msgfmt program, however, it is a simpler implementation.
+
+Usage: msgfmt.py [OPTIONS] filename.po
+
+Options:
+    -o file
+    --output-file=file
+        Specify the output file to write to.  If omitted, output will go to a
+        file named filename.mo (based off the input file name).
+
+    -h
+    --help
+        Print this message and exit.
+
+    -V
+    --version
+        Display version information and exit.
+"""
+
+import sys
+import os
+import getopt
+import struct
+import array
+
+__version__ = "1.1"
+
+MESSAGES = {}
+
+
+
+
+def usage(code, msg=''):
+    print >> sys.stderr, __doc__
+    if msg:
+        print >> sys.stderr, msg
+    sys.exit(code)
+
+
+
+
+def add(id, str, fuzzy):
+    "Add a non-fuzzy translation to the dictionary."
+    global MESSAGES
+    if not fuzzy and str:
+        MESSAGES[id] = str
+
+
+
+
+def generate():
+    "Return the generated output."
+    global MESSAGES
+    keys = MESSAGES.keys()
+    # the keys are sorted in the .mo file
+    keys.sort()
+    offsets = []
+    ids = strs = ''
+    for id in keys:
+        # For each string, we need size and file offset.  Each string is NUL
+        # terminated; the NUL does not count into the size.
+        offsets.append((len(ids), len(id), len(strs), len(MESSAGES[id])))
+        ids += id + '\0'
+        strs += MESSAGES[id] + '\0'
+    output = ''
+    # The header is 7 32-bit unsigned integers.  We don't use hash tables, so
+    # the keys start right after the index tables.
+    # translated string.
+    keystart = 7*4+16*len(keys)
+    # and the values start after the keys
+    valuestart = keystart + len(ids)
+    koffsets = []
+    voffsets = []
+    # The string table first has the list of keys, then the list of values.
+    # Each entry has first the size of the string, then the file offset.
+    for o1, l1, o2, l2 in offsets:
+        koffsets += [l1, o1+keystart]
+        voffsets += [l2, o2+valuestart]
+    offsets = koffsets + voffsets
+    output = struct.pack("Iiiiiii",
+                         0x950412deL,       # Magic
+                         0,                 # Version
+                         len(keys),         # # of entries
+                         7*4,               # start of key index
+                         7*4+len(keys)*8,   # start of value index
+                         0, 0)              # size and offset of hash table
+    output += array.array("i", offsets).tostring()
+    output += ids
+    output += strs
+    return output
+
+
+
+
+def make(filename, outfile):
+    ID = 1
+    STR = 2
+
+    # Compute .mo name from .po name and arguments
+    if filename.endswith('.po'):
+        infile = filename
+    else:
+        infile = filename + '.po'
+    if outfile is None:
+        outfile = os.path.splitext(infile)[0] + '.mo'
+
+    try:
+        lines = open(infile).readlines()
+    except IOError, msg:
+        print >> sys.stderr, msg
+        sys.exit(1)
+    
+    section = None
+    fuzzy = 0
+
+    # Parse the catalog
+    lno = 0
+    for l in lines:
+        lno += 1
+        # If we get a comment line after a msgstr, this is a new entry
+        if l[0] == '#' and section == STR:
+            add(msgid, msgstr, fuzzy)
+            section = None
+            fuzzy = 0
+        # Record a fuzzy mark
+        if l[:2] == '#,' and l.find('fuzzy'):
+            fuzzy = 1
+        # Skip comments
+        if l[0] == '#':
+            continue
+        # Now we are in a msgid section, output previous section
+        if l.startswith('msgid'):
+            if section == STR:
+                add(msgid, msgstr, fuzzy)
+            section = ID
+            l = l[5:]
+            msgid = msgstr = ''
+        # Now we are in a msgstr section
+        elif l.startswith('msgstr'):
+            section = STR
+            l = l[6:]
+        # Skip empty lines
+        l = l.strip()
+        if not l:
+            continue
+        # XXX: Does this always follow Python escape semantics?
+        l = eval(l)
+        if section == ID:
+            msgid += l
+        elif section == STR:
+            msgstr += l
+        else:
+            print >> sys.stderr, 'Syntax error on %s:%d' % (infile, lno), \
+                  'before:'
+            print >> sys.stderr, l
+            sys.exit(1)
+    # Add last entry
+    if section == STR:
+        add(msgid, msgstr, fuzzy)
+
+    # Compute output
+    output = generate()
+
+    try:
+        open(outfile,"wb").write(output)
+    except IOError,msg:
+        print >> sys.stderr, msg
+                      
+
+
+
+def main():
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], 'hVo:',
+                                   ['help', 'version', 'output-file='])
+    except getopt.error, msg:
+        usage(1, msg)
+
+    outfile = None
+    # parse options
+    for opt, arg in opts:
+        if opt in ('-h', '--help'):
+            usage(0)
+        elif opt in ('-V', '--version'):
+            print >> sys.stderr, "msgfmt.py", __version__
+            sys.exit(0)
+        elif opt in ('-o', '--output-file'):
+            outfile = arg
+    # do it
+    if not args:
+        print >> sys.stderr, 'No input file given'
+        print >> sys.stderr, "Try `msgfmt --help' for more information."
+        return
+
+    for filename in args:
+        make(filename, outfile)
+
+
+if __name__ == '__main__':
+    main()
+
+
Index: drbl_ui/langs/trans_lang_to_po.py
===================================================================
--- drbl_ui/langs/trans_lang_to_po.py	(revision 20)
+++ drbl_ui/langs/trans_lang_to_po.py	(revision 20)
@@ -0,0 +1,51 @@
+import wx
+import os
+import sys
+
+i = j = k= 0
+f = open(sys.argv[1],'r')
+os.system("sudo rm -rf pofile")
+po = open(sys.argv[1]+'.po','w')
+po.write('msgid \"\"\n')
+po.write('msgstr \"\"\n')
+po.write('\"Project-Id-Version: PACKAGE VERSION\\n"\n')
+po.write('\"POT-Creation-Date: 2006-11-04 09:59+CST\\n"\n')
+po.write('\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"\n')
+po.write('\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"\n')
+po.write('\"Language-Team: LANGUAGE <LL@li.org>\\n"\n')
+po.write('\"MIME-Version: 1.0\\n"\n')
+po.write('\"Content-Type: text/plain; charset=utf8\\n"\n')
+po.write('\"Content-Transfer-Encoding: cp936\\n"\n')
+po.write('\"Generated-By: pygettext.py 1.5\\n"\n\n')
+
+tokens2=[]
+# read the lang files under dir:/opt/drbl/lang/bash/
+content = f.read()
+# read each lines, and saves everyline as a array element
+tokens = content.splitlines()
+
+for i in range(0,len(tokens)):
+    tokens2.append(tokens[i].partition('=')[0])
+    tokens2.append(tokens[i].partition('=')[2])
+
+for j in range(0,(2*(len(tokens)))):
+    if tokens2[j].startswith('#')==1:
+	tokens2[j] = ''
+    elif tokens2[j].startswith(' ')==1:
+	tokens2[j] = ''
+    if tokens2[j] != '':
+	if j == 0:
+	    po.write('msgid ')
+	    po.write('\'%s\'\n' % tokens2[0])
+	elif j == 1:
+	    po.write('msgstr ')
+	    po.write('%s\n\n' % tokens2[1])
+	elif j%2 == 0:
+	    po.write('msgid ')
+	    po.write('\'%s\'\n' % tokens2[j])
+	else:
+	    po.write('msgstr ')
+	    po.write('%s\n\n' % tokens2[j])
+
+f.close()
+po.close()
Index: drbl_ui/langs/zh_TW.UTF-8
===================================================================
--- drbl_ui/langs/zh_TW.UTF-8	(revision 20)
+++ drbl_ui/langs/zh_TW.UTF-8	(revision 20)
@@ -0,0 +1,657 @@
+#!/bin/bash
+# Written by Steven Shiau <steven@nchc.org.tw> to use in DRBL for RedHat
+# License: GPL
+#
+# Revised by T. C. Lin <tclin@mail.dfes.tpc.edu.tw> on 4/01/2004
+# Many thanks to Mr. Lin.
+
+msg_delimiter_star_line='*****************************************************'.
+msg_install_RH='在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+msg_install_MDK='在 Mandrake Linux 上安裝 DRBL 環境...'
+msg_install_DBN='在 Debian Linux 上安裝 DRBL 環境...'
+msg_install_SUSE='在 SuSE Linux 上安裝 DRBL 環境...'
+msg_OS_version='你的作業系統版本'
+msg_is_not_supported='DRBL 不支援這個版本!'
+msg_press_ctrl_c_stop='請按 Ctrl-C 來中斷程式!'
+msg_set_proxy='你要設定代理伺服器嗎?'
+msg_http_proxy_server='請輸入 HTTP 代理伺服器的位址: '
+msg_http_proxy_port='請輸入 HTTP 代理伺服器的連接埠: '
+msg_ftp_proxy_server='請輸入 FTP 代理伺服器的位址: '
+msg_ftp_proxy_port='請輸入 FTP 代理伺服器的連接埠: '
+msg_http_proxy_you_set='你設定的 HTTP 代理伺服器是: '
+msg_ftp_proxy_you_set='你設定的 FTP 代理伺服器是: '
+msg_drbl_test_option='你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+msg_drbl_unstable_option='你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+msg_drbl_extra_option='你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+msg_drbl_netinstall_option='你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+msg_firefly_option='你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+msg_serial_console_option='你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+msg_know_nothing_serial_console='如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+msg_serial_console_only='用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+msg_redirect_to_which_port='請輸入要使用的序列埠(Serial Port)?'
+msg_serial_console_speed='您的序列終端機速度是多少?'
+msg_serial_console_parameter='請輸入序列終端機的參數'
+msg_smp_clients='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+msg_smp_clients_MDK='用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+msg_smp_clients_RH="$msg_smp_clients"
+msg_install_apt='安裝 APT ...'
+msg_no_wget_get_it='沒有 wget 程式? 嘗試安裝 wget 程式...'
+msg_no_apt_get_it='沒有 apt 程式? 嘗試安裝 apt 程式...'
+msg_wget_installed_failure='未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+msg_wget_installed_successful='wget程式安裝成功!'
+msg_apt_already_installed='apt 已經安裝了. 神奇!!! 你真是優秀!'
+msg_backup_apt_sources='備份原來的 apt 來源檔(sources.list) ...'
+msg_setup_apt_sources_MDK='為 MDK 設定 apt 的來源檔(sources.list)'
+msg_enjoy_apt='現在開始享用 APT!'
+msg_clean_apt_cache='清除apt的快取檔案...'
+msg_check_apt_integrity='套件完整性檢查...'
+msg_upgrade_system_question='你是否要升級你的作業系統?'
+msg_upgrade_whole_system='升級作業系統中...'
+msg_check_installed_kernel='檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+msg_is_already_installed='已經被安裝在您的系統中...'
+msg_need_to_install_kernel='我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+msg_create_nbi_files='產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+msg_latest_kernel_for_clients='用戶端電腦使用的最新核心是'
+msg_no_drbl_script='你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+msg_create_files_for_PXELINUX='建立PXE網路開機的設定檔...'
+msg_prepare_files_for_PXE_client='備妥PXE網路開機用戶端的設定檔與印象檔...'
+msg_PXE_NOT_work='PXE 網路開機無法使用!!!'
+msg_press_enter_to_continue='按 Enter 鍵繼續...'
+msg_press_enter_to_exit="按 Enter 鍵離開."
+msg_FreeDOS_NOT_work='FreeDOS 遠端開機無法使用!!!'
+msg_no_apt_already_uninstall='找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+msg_program_stop='程式停止!'
+msg_remove_SmallLinuxs_question='如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+msg_remove_drbl_setup_question='你是否要移除DRBL這個程式?'
+msg_remove_apt_question='你是否要移除 apt ?'
+msg_remove_yum_repo_question='你是否要清除yum的來源設定檔?'
+msg_remove_urpmi_media_question='你是否要清除 urpmi的來源設定檔?'
+msg_cleaning_apt_cache='正在清除 apt 的快取檔案...'
+msg_cleaning_tftpboot_and_misc='移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+msg_uninstalling_DRBL_RH='移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_MDK='移除 Mandrake Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_DBN='移除 Debian Linux 上的 DRBL 套件中...'
+msg_uninstalling_DRBL_SUSE='移除 SuSE Linux 上的 DRBL 套件中...'
+msg_analyzing_rpm_info='分析已安裝套件資訊中... 這可能需要幾分鐘...'
+msg_failed_to_install_pkgs='安裝程式失敗，無法繼續執行!'
+msg_check_network_and_url='請檢查您的電腦和這個網址(URL)間的連線狀況：'
+msg_not_determine_OS='無法判斷 Linux 作業系統的種類與版本!!!'
+msg_enter_OS_ver='請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+msg_clean_apt_cache_RH='正在清除 apt 的快取檔案...'
+msg_install_DRBL_necesary_files='安裝 DRBL 所需之相關程式...'
+msg_select_url_path='你選擇的伺服器網址(URL)與路徑'
+msg_drbl_driver='您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+msg_smp_optimization_kernel='您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+msg_apt_optimization_question='您用戶端的電腦要使用哪個等級CPU的核心?'
+msg_optimization_level_0='0 -> 使用i386 CPU等級架構'
+msg_optimization_level_1='1 -> 使用i586 CPU等級架構'
+msg_optimization_level_2='2 -> 使用與此DRBL伺服器同等級CPU的核心'
+msg_N_note='注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+msg_different_level_machine_prompt='如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+msg_diff_arch_explain='如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+msg_not_sure_better_1='如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+msg_same_optimization='您選用與伺服器同等級的 CPU 最佳化.'
+msg_i586_optimization='你選用 i586 架構的 CPU 最佳化.'
+msg_no_optimization='你未選用 CPU 最佳化，預設使用 i386 架構.'
+msg_glibc_openssl_upgrade_question='如果 glibc 與 openssl 有較新版本，是否要升級?'
+msg_glibc_openssl_keep='0 -> 不升級 glibc 與 openssl.'
+msg_keep_glibc_upgrade_openssl='1 -> 只升級 openssl,'
+msg_upgrade_glibc_keep_openssl='2 -> 只升級 glibc,'
+msg_upgrade_glibc_openssl='3 -> 升級 glibc 與 openssl (預設),'
+msg_warning_glibc_upgrade='警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+msg_upgrade_glibc_make_you_cry='為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+msg_install_dhcp_tftp_etc='正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+msg_optimization_is_on='啟用與伺服器同等級 CPU 最佳化.'
+msg_optimization_is_off='未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+msg_install_i386_of='安裝 i386 架構的'
+msg_searching_glibc_in_ayo='在 ayo 伺服器中尋找 glibc 程式'
+msg_searching_openssl_in_ayo='在 ayo 伺服器中尋找 openssl 程式'
+msg_searching_openssl_perl_in_ayo='在 ayo 伺服器中尋找 openssl-perl 程式'
+msg_searching_pkg_in_ayo='在 ayo 伺服器中尋找可用的程式'
+msg_install_mkinitrd_net_etherboot='安裝 mkpxeinitrd-net, etherboot, partimage...'
+msg_removing_the_old='移除舊的'
+msg_creating_dev='產生用戶端電腦的設備檔案...'
+msg_get_dev='擷取設備檔案...'
+msg_clean_tmp_dev='清除設備檔案的暫存目錄...'
+msg_remove_old_nbi='移除 /tftpboot 中舊的 nbi 檔案...'
+msg_install_extra_driver='安裝額外的驅動程式...'
+msg_no_extra_driver='在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+msg_make_client_serial_console='建立用戶端序列終端機設定...'
+#
+msg_kernel_being_used='警告! 這個核心目前正在使用中: '
+msg_warning_not_to_remove='警告! 建議您最好不要移除!!!'
+msg_not_remove='請在下個步驟回答"N"!'
+#
+msg_which_ayo_repository='請選取安裝時欲使用的 ayo 伺服器:'
+msg_enter_FQDN_IP_yum_repository='請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+msg_enter_the_path_for_dir_ver_updates='請輸入該網址中，以下目錄所在的路徑'
+# RH/FC os
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_os_ayo_repository_5='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+msg_os_ayo_repository_use_existing_yum_config='4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+msg_os_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+
+# RH/FC drbl
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw. (預設)'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_ayo_repository_3='3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+msg_drbl_ayo_repository_5='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+msg_drbl_ayo_repository_enter_by_yourself='5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+
+# MDK OS
+msg_os_ayo_repository_1_mdk='1 -> mdk.linux.org.tw,'
+msg_os_ayo_repository_2_mdk='2 -> distro.ibiblio.org,'
+
+# MDK drbl
+msg_drbl_ayo_repository_1_mdk='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2_mdk='2 -> drbl.sourceforge.net,'
+
+msg_apt_not_compatible='警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+msg_do_u_want_to_remove='你要移除嗎？'
+msg_warning_apt_not_compatible_and_fail='你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+msg_rm_apt='正在移除 apt 與 libapt-pkg0...'
+msg_search_kernel_in_ayo='在 ayo 資料庫中尋找最新的'
+msg_latest_kernel_in_ayo='在 ayo 資料庫中,最新的核心是'
+msg_install_kernel_might_take_several_minutes='安裝這個核心可能需要一些時間，請耐心等候... '
+msg_latest_kernel_is_already_installed='給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+msg_error_no_drbl_kernel_in_apt='在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+msg_change_opt_from_i386_to_i586='由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+msg_change_opt_from_i586_to_i386='由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+msg_are_you_sure_run_impatient='這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+msg_run_step_by_step='很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+msg_run_drbl4imp='好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+msg_total_avail_space='系統可以提供的空間(/tftpboot與/)有'
+msg_necessary_space_setup_drbl='估計安裝DRBL需要的空間是'
+msg_total_client_no='DRBL用戶端的總數目是'
+msg_system_maybe_not_enough_space='你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+msg_logout_X_for_thin_client_gdm='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+msg_restart_X_for_thin_client_kdm='你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+msg_logout_X_for_modified_gdm_config_work='如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+msg_logout_X_for_modified_kdm_config_work='你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+msg_restart_graphic_mode_later='你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+msg_turn_on_gdm_remote_access='開放GDM遠端連線...'
+msg_gdm_remote_access_is_already_on='DRBL伺服器中的GDM遠端連線已經開啟!'
+msg_set_thin_client_mode_for_clients='正在設定終端機模式給用戶端電腦來使用...'
+msg_gdm_remote_access_is_already_off='DRBL伺服器中的GDM遠端連線已經關閉!'
+msg_disable_thin_client_mode_for_clients='關閉用戶端的終端機模式!'
+msg_turn_off_gdm_remote_access='關閉GDM遠端連線...'
+msg_kdm_remote_access_is_already_on='DRBL伺服器中的KDM遠端連線已經開啟!'
+msg_turn_off_kdm_remote_access='開放KDM遠端連線...'
+msg_kdm_remote_access_is_already_off='DRBL伺服器中的KDM遠端連線已經關閉!'
+msg_dm_in_DRBL_server='DRBL伺服器中的圖形顯示管理程式(display manager)是'
+msg_hint_for_answer='提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+msg_available_kernel='可用的核心有'
+msg_which_os_ayo_repository='請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_os_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_os_ayo_repository_1='1 -> ayo.freshrpms.net,'
+msg_os_ayo_repository_download_fedora_redhat_com='1 -> download.fedora.redhat.com,'
+msg_which_drbl_ayo_repository='請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+msg_drbl_ayo_repository_0='0 -> free.nchc.org.tw,'
+msg_drbl_ayo_repository_1='1 -> diskless.nchc.org.tw,'
+msg_drbl_ayo_repository_2='2 -> drbl.sourceforge.net,'
+msg_drbl_server_is_ready='DRBL伺服器已經就緒!'
+msg_all_set_you_can_turn_on_clients='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+msg_etherboot_5_4_is_required='如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+msg_win_fail_with_Missing_OS='如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+# drbl-script
+msg_nchc_title='NCHC - 國家高速網路與計算中心 - 台灣'
+msg_drbl_title='企鵝龍(DRBL - Diskless Remote Boot in Linux)'
+msg_switch_client_mode='切換模式'
+msg_remote_linux='用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+msg_remote_linux_graphic='用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+msg_remote_linux_text='用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+msg_thin_client='用戶端遠距開機Linux圖形介面,終端機模式'
+msg_remote_memtest='用戶端遠距開機做記憶體測試(Memtest86+)'
+msg_remote_fdos='用戶端遠距開機使用自由DOS(FreeDOS)'
+msg_clonezilla_start='啟動再生龍(clonezilla)模式'
+msg_clonezilla_stop='停止再生龍(clonezilla)模式'
+msg_netinstall='用戶端經由網路安裝Linux套件'
+msg_local='用戶端使用本機作業系統開機'
+msg_reboot='現在重新啟動用戶端電腦'
+msg_shutdown='現在關閉用戶端電腦'
+msg_Wake_on_LAN='現在利用Wake-on-LAN開啟用戶端電腦'
+msg_switch_pxe_menu='切換用戶端電腦開機的選單'
+msg_title_set_all_clients='設定所有的用戶端機器?'
+msg_set_all_clients='你是否要設定所有的用戶端機器模式?'
+msg_select_all_clients_or_select_part_them='你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+msg_set_all_clients_des='如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+msg_select_all_clients='選擇所有的用戶端'
+msg_select_clients='根據IP或是MAC位址選擇部份用戶端'
+msg_hide_reveal='隱藏或是顯示PXE用戶端電腦的開機選單'
+msg_choose_the_action='選擇動作為'
+msg_hide_pxe_menus='隱藏用戶端電腦某些已經被顯示的開機選單'
+msg_reveal_pxe_menus='顯示用戶端電腦某些已經被隱藏的開機選單'
+msg_setdefault_pxe_menu='設定用戶端電腦的開機預設選單'
+msg_title_hide='隱藏用戶端電腦的那一個開機選單?'
+msg_hide_list_des='隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+msg_reveal_title='顯示用戶端電腦的那一個開機選單?'
+msg_reveal_list_des='顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+msg_setdefault_title='哪一個是用戶端電腦的開機預設選單?'
+msg_setdefault_list_des='選定用戶端電腦開機時的預設選單'
+msg_choose_netinstall_imag='選擇要經由網路安裝的Linux套件'
+msg_nchc_clonezilla='再生龍(Clonezilla) - 開放原始碼再生還原系統'
+msg_nchc_drbl='企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+msg_nchc_free_software_labs='再生龍 - 國網中心自由軟體實驗室 - 台灣'
+msg_specify_hosts='指定用戶端機器'
+msg_choose_the_multicast_method='群播(multicast)還原時選定方式為'
+msg_by_MAC_address='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_by_IP_address='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_list='經由MAC位址來指定DRBL用戶端電腦的模式'
+msg_set_by_MAC_address_grp='經由MAC位址群組來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_list='經由IP位址來指定DRBL用戶端電腦的模式'
+msg_set_by_IP_address_grp='經由IP位址群組來指定DRBL用戶端電腦的模式'
+msg_multicast_clonezilla_warning='再生龍群播模式警告!'
+msg_multicast_clonezilla_warning_des='你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+msg_choose_param_to_set='設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
+msg_hint_for_not_fdisk='*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+msg_choose_one_compression_param_to_save='選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+msg_ocs_param_n='當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+msg_ocs_param_u='在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+msg_ocs_param_c='用戶端電腦在開始複製前會再次確認是否要執行'
+msg_ocs_param_s='用戶端電腦開機時略去硬體偵測'
+msg_ocs_param_f='當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+msg_ocs_param_j='使用sfdisk來產生分割區而不用dd'
+msg_ocs_param_j0='使用dd來產生分割區而不用sfdisk'
+msg_ocs_param_k='不在用戶端電腦硬碟再產生分割區'
+msg_ocs_param_t='用戶端電腦不再復原MBR (Mater Boot Record)'
+msg_ocs_param_e='用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+msg_ocs_param_y='伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+msg_ocs_param_y0='伺服器將總是提供再生模式給用戶端-預設本機開機'
+msg_ocs_param_y1='伺服器將總是提供再生模式給用戶端-預設是還原'
+msg_ocs_param_y2='伺服器將總是提供再生模式給用戶端-預設是DRBL'
+msg_ocs_param_z0='不壓縮(最快但是最大的印象檔)'
+msg_ocs_param_z1='使用gzip壓縮(快速但是較小的印象檔)'
+msg_ocs_param_z2='使用bzip2壓縮(最慢但是最小的印象檔)'
+msg_ocs_param_z3='使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+msg_ocs_param_g_auto='用戶端電腦重新在它的硬碟的MBR中安裝grub'
+msg_ocs_param_p_true='用戶端複製完畢時不做其他任何動作'
+msg_ocs_param_p_poweroff='用戶端複製完畢後關機'
+msg_ocs_param_p_reboot='用戶端複製完畢後重新開機'
+msg_ocs_param_p_choose='在用戶端複製完畢時才選擇模式'
+msg_choose_post_mode_after_clone='用戶端複製完畢後的動作'
+msg_default_pxemenu_for_clone='開機時候PXE預設的選單是'
+# Since drbl.conf is loaded before language file is loaded, we explicitly show it as $POST_RUN_DIR
+msg_ocs_param_o0='用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
+msg_ocs_param_o1='用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
+msg_ocs_param_hn0='復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
+msg_ocs_param_hn1='復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+msg_ocs_param_q='使用ntfsclone而不用partimage來存NTFS分割區'
+msg_ocs_param_a='不要強迫開啟硬碟的DMA'
+msg_ocs_param_nogui='partimage不使用圖形顯示,只顯示文字'
+msg_ocs_param_v='顯示詳細資訊(尤其是udpcast的訊息)'
+msg_ocs_param_r='在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+msg_ocs_param_x='在群播還原時使用全雙工網路'
+msg_ocs_param_ns='ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+msg_ocs_param_broadcast='群播還原時,使用broadcast。適用於交換器不開放multicast'
+msg_ocs_param_skip='不選用此選項'
+msg_ocs_param_notfs_ok='假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+msg_clonezilla_advanced_extra_param='再生龍額外的進階參數'
+msg_skip_set_advanced_extra_param='你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
+msg_skip_set_save_compression_extra_param='你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n可用的參數有: \n'
+msg_no_network_installation_img='找不到網路安裝的印象檔!'
+msg_no_network_installation_img_des="在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+msg_start_clonezilla_mode='啟動再生龍模式'
+msg_choose_mode='選定模式'
+msg_clonezilla_save_disk='儲存用戶端電腦的整個硬碟'
+msg_clonezilla_restore_disk='還原用戶端電腦的整個硬碟'
+msg_clonezilla_save_parts='儲存用戶端電腦的硬碟分割區'
+msg_clonezilla_restore_parts='還原用戶端電腦的硬碟分割區'
+msg_clonezilla_save_hda1='儲存用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_restore_hda1='還原用戶端hda1(即將棄用，請使用上面功能)'
+msg_clonezilla_selec_in_client='在用戶端選擇儲或還原(限點播模式)'
+msg_choose_the_mode_to_restore_disk='選擇還原用戶端電腦的整個硬碟時的模式'
+msg_choose_the_mode_to_restore_parts='選擇還原用戶端電腦的硬碟分割區時的模式'
+msg_choose_the_mode_to_restore_hda1='選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+msg_abandon_hda1='注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+msg_unicast_restore='點播還原(unicast)'
+msg_multicast_restore='群播還原(multicast)'
+msg_choose_the_image_to_restore='選擇印象檔來做還原'
+msg_time_to_wait='設定時間來等待用戶端電腦開始複製'
+msg_clients_to_wait='直接設定用戶端電腦的數量來複製'
+msg_clients_time_to_wait='設定用戶端數量來複製，並且給定最長等待時間'
+msg_how_many_clients_to_restore='多少台用戶端電腦要還原'
+msg_input_name_to_save_the_img='輸入一個名稱來存這個印象檔'
+msg_time_to_wait_sec='最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+msg_max_time_to_wait_sec="最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議>=$SLEEP_TIME_AFTER_PART_CLONED)"
+msg_you_must_input_filename='你必須輸入一個名稱'
+msg_you_must_input_legal_filename='你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+msg_you_must_input_partition='你必須輸入一個分割區'
+msg_please_do_it_again='請再做一次'
+msg_choose_the='選擇這個'
+msg_to_save='來存(只顯示未被掛載的)'
+msg_the_image='這個印象檔名稱'
+msg_was_saved_before='存在，這個印象檔名稱已經在使用'
+msg_do_you_want_to_replace='你是否要覆蓋它'
+msg_linux_disk_MS_mapping='硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
+msg_linux_parts_MS_mapping='分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
+msg_choose_disks_to_save='選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
+msg_choose_parts_to_save='選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
+msg_choose_the_disks_to_restore='選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
+msg_choose_the_parts_to_restore='選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
+msg_no_umounted_disks_found='找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
+msg_no_umounted_parts_found='找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+msg_you_can_not_hide_all_pxe_menus='你不能隱藏所有的選單'
+msg_no_modification='略去任何修改'
+msg_install_via_network='經由網路安裝'
+msg_range_found_in_dhcpd_conf='警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+msg_you_are_using_multicast_clonezilla='你正使用群播(multicast)的再生龍環境，你務必確認：'
+msg_ethernet_port_is_up_confirm='1. 這張網路卡已經啟動並且有插上網路線'
+msg_more_NIC_connect_each_other='2. 如果你的DRBL環境中使用超過1個(>=2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+msg_switch_drbl_service='啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+msg_start_drbl_all_services='啟動DRBL伺服器中的DRBL相關服務'
+msg_stop_drbl_all_services='停止DRBL伺服器中的DRBL相關服務'
+msg_restart_drbl_all_services='重新啟動DRBL伺服器中的DRBL相關服務'
+msg_add_drbl_all_services='加上DRBL伺服器中的所有DRBL相關服務'
+msg_del_drbl_all_services='移除DRBL伺服器中的所有DRBL相關服務'
+msg_choose_action='選擇動作為'
+msg_login_switch='切換DRBL客戶端機器的圖形介面登入模式'
+msg_normal_login='一般登入(要求使用者輸入帳號密碼來登入)'
+msg_auto_login='自動登入'
+msg_timed_login='限時登入'
+msg_turn_on_client_to_make_template='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+msg_turn_on_client_to_clone='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+msg_turn_on_client_to_select_clone_type='現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+msg_client_job_are_logged_in='用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+msg_client_sfdisk_log_are_in='用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+msg_set_the_clients_root_passwd='設定用戶端管理者(root)密碼'
+msg_new_passwd_prompt='輸入新的密碼: (螢幕上只會出現星號*)'
+msg_do_you_want_set_yum_repo='你要不要自己選yum的儲藏庫?'
+msg_set_yum_conf_yes_prompt='如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+msg_set_yum_conf_no_prompt='如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+msg_need_lynx_to_parse_config='需要lynx來判斷相關的網址，現在安裝lynx...'
+msg_need_curl_etc_to_parse_config='需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+msg_try_to_update_some_pkgs='如果找到新版的程式，嘗試升級某些需要的程式...'
+msg_force_to_upgrade_some_pkgs='嘗試強迫升級某些程式...'
+msg_install_net_install_images='安裝某些Linux套件的網路安裝印象檔...'
+msg_clean_dhcpd_lease='強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+msg_client_reautologin='強迫用戶端重新自動登入' 
+msg_clean_autologin_account='移除所有自動登入帳號(全部機器)'
+msg_reset_autologin_account='還原所有自動登入的環境為初始預設(全部機器)'
+msg_re_deploy='把伺服器的檔案更新到用戶端中(全部機器)'
+msg_dcs_others='其他模式或是指令'
+msg_dcs_more_modes='更多其他模式或是指令'
+msg_2_kernel_availables='有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+msg_from_this_drbl_server='來自於這台DRBL伺服器'
+msg_from_apt_repository='來自於apt的儲藏庫'
+msg_from_ayo_repository='來自於apt或是yum的儲藏庫'
+msg_install_kernel_for_clients='安裝用戶端電腦所需的核心'
+msg_which_kernel_do_you_perfer='你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+msg_you_choose='你選擇'
+msg_chosen_kernel='選定的核心為'
+msg_not_available_enter_again='找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+msg_hosts_allow_deny_is_set='警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+msg_you_must_make_sure_these_clients='你必須確認這些用戶端的電腦:'
+msg_can_access_this_DRBL_server='可以連接到這台DRBL伺服器!'
+msg_otherwise_client_fail_to_boot='否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+msg_if_you_like_you_can_reboot_to_make_sure_everthing='如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+msg_do_not_create_part='用戶端不再產生硬碟分割表!'
+msg_do_not_restore_mbr='用戶端不再復原MBR!'
+msg_you_have_to_input_image_names_in_client='在用戶端的電腦選擇還原的印象檔!'
+msg_title_input_save_image_name_in_server='現在輸入印象檔與範本裝置名稱 ?'
+msg_ask_if_input_save_image_name_in_server='你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+msg_input_image_name='輸入一個名稱來存這個印象檔:'
+msg_input_device_name='複製範本機中的那個裝置 ?'
+msg_ocs_param_exclude_multicast='你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+msg_run_drbl_ocs_again_cmd='下次您可以直接下這樣的指令:'
+msg_is_unknown_HD='是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+msg_creating_partition_in_target='將在目的碟產生分割區...'
+msg_partition_table_for_target_dev='要產生的目的碟分割區的表'
+msg_if_go_on_the_data_will_be_erased_then_confirm='如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+msg_should_not_run_ocs_onthefly_in_server='你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+msg_ok_we_will_keep_old_partition_table='OK, 我們將保留原來的分割表.'
+msg_fail_to_create_partition_table_in_target_dev='未能在目的碟中建立分割表' 
+msg_my_IP_in_drbl_env='本台機器在DRBL環境中的IP位址'
+msg_are_u_sure_u_want_to_continue='你確認要繼續執行'
+msg_really_dangerous_then_continue='這是非常危險的!!! 總之,我們將繼續...'
+msg_src_target_r_same_dev='來源和目的兩者是同一個裝!!!'
+msg_is_not_valid_grub_root='不是一個正確的grub根分割(root partition)!' 
+msg_different_type_of_input_devs='你輸入的裝置兩者屬於不同類型'
+msg_a_partition_table_already_exist='在目的碟中已經有一個分割表存在'
+msg_do_u_want_to_duplicate_the_partition_layout_to='你是否要複製分割表到'
+msg_do_you_want_to_clone_the_MBR_to='你是否要複製主要開機磁區(MBR)到'
+msg_do_you_want_to_clone_the_boot_loader_to='你是否要複製開機載入程式(boot loader)到'
+msg_skip_clone_MBR='略去複製主要開機磁區(MBR)'
+msg_skip_clone_boot_loader='略去複製開機載入程式(boot loader)'
+msg_failed_to_clone_the_MBR='未能複製主要開機磁區(MBR)到'
+msg_failed_to_clone_the_boot_loader='未能複製開機載入程式(boot loader)'
+msg_now_run_this_cmd_in_target_machine='現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
+msg_if_clone_the_partition_to_hda1_in_target_machine='例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
+msg_if_clone_the_disk_to_hda_in_target_machine='例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+msg_this_is_for_source_machine='這是在來源機器上執行'
+msg_this_is_for_target_machine='這是在目的機器上執行'
+msg_kernel_2_6_13_15_defaul_is_buggy='目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+msg_u_have_to_upgrade_kernel_in_this_machine='你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+msg_then_reboot_this_server='然後把這台電腦重新開機，以便使用新的核心。'
+msg_make_audio_open='開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_audio_close='不開放用戶端電腦的聲音裝置給所有使用者使用。'
+msg_make_plugdev_open='開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_make_plugdev_close='不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+msg_restart_prompt_for_audio='因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+msg_restart_prompt_for_plugdev='因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+msg_restart_prompt_for_dev='因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+msg_run_update_plugdev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+msg_run_update_dev_again='注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+msg_no_autologin_account='未找到自動登入帳號'
+msg_are_you_sure_reset_autologin_home_dir='你確認你要將自動登入帳號的環境重設為初始預設狀態'
+msg_warning_home_dir_will_be_deleted='警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+msg_these_accounts_are='這些帳號是'
+msg_ok_let_do_it='OK, 我們繼續做吧!'
+msg_do_not_reset_autologin_home_dir='不要重設自動登入帳號的家目錄'
+msg_created_autologin_ID_passwd_file="產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+msg_drbl_clonezilla_switch='切換企鵝龍單一系統印象檔與再生龍模式'
+msg_drbl_mode_switch='切換企鵝龍機制'
+msg_drbl_mode_switch_long="有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+msg_drbl_mode_0='使用完全企鵝龍模式'
+msg_drbl_mode_1='使用企鵝龍單一系統印象檔模式'
+msg_drbl_mode_2='不提供無碟GNU/Linux服務'
+msg_clonezilla_mode_switch='切換再生龍機制'
+msg_clonezilla_mode_switch_long='本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+msg_clonezilla_mode_0='使用完全再生龍模式'
+msg_clonezilla_mode_1='使用再生龍盒模式'
+msg_clonezilla_mode_2='不提供再生龍服務'
+msg_r_u_sure_want_to_del_autologin_accounts='你確認要移除這些自動登入帳號?'
+msg_also_clean_autologin_accounts='你是否要清除這些自動登入帳號的家目錄?'
+msg_do_not_del_accounts='不要移除這些帳號'
+msg_regenerate_nfs_nis_nat_config='以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+msg_not_in_SSI_mode="這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+msg_wol_0='現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+msg_wol_1='1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+msg_wol_2='2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+msg_wol_3='3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+msg_wol_4="4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+msg_no_kernel_rpm_is_available='無法在這些地方找到核心的RPM檔:'
+msg_internet_connection='1. 你的網際網路連線正常。'
+msg_use_baseurl_in_yum_centos='2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+msg_you_must_input_device_name_to_save_image='你一定要輸入裝置名稱才能存取印象檔'
+msg_start_detect_MAC_addresse='開始偵測與收集用戶端的MAC address....'
+msg_enter_1_or_press_enter_to_view='輸入'1'或是按'Enter'鍵來看目前收集的狀態。'
+msg_enter_2_or_press_q_to_quit='輸入'2'或是'q'來結束收集。'
+msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them='DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+msg_the_collected_MAC_addr_from='收集到的用戶端硬體卡號MAC位址(由'
+msg_are_saved_in_files_separately=')個別被存在這些檔案中'
+msg_http_isu_edu_tw_not_compatible='由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+msg_prompt_chang_yum_config='這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+msg_What_the_win_hostname_prefix='所還原的MS windows主機名稱的前置名稱是'
+msg_change_hostname_of_MS_WIN_on_the_fly='已經開啟-hn0或-hn1'
+msg_write_MS_WIN_is_necessary='你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+msg_necessary_pkgs_from_dists='這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+msg_necessary_pkgs_from_drbl='這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+msg_recommended_pkgs_from_dists='這些套件如果可以在儲藏庫中找到，建議您安裝:'
+msg_install_glibc_etc_arch_by_yourself='如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+msg_prepare_kernel_for_clients='準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+msg_some_necessary_pkgs_not_installed='警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+msg_reset_all_existing_urpmi_setting='警告! 我們必須重新設定目前系統中的urpmi!'
+msg_some_required_pkgs_not_installed='這些必要的程式並沒有安裝'
+msg_use_drblsrv_instead="如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+msg_continue_may_not_work='如果你繼續的話，這個DRBL系統可能無法正常運作!'
+msg_switch_pxe_bg_mode='切換用戶端電腦PXE開機選單模式'
+msg_pxemenu_text='用戶端使用文字模式的開機選單'
+msg_pxemenu_graphic='用戶端使用圖形模式的開機選單'
+msg_only_one_kernel_meets_requirement='只有一個核心符合你設定的條件'
+msg_drbl_server_is_NOT_NAT_server='這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+msg_ask_user_is_reserved_for_save_mode='"ask_user"是保留來的名稱，請改用其他名字!'
+msg_all_data_in_dev_will_be_overwritten='在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+msg_authentication_pxe_linux_info="如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+msg_this_might_take_several_minutes='這可能會需要一點時間...'
+msg_run_dcs_clonezilla_start_to_show_pxemenu="你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+msg_if_always_provide_clonezilla_srv='你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+msg_gen_template_files='重新產生SSI/Clonezilla box範本檔案'
+msg_ocs_iso_too_big_for_CD='要產生的ISO檔太大，無法放到一片CD上.'
+msg_ocs_iso_too_big_for_DVD='要產生的ISO檔太大，無法放到一片DVD上.'
+msg_unable_to_create_clonezilla_img_iso='無法產生這個再生龍還原專用光碟'
+msg_mkisofs_unable_process_that='mkisofs程式無法處理這個大檔案!'
+msg_burn_clonezilla_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+msg_burn_drbl_live_img_iso='你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+msg_burn_drbl_live_img_zip="你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+msg_is_mounted_u_must_unmount_it='這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+msg_create_live_device_warning='這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+msg_unable_to_mount_this_dev='無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+msg_format_as_FAT_16_32='如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+msg_this_is_disk_usage_status='這是磁碟的使用狀態'
+msg_boot_clonezilla_live_dev='現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+msg_clone_finished_choose_to='下一步要'
+msg_enter_cml='進入命令列'
+msg_clonezilla_is_free_and_no_warranty='**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+msg_1_6_a_b_is_reserved='1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_name_ntfs_dd_img_is_reserved='.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+msg_to_use_clonezilla_to_save_image='要使用再生龍來存印象檔'
+msg_to_use_clonezilla_to_save_image_again='要再使用再生龍來存印象檔'
+msg_run_sudo_su_to_become_root='執行"sudo su -"來變成管理者(root)'
+msg_prepare_writable_dev_and_mount_it_as='你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+msg_ex_mount_ocsroot_in_ocs_live="例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+msg_if_src_part_is_ntfs='如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+msg_sshfs_smbfs_are_supported='本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+msg_use_zh_TW_bterm='如果你需要使用支援正體中文的終端機，可以執行'
+msg_start_ocs_sr_interactive='然後使用這個指令來使用再生龍'
+msg_remember_poweroff_reboot_when_ocs_sr_is_done='當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+msg_if_you_want_to_use_ocs_again='如果你要再使用再生龍'
+msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live='如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+msg_remove_existing_link_for_ocsroot="移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+msg_to_see_this_ocs_live_help_msg='注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+msg_image_source_for_ocs_live="如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+msg_modify_grub_config_if_necessary="你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+msg_this_script_will_create_SL_diskless='這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+msg_RAM_size_for_SL_drbl_client='建議你的用戶端電腦的記憶體最少要'
+msg_image_saved_from_dd='這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+msg_cons_for_dd_clone='使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+msg_will_be_inefficent_and_slow='這樣將會非常沒有效率，而且可能需要很久的時間'
+msg_fs_not_supported_by_partimage_ntfsclone='這個檔案系統partimage或是ntfsclone並不支援'
+msg_use_this_method_to_save_img='只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+msg_status_report_is_very_primitive='此模式下的狀態回報也會非常陽春'
+msg_home_partimag_not_home_partimage='有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+msg_target_dev_has_this_partition_table='你要寫入的硬碟有這樣的資訊表'
+msg_let_me_ask_you_again='容我再問你一次'
+msg_unable_to_mnt_ocsroot="無法掛載到$ocsroot"
+msg_mount_ocsroot_img_hint_short_des='掛載再生龍印象檔的目錄'
+msg_mount_ocsroo_img_hint_long_des="掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
+msg_mount_local_dev='掛載本機的分割區'
+msg_mount_sshfs='掛載SSH伺服器的目錄'
+msg_mount_smbfs='掛載網路芳鄰伺服器的目錄'
+msg_mount_nfs='掛載NFS伺服器的目錄'
+msg_mount_ftpfs='掛載FTP伺服器的目錄'
+msg_do_it_manually='自行手動調整'
+msg_skip_this_use_existing_ocsroot="使用現有的$ocsroot"
+msg_device_to_mount_as_ocsroot_do_not_mount_target_dev="掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
+msg_ip_address_or_FQDN_of_server='伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
+msg_smb_domain_in_server='網路芳鄰伺服器上的網域名稱'
+msg_if_no_smb_domain_skip_this='如果伺服器上沒有此設定，你可以略去此選項'
+msg_account_in_server='使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
+msg_sshfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
+msg_ftpfs_dir_path='要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
+msg_now_you_have_to_enter_passwd='現在你必須輸入對於這個帳號的密碼'
+msg_confirm_ssh_server_might_be_necessary='如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
+msg_ocs_img_dir_path="要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
+msg_enter_another_shell_hint='進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
+msg_existing_setting_is='現有的設定是'
+msg_start_clonezilla='使用再生龍'
+msg_start_clonezilla_or_enter_shell='使用再生龍或是登入(命令列) ?'
+msg_writable_dev_ex_usb_stick='可寫裝置如硬碟/隨身碟'
+msg_writable_fs_ex_nfs_smbfs='可寫網路磁碟如NFS/SMBFS'
+msg_readonly_dev_ex_CD='唯讀裝置如CD'
+msg_writable_dev_ramdisk='記憶體，關機後資料就消失。***不建議***'
+msg_warning_mount_ntfs_writable='警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
+msg_df_report='目前系統的掛載狀態'
+msg_hint_assign_IP_group="提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_hint_assign_MAC_group="提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+msg_device_image_device_clone='兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
+msg_device_image_clone='硬碟/分割區[存到/來至]印象檔'
+msg_device_device_clone='硬碟/分割區複製到硬碟/分割區'
+msg_disk_to_local_disk='複製本機硬碟到本機硬碟'
+msg_disk_to_remote_disk='複製本機硬碟到它機硬碟'
+msg_part_to_local_part='複製本機分割區到本機分割區'
+msg_part_to_remote_part='複製本機分割區到它機分割區'
+msg_local_source_disk='選擇本機硬碟當來源母碟'
+msg_local_target_disk='選擇本機硬碟當目的碟'
+msg_local_source_part='選擇本機分割區當來源分割區'
+msg_local_target_part='選擇本機分割區當目的分割區'
+msg_ocs_onthefly_advanced_extra_param='直接複製再生龍模式額外的進階參數'
+msg_ocs_onthefly_param_g='在目地碟的開機磁區重新安裝grub'
+msg_ocs_onthefly_param_e='在目的碟的分割區調整檔案系統大小符合分割區大小'
+msg_ocs_onthefly_param_nogui='使用partimage的時候不顯示圖形介面'
+msg_ocs_onthefly_param_n='不要在目地碟的開機磁區產生分割區的分配表'
+msg_ocs_onthefly_param_m='不要複製開機管理程式(boot loader)'
+msg_ocs_onthefly_param_o='強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
+msg_ocs_onthefly_param_b='使用批次模式(危險!務必先確認設定正確)'
+msg_ocs_onthefly_param_v='印出詳細的資訊'
+msg_only_i686_kernel_available_in_centos_5='目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
+msg_do_you_want_to_clean_all_stale_mac_cfg="在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
+msg_something_went_wrong_when_start_drbl_related_srv='啟動DRBL相關服務的時候出現一些狀況!'
+msg_you_can_try_to_run_the_following_again='你可以嘗試再度執行以下指令看看'
+msg_try_drblsrv_offline="如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
+msg_very_unstable='非常不穩定'
+msg_not_stable='不穩定'
+msg_not_secure='不安全'
+msg_no_nic_is_found="找不到支援的網路卡."
+msg_choose_nic="請選擇一個網路卡\n(如果你有兩張或更多)"
+msg_send_dhcp_request_from="從網路卡送出 DHCP 要求:"
+msg_enter_IP_add_for_this_nic="請指定這張網卡的 IP 位址: "
+msg_enter_netmask_for_this_nic="請指定這張網卡的網路遮罩(Netmask): "
+msg_enter_default_gateway="請指定通訊閘(Gateway) "
+msg_enter_dns_server="請指定網域名稱伺服器(Nameserver) "
+msg_put_dnsserver_to_resolv_conf="將 Nameserver 設定至 /etc/resolv.conf "
+msg_append_dnsserver_to_resolv_conf="增設 Nameserver 至 /etc/resolv.conf :"
+msg_Network_config="網路設定"
+msg_choose_mode_to_setup_net="選擇你要的模式來設定這台電腦的網路"
+msg_use_dhcp_broadcast="使用DHCP來設定"
+msg_use_static_ip="設定固定IP位址"
+msg_use_pppoe_conf="使用PPPoE來設定"
+msg_setup_network_first='先設定網路'
+msg_hint_multiple_choice_select_by_space='///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
+msg_network_is_not_configured='網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
+msg_network_is_already_configured='發信網路已經設定了! 這台機器可用的IP位址是'
+
+#-----------------------------------------
+# some words
+msg_text_Enter='輸入'
+msg_text_for='對於'
+msg_Got_it='找到了'
+msg_Warning='警告'
+msg_uppercase_Warning='警告'
+msg_NOT_found='未找到'
+msg_Done='完成'
+msg_please='請'
+msg_browse='瀏覽'
+msg_or='或是'
+msg_for_more_details='更詳細的資料'
+msg_Failed_to_get='未能抓取'
+msg_Failed_to_install='未能安裝'
+msg_done='完成'
+msg_note='注意'
+msg_and='與'
+msg_clonezilla='再生龍'
+msg_error='錯誤'
+msg_restore='還原'
+msg_txt_check='檢查'
+msg_ex='例如'
+msg_exit='退出'
+msg_poweroff='關機'
+msg_reboot='重新開機'
+msg_then='然後'
+msg_unknown='未知'
+msg_experimental='實驗性質'
+msg_failed="失敗"
Index: drbl_ui/langs/zh_TW.UTF-8.po
===================================================================
--- drbl_ui/langs/zh_TW.UTF-8.po	(revision 20)
+++ drbl_ui/langs/zh_TW.UTF-8.po	(revision 20)
@@ -0,0 +1,1914 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2006-11-04 09:59+CST\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf8\n"
+"Content-Transfer-Encoding: cp936\n"
+"Generated-By: pygettext.py 1.5\n"
+
+msgid 'msg_delimiter_star_line'
+msgstr '*****************************************************'
+
+msgid 'msg_install_RH'
+msgstr '在 RedHat/Fedora Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_MDK'
+msgstr '在 Mandrake Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_DBN'
+msgstr '在 Debian Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_install_SUSE'
+msgstr '在 SuSE Linux 上安裝 DRBL 環境...'
+
+msgid 'msg_OS_version'
+msgstr '你的作業系統版本'
+
+msgid 'msg_is_not_supported'
+msgstr 'DRBL 不支援這個版本!'
+
+msgid 'msg_press_ctrl_c_stop'
+msgstr '請按 Ctrl-C 來中斷程式!'
+
+msgid 'msg_set_proxy'
+msgstr '你要設定代理伺服器嗎?'
+
+msgid 'msg_http_proxy_server'
+msgstr '請輸入 HTTP 代理伺服器的位址: '
+
+msgid 'msg_http_proxy_port'
+msgstr '請輸入 HTTP 代理伺服器的連接埠: '
+
+msgid 'msg_ftp_proxy_server'
+msgstr '請輸入 FTP 代理伺服器的位址: '
+
+msgid 'msg_ftp_proxy_port'
+msgstr '請輸入 FTP 代理伺服器的連接埠: '
+
+msgid 'msg_http_proxy_you_set'
+msgstr '你設定的 HTTP 代理伺服器是: '
+
+msgid 'msg_ftp_proxy_you_set'
+msgstr '你設定的 FTP 代理伺服器是: '
+
+msgid 'msg_drbl_test_option'
+msgstr '你是否要使用 DRBL "測試版"中的程式(如果您的DRBL的rpm程式是從測試版中下載的，請回答"是")(這些程式功能比較多，但可能有些瑕疵，如果您夠勇敢的話，值得一試)?'
+
+msgid 'msg_drbl_unstable_option'
+msgstr '你是否要使用 DRBL "不穩定版"中的程式(如果您的DRBL的rpm程式是從不穩定版中下載的，請回答"是")(這些程式功能可能多很多，但可能有非常多的瑕疵，如果您是超級勇敢的話，值得一試)?'
+
+msgid 'msg_drbl_extra_option'
+msgstr '你是否要使用 DRBL 計畫所額外提供的軟體 (這不是必須的，只是一個選項)'
+
+msgid 'msg_drbl_netinstall_option'
+msgstr '你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB)，所以有可能會花不少時間。假如你的用戶端電腦有硬碟，而你又有可能會需要安裝作業系統，建議選擇Y。假如你回答no，之後你仍舊可以使用drbl-netinstall來安裝這些檔案。'
+
+msgid 'msg_firefly_option'
+msgstr '你是否要安裝由 Firefly 所提供的亞洲中日韓的補釘程式(如果你夠勇敢的話，值得一試)?'
+
+msgid 'msg_serial_console_option'
+msgstr '你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?'
+
+msgid 'msg_know_nothing_serial_console'
+msgstr '如果你不清楚什麼序列終端機的話，就回答"N"，否則有可能造成用戶端電腦螢幕無法顯示!'
+
+msgid 'msg_serial_console_only'
+msgstr '用戶端電腦只要使用序列終端機嗎(適用沒有VGA輸出的用戶端機器)?'
+
+msgid 'msg_redirect_to_which_port'
+msgstr '請輸入要使用的序列埠(Serial Port)?'
+
+msgid 'msg_serial_console_speed'
+msgstr '您的序列終端機速度是多少?'
+
+msgid 'msg_serial_console_parameter'
+msgstr '請輸入序列終端機的參數'
+
+msgid 'msg_smp_clients'
+msgstr '用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU? 注意! 如果你使用對稱多處理器核心，程式會自動選用 CPU 最佳化核心.'
+
+msgid 'msg_smp_clients_MDK'
+msgstr '用戶端電腦是否要使用對稱多處理器核心(SMP kernel)，這些電腦必須有兩顆(含)以上的CPU?'
+
+msgid 'msg_smp_clients_RH'
+msgstr "$msg_smp_clients"
+
+msgid 'msg_install_apt'
+msgstr '安裝 APT ...'
+
+msgid 'msg_no_wget_get_it'
+msgstr '沒有 wget 程式? 嘗試安裝 wget 程式...'
+
+msgid 'msg_no_apt_get_it'
+msgstr '沒有 apt 程式? 嘗試安裝 apt 程式...'
+
+msgid 'msg_wget_installed_failure'
+msgstr '未能安裝wget程式!我們需要wget來自動安裝apt!你必須自己安裝它'
+
+msgid 'msg_wget_installed_successful'
+msgstr 'wget程式安裝成功!'
+
+msgid 'msg_apt_already_installed'
+msgstr 'apt 已經安裝了. 神奇!!! 你真是優秀!'
+
+msgid 'msg_backup_apt_sources'
+msgstr '備份原來的 apt 來源檔(sources.list) ...'
+
+msgid 'msg_setup_apt_sources_MDK'
+msgstr '為 MDK 設定 apt 的來源檔(sources.list)'
+
+msgid 'msg_enjoy_apt'
+msgstr '現在開始享用 APT!'
+
+msgid 'msg_clean_apt_cache'
+msgstr '清除apt的快取檔案...'
+
+msgid 'msg_check_apt_integrity'
+msgstr '套件完整性檢查...'
+
+msgid 'msg_upgrade_system_question'
+msgstr '你是否要升級你的作業系統?'
+
+msgid 'msg_upgrade_whole_system'
+msgstr '升級作業系統中...'
+
+msgid 'msg_check_installed_kernel'
+msgstr '檢查系統上已經安裝的核心是否適合 DRBL 環境使用...'
+
+msgid 'msg_is_already_installed'
+msgstr '已經被安裝在您的系統中...'
+
+msgid 'msg_need_to_install_kernel'
+msgstr '我們需要安裝其他適合 DRBL 環境使用核心...搜尋中...'
+
+msgid 'msg_create_nbi_files'
+msgstr '產生用戶端PXE與Etherboot網路開機用的檔案，這可能需要幾分鐘...'
+
+msgid 'msg_latest_kernel_for_clients'
+msgstr '用戶端電腦使用的最新核心是'
+
+msgid 'msg_no_drbl_script'
+msgstr '你沒有安裝 drbl-script 程式!!! 程式中斷執行!'
+
+msgid 'msg_create_files_for_PXELINUX'
+msgstr '建立PXE網路開機的設定檔...'
+
+msgid 'msg_prepare_files_for_PXE_client'
+msgstr '備妥PXE網路開機用戶端的設定檔與印象檔...'
+
+msgid 'msg_PXE_NOT_work'
+msgstr 'PXE 網路開機無法使用!!!'
+
+msgid 'msg_press_enter_to_continue'
+msgstr '按 Enter 鍵繼續...'
+
+msgid 'msg_press_enter_to_exit'
+msgstr "按 Enter 鍵離開."
+
+msgid 'msg_FreeDOS_NOT_work'
+msgstr 'FreeDOS 遠端開機無法使用!!!'
+
+msgid 'msg_no_apt_already_uninstall'
+msgstr '找不到 apt !! 請檢查 DRBL 相關程式是否已被移除?'
+
+msgid 'msg_program_stop'
+msgstr '程式停止!'
+
+msgid 'msg_remove_SmallLinuxs_question'
+msgstr '如果有已經安裝在DRBL環境中的小GNU/Linux套件(例如DSL, PuppyLinux, INSERT 或 PLD),是否要移除?'
+
+msgid 'msg_remove_drbl_setup_question'
+msgstr '你是否要移除DRBL這個程式?'
+
+msgid 'msg_remove_apt_question'
+msgstr '你是否要移除 apt ?'
+
+msgid 'msg_remove_yum_repo_question'
+msgstr '你是否要清除yum的來源設定檔?'
+
+msgid 'msg_remove_urpmi_media_question'
+msgstr '你是否要清除 urpmi的來源設定檔?'
+
+msgid 'msg_cleaning_apt_cache'
+msgstr '正在清除 apt 的快取檔案...'
+
+msgid 'msg_cleaning_tftpboot_and_misc'
+msgstr '移除 /tftpboot 以及其他的檔案... 這可能需要幾分鐘...'
+
+msgid 'msg_uninstalling_DRBL_RH'
+msgstr '移除 RedHat/Fedora Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_MDK'
+msgstr '移除 Mandrake Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_DBN'
+msgstr '移除 Debian Linux 上的 DRBL 套件中...'
+
+msgid 'msg_uninstalling_DRBL_SUSE'
+msgstr '移除 SuSE Linux 上的 DRBL 套件中...'
+
+msgid 'msg_analyzing_rpm_info'
+msgstr '分析已安裝套件資訊中... 這可能需要幾分鐘...'
+
+msgid 'msg_failed_to_install_pkgs'
+msgstr '安裝程式失敗，無法繼續執行!'
+
+msgid 'msg_check_network_and_url'
+msgstr '請檢查您的電腦和這個網址(URL)間的連線狀況：'
+
+msgid 'msg_not_determine_OS'
+msgstr '無法判斷 Linux 作業系統的種類與版本!!!'
+
+msgid 'msg_enter_OS_ver'
+msgstr '請輸入您的作業系統版本(例如RH8.0, RH9, FC1, MDK9.2, MDK10.0...)'
+
+msgid 'msg_clean_apt_cache_RH'
+msgstr '正在清除 apt 的快取檔案...'
+
+msgid 'msg_install_DRBL_necesary_files'
+msgstr '安裝 DRBL 所需之相關程式...'
+
+msgid 'msg_select_url_path'
+msgstr '你選擇的伺服器網址(URL)與路徑'
+
+msgid 'msg_drbl_driver'
+msgstr '您是否要安裝原始套件未提供的驅動程式給 DRBL 用戶端電腦使用(例如 bcm4400, bcm5700)?'
+
+msgid 'msg_smp_optimization_kernel'
+msgstr '您選擇使用"對稱多處理器核心"，我們必須設定使用與DRBL伺服器同等級CPU的核心!'
+
+msgid 'msg_apt_optimization_question'
+msgstr '您用戶端的電腦要使用哪個等級CPU的核心?'
+
+msgid 'msg_optimization_level_0'
+msgstr '0 -> 使用i386 CPU等級架構'
+
+msgid 'msg_optimization_level_1'
+msgstr '1 -> 使用i586 CPU等級架構'
+
+msgid 'msg_optimization_level_2'
+msgstr '2 -> 使用與此DRBL伺服器同等級CPU的核心'
+
+msgid 'msg_N_note'
+msgstr '注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意! 注意!'
+
+msgid 'msg_different_level_machine_prompt'
+msgstr '如果你的用戶端電腦與 DRBL 伺服器的 CPU 架構不同等級，請回答 "0"或是"1",否則用戶端電腦將無法順利開機.'
+
+msgid 'msg_diff_arch_explain'
+msgstr '如果您用錯的CPU架構核心，會造成 glibc 和 openssl 因與核心架構不同，而無法適用於所有的用戶端電腦.'
+
+msgid 'msg_not_sure_better_1'
+msgstr '如果您無法確定用戶端電腦的 CPU 等級，建議使用"1"，這樣可以兼顧效能與相容性.'
+
+msgid 'msg_same_optimization'
+msgstr '您選用與伺服器同等級的 CPU 最佳化.'
+
+msgid 'msg_i586_optimization'
+msgstr '你選用 i586 架構的 CPU 最佳化.'
+
+msgid 'msg_no_optimization'
+msgstr '你未選用 CPU 最佳化，預設使用 i386 架構.'
+
+msgid 'msg_glibc_openssl_upgrade_question'
+msgstr '如果 glibc 與 openssl 有較新版本，是否要升級?'
+
+msgid 'msg_glibc_openssl_keep'
+msgstr '0 -> 不升級 glibc 與 openssl.'
+
+msgid 'msg_keep_glibc_upgrade_openssl'
+msgstr '1 -> 只升級 openssl,'
+
+msgid 'msg_upgrade_glibc_keep_openssl'
+msgstr '2 -> 只升級 glibc,'
+
+msgid 'msg_upgrade_glibc_openssl'
+msgstr '3 -> 升級 glibc 與 openssl (預設),'
+
+msgid 'msg_warning_glibc_upgrade'
+msgstr '警告!!!!! glibc 極為重要，請務必確定升級 glibc 後您的系統能正確執行無誤(升級後系統不能使用的狀況非常少見，但是在RedHat 9曾經發生過).'
+
+msgid 'msg_upgrade_glibc_make_you_cry'
+msgstr '為避免升級 glibc 後造成系統無法使用(非常少見)，在無法確定的情況下，您可以選擇 "0" 不升級 glibc 與 openssl.'
+
+msgid 'msg_install_dhcp_tftp_etc'
+msgstr '正在安裝 dhcp, tftp, nfs, yp, mkpxeinitrd-net...'
+
+msgid 'msg_optimization_is_on'
+msgstr '啟用與伺服器同等級 CPU 最佳化.'
+
+msgid 'msg_optimization_is_off'
+msgstr '未啟用最高等級之 CPU 最佳化，因此使用 i386/i586 架構的kernel, glibc以及其他程式.'
+
+msgid 'msg_install_i386_of'
+msgstr '安裝 i386 架構的'
+
+msgid 'msg_searching_glibc_in_ayo'
+msgstr '在 ayo 伺服器中尋找 glibc 程式'
+
+msgid 'msg_searching_openssl_in_ayo'
+msgstr '在 ayo 伺服器中尋找 openssl 程式'
+
+msgid 'msg_searching_openssl_perl_in_ayo'
+msgstr '在 ayo 伺服器中尋找 openssl-perl 程式'
+
+msgid 'msg_searching_pkg_in_ayo'
+msgstr '在 ayo 伺服器中尋找可用的程式'
+
+msgid 'msg_install_mkinitrd_net_etherboot'
+msgstr '安裝 mkpxeinitrd-net, etherboot, partimage...'
+
+msgid 'msg_removing_the_old'
+msgstr '移除舊的'
+
+msgid 'msg_creating_dev'
+msgstr '產生用戶端電腦的設備檔案...'
+
+msgid 'msg_get_dev'
+msgstr '擷取設備檔案...'
+
+msgid 'msg_clean_tmp_dev'
+msgstr '清除設備檔案的暫存目錄...'
+
+msgid 'msg_remove_old_nbi'
+msgstr '移除 /tftpboot 中舊的 nbi 檔案...'
+
+msgid 'msg_install_extra_driver'
+msgstr '安裝額外的驅動程式...'
+
+msgid 'msg_no_extra_driver'
+msgstr '在 apt 伺服器中找不到額外的驅動程式,略去安裝額外的驅動程式...'
+
+msgid 'msg_make_client_serial_console'
+msgstr '建立用戶端序列終端機設定...'
+
+msgid 'msg_kernel_being_used'
+msgstr '警告! 這個核心目前正在使用中: '
+
+msgid 'msg_warning_not_to_remove'
+msgstr '警告! 建議您最好不要移除!!!'
+
+msgid 'msg_not_remove'
+msgstr '請在下個步驟回答"N"!'
+
+msgid 'msg_which_ayo_repository'
+msgstr '請選取安裝時欲使用的 ayo 伺服器:'
+
+msgid 'msg_enter_FQDN_IP_yum_repository'
+msgstr '請輸入yum儲藏庫的網址或是IP位址(包含http://或是ftp://開頭的這些字眼)'
+
+msgid 'msg_enter_the_path_for_dir_ver_updates'
+msgstr '請輸入該網址中，以下目錄所在的路徑'
+
+msgid 'msg_os_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw. (預設)'
+
+msgid 'msg_os_ayo_repository_1'
+msgstr '1 -> ayo.freshrpms.net,'
+
+msgid 'msg_os_ayo_repository_3'
+msgstr '3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+
+msgid 'msg_os_ayo_repository_5'
+msgstr '5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器網址與路徑.'
+
+msgid 'msg_os_ayo_repository_use_existing_yum_config'
+msgstr '4 -> 使用此台伺服器中現有的yum設定 (你必須確認這個設定是能用的!)'
+
+msgid 'msg_os_ayo_repository_enter_by_yourself'
+msgstr '5 -> 手動輸入含有"作業系統程式"的 ayo 伺服器的網址與路徑.'
+
+msgid 'msg_drbl_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw. (預設)'
+
+msgid 'msg_drbl_ayo_repository_1'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_drbl_ayo_repository_3'
+msgstr '3 -> 硬碟、光碟或網路檔案系統(NFS)裡的目錄(須包含安裝 DRBL 所需套件)'
+
+msgid 'msg_drbl_ayo_repository_5'
+msgstr '5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器網址與路徑.'
+
+msgid 'msg_drbl_ayo_repository_enter_by_yourself'
+msgstr '5 -> 手動輸入含有"DRBL相關程式"的 ayo 伺服器的網址與路徑.'
+
+msgid 'msg_os_ayo_repository_1_mdk'
+msgstr '1 -> mdk.linux.org.tw,'
+
+msgid 'msg_os_ayo_repository_2_mdk'
+msgstr '2 -> distro.ibiblio.org,'
+
+msgid 'msg_drbl_ayo_repository_1_mdk'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2_mdk'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_apt_not_compatible'
+msgstr '警告!我們必須移除和 DRBL 不相容的程式 apt 與 libapt-pkg0,然後再安裝相容的apt程式.'
+
+msgid 'msg_do_u_want_to_remove'
+msgstr '你要移除嗎？'
+
+msgid 'msg_warning_apt_not_compatible_and_fail'
+msgstr '你將使用和 DRBL 不相容的apt程式，這樣您的安裝將無法繼續!!!'
+
+msgid 'msg_rm_apt'
+msgstr '正在移除 apt 與 libapt-pkg0...'
+
+msgid 'msg_search_kernel_in_ayo'
+msgstr '在 ayo 資料庫中尋找最新的'
+
+msgid 'msg_latest_kernel_in_ayo'
+msgstr '在 ayo 資料庫中,最新的核心是'
+
+msgid 'msg_install_kernel_might_take_several_minutes'
+msgstr '安裝這個核心可能需要一些時間，請耐心等候... '
+
+msgid 'msg_latest_kernel_is_already_installed'
+msgstr '給DRBL用戶端使用的最新的核心已經安裝過了，略去此步驟.'
+
+msgid 'msg_error_no_drbl_kernel_in_apt'
+msgstr '在 apt 資源中無法找到DRBL的核心安裝檔案!!!'
+
+msgid 'msg_change_opt_from_i386_to_i586'
+msgstr '由於您使用的套件只有i586與i686的核心，因此最佳化程度由i386改為i586!!!'
+
+msgid 'msg_change_opt_from_i586_to_i386'
+msgstr '由於您使用的套件只有i386與i686的核心，因此最佳化程度由i586改為i386!!!'
+
+msgid 'msg_are_you_sure_run_impatient'
+msgstr '這個程式是給沒有耐心看完文件的人，直接這樣執行的話，會使用預設的場景，可能不適合您的環境。你真的沒有耐心看完文件然後一步一步執行嗎？'
+
+msgid 'msg_run_step_by_step'
+msgstr '很好! 你可以執行後面這兩個指令，然後依序回答問題，那樣的設定可以比較符合你的環境。'
+
+msgid 'msg_run_drbl4imp'
+msgstr '好的，懶惰是一種美德! 我們就用預設的場景來設定你的DRBL伺服器吧!'
+
+msgid 'msg_total_avail_space'
+msgstr '系統可以提供的空間(/tftpboot與/)有'
+
+msgid 'msg_necessary_space_setup_drbl'
+msgstr '估計安裝DRBL需要的空間是'
+
+msgid 'msg_total_client_no'
+msgstr 'DRBL用戶端的總數目是'
+
+msgid 'msg_system_maybe_not_enough_space'
+msgstr '你的系統可能沒有足夠的空間來安裝DRBL!!!注意！繼續執行下去有可能會使你的系統檔案毀壞!!!'
+
+msgid 'msg_logout_X_for_thin_client_gdm'
+msgstr '如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效! 注意! 在那之後你必須確認GDM正在執行以便那些使用終端機模式的用戶端電腦能連上這個DRBL伺服器的這個GDM!'
+
+msgid 'msg_restart_X_for_thin_client_kdm'
+msgstr '你必須重新啟動X視窗以便使得修改過的KDM設定生效! 注意! 在那之後你必須確認KDM正在執行以便那些使用終端機模式的電腦能連上這個DRBL伺服器的這個KDM!'
+
+msgid 'msg_logout_X_for_modified_gdm_config_work'
+msgstr '如果你現在已經登入X視窗,你必須登出X視窗以便使得修改過的GDM設定生效!' 
+
+msgid 'msg_logout_X_for_modified_kdm_config_work'
+msgstr '你必須重新啟動X視窗以便使得修改過的KDM設定生效!'
+
+msgid 'msg_restart_graphic_mode_later'
+msgstr '你已經選擇開啟終端機模式給用戶端電腦來使用,現在你自己必須在這台DRBL伺服器啟動圖形介面以便那些使用終端機模式的用戶端電腦可以連接這台DRBL伺服器。'
+
+msgid 'msg_turn_on_gdm_remote_access'
+msgstr '開放GDM遠端連線...'
+
+msgid 'msg_gdm_remote_access_is_already_on'
+msgstr 'DRBL伺服器中的GDM遠端連線已經開啟!'
+
+msgid 'msg_set_thin_client_mode_for_clients'
+msgstr '正在設定終端機模式給用戶端電腦來使用...'
+
+msgid 'msg_gdm_remote_access_is_already_off'
+msgstr 'DRBL伺服器中的GDM遠端連線已經關閉!'
+
+msgid 'msg_disable_thin_client_mode_for_clients'
+msgstr '關閉用戶端的終端機模式!'
+
+msgid 'msg_turn_off_gdm_remote_access'
+msgstr '關閉GDM遠端連線...'
+
+msgid 'msg_kdm_remote_access_is_already_on'
+msgstr 'DRBL伺服器中的KDM遠端連線已經開啟!'
+
+msgid 'msg_turn_off_kdm_remote_access'
+msgstr '開放KDM遠端連線...'
+
+msgid 'msg_kdm_remote_access_is_already_off'
+msgstr 'DRBL伺服器中的KDM遠端連線已經關閉!'
+
+msgid 'msg_dm_in_DRBL_server'
+msgstr 'DRBL伺服器中的圖形顯示管理程式(display manager)是'
+
+msgid 'msg_hint_for_answer'
+msgstr '提示! 當有yes/no選項的時候，預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候，程式使用的值就是 "N"。如果你不確認選用那個好的時候，直接按"Enter"鍵是一個保險的方式。'
+
+msgid 'msg_available_kernel'
+msgstr '可用的核心有'
+
+msgid 'msg_which_os_ayo_repository'
+msgstr '請選取安裝"作業系統程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_which_drbl_ayo_repository'
+msgstr '請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_os_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw,'
+
+msgid 'msg_os_ayo_repository_1'
+msgstr '1 -> ayo.freshrpms.net,'
+
+msgid 'msg_os_ayo_repository_download_fedora_redhat_com'
+msgstr '1 -> download.fedora.redhat.com,'
+
+msgid 'msg_which_drbl_ayo_repository'
+msgstr '請選取安裝"DRBL相關程式"時欲使用的 ayo 伺服器:'
+
+msgid 'msg_drbl_ayo_repository_0'
+msgstr '0 -> free.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_1'
+msgstr '1 -> diskless.nchc.org.tw,'
+
+msgid 'msg_drbl_ayo_repository_2'
+msgstr '2 -> drbl.sourceforge.net,'
+
+msgid 'msg_drbl_server_is_ready'
+msgstr 'DRBL伺服器已經就緒!'
+
+msgid 'msg_all_set_you_can_turn_on_clients'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。打開用戶端電腦，然後開始享用DRBL吧！'
+
+msgid 'msg_etherboot_5_4_is_required'
+msgstr '如果你的用戶端電腦使用Etherboot開機，Etherboot版本必須使用5.4.0或是之後的版本!'
+
+msgid 'msg_win_fail_with_Missing_OS'
+msgstr '如果你還原的是MS Windows系統，還原後使用MS Windows開機卻失敗，出現"Missing Operating System"或是"Invalid System Disk"訊息，你可以嘗試調整一下用戶端電腦的IDE硬碟參數，改成LBA模式，不要使用AUTO模式。'
+
+msgid 'msg_nchc_title'
+msgstr 'NCHC - 國家高速網路與計算中心 - 台灣'
+
+msgid 'msg_drbl_title'
+msgstr '企鵝龍DRBL Disk Remote Boot in Linux'
+
+msgid 'msg_switch_client_mode'
+msgstr '切換模式'
+
+msgid 'msg_remote_linux'
+msgstr '用戶端遠距開機Linux預設介面,足夠能力的用戶端'
+
+msgid 'msg_remote_linux_graphic'
+msgstr '用戶端遠距開機Linux圖形介面,足夠能力的用戶端'
+
+msgid 'msg_remote_linux_text'
+msgstr '用戶端遠距開機Linux文字介面,足夠能力的用戶端'
+
+msgid 'msg_thin_client'
+msgstr '用戶端遠距開機Linux圖形介面,終端機模式'
+
+msgid 'msg_remote_memtest'
+msgstr '用戶端遠距開機做記憶體測試(Memtest86+)'
+
+msgid 'msg_remote_fdos'
+msgstr '用戶端遠距開機使用自由DOS(FreeDOS)'
+
+msgid 'msg_clonezilla_start'
+msgstr '啟動再生龍(clonezilla)模式'
+
+msgid 'msg_clonezilla_stop'
+msgstr '停止再生龍(clonezilla)模式'
+
+msgid 'msg_netinstall'
+msgstr '用戶端經由網路安裝Linux套件'
+
+msgid 'msg_local'
+msgstr '用戶端使用本機作業系統開機'
+
+msgid 'msg_reboot'
+msgstr '現在重新啟動用戶端電腦'
+
+msgid 'msg_shutdown'
+msgstr '現在關閉用戶端電腦'
+
+msgid 'msg_Wake_on_LAN'
+msgstr '現在利用Wake-on-LAN開啟用戶端電腦'
+
+msgid 'msg_switch_pxe_menu'
+msgstr '切換用戶端電腦開機的選單'
+
+msgid 'msg_title_set_all_clients'
+msgstr '設定所有的用戶端機器?'
+
+msgid 'msg_set_all_clients'
+msgstr '你是否要設定所有的用戶端機器模式?'
+
+msgid 'msg_select_all_clients_or_select_part_them'
+msgstr '你後續設定的動作要針對所有用戶端機器或者部份的用戶端機器?'
+
+msgid 'msg_set_all_clients_des'
+msgstr '如果你回答"No"，以下的某些模式你可以透過IP或是MAC位址(如果dhcpd.conf中有指定MAC位址的話)來指定用戶端電腦的模式'
+
+msgid 'msg_select_all_clients'
+msgstr '選擇所有的用戶端'
+
+msgid 'msg_select_clients'
+msgstr '根據IP或是MAC位址選擇部份用戶端'
+
+msgid 'msg_hide_reveal'
+msgstr '隱藏或是顯示PXE用戶端電腦的開機選單'
+
+msgid 'msg_choose_the_action'
+msgstr '選擇動作為'
+
+msgid 'msg_hide_pxe_menus'
+msgstr '隱藏用戶端電腦某些已經被顯示的開機選單'
+
+msgid 'msg_reveal_pxe_menus'
+msgstr '顯示用戶端電腦某些已經被隱藏的開機選單'
+
+msgid 'msg_setdefault_pxe_menu'
+msgstr '設定用戶端電腦的開機預設選單'
+
+msgid 'msg_title_hide'
+msgstr '隱藏用戶端電腦的那一個開機選單?'
+
+msgid 'msg_hide_list_des'
+msgstr '隱藏哪個選單，以便用戶端電腦開機的時候不會出現該選單(可複選)'
+
+msgid 'msg_reveal_title'
+msgstr '顯示用戶端電腦的那一個開機選單?'
+
+msgid 'msg_reveal_list_des'
+msgstr '顯示哪個選單，以便用戶端電腦開機的時候可以出現該選單(可複選)'
+
+msgid 'msg_setdefault_title'
+msgstr '哪一個是用戶端電腦的開機預設選單?'
+
+msgid 'msg_setdefault_list_des'
+msgstr '選定用戶端電腦開機時的預設選單'
+
+msgid 'msg_choose_netinstall_imag'
+msgstr '選擇要經由網路安裝的Linux套件'
+
+msgid 'msg_nchc_clonezilla'
+msgstr '再生龍(Clonezilla) - 開放原始碼再生還原系統'
+
+msgid 'msg_nchc_drbl'
+msgstr '企鵝龍(DRBL) - 國網中心自由軟體實驗室所開發'
+
+msgid 'msg_nchc_free_software_labs'
+msgstr '再生龍 - 國網中心自由軟體實驗室 - 台灣'
+
+msgid 'msg_specify_hosts'
+msgstr '指定用戶端機器'
+
+msgid 'msg_choose_the_multicast_method'
+msgstr '群播(multicast)還原時選定方式為'
+
+msgid 'msg_by_MAC_address'
+msgstr '經由MAC位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_by_IP_address'
+msgstr '經由IP位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_MAC_address_list'
+msgstr '經由MAC位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_MAC_address_grp'
+msgstr '經由MAC位址群組來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_IP_address_list'
+msgstr '經由IP位址來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_set_by_IP_address_grp'
+msgstr '經由IP位址群組來指定DRBL用戶端電腦的模式'
+
+msgid 'msg_multicast_clonezilla_warning'
+msgstr '再生龍群播模式警告!'
+
+msgid 'msg_multicast_clonezilla_warning_des'
+msgstr '你並沒有設定針對所有的用戶端電腦來執行再生龍群播模式，所以請務必記住群播的還原模式一次只能適用一個印象檔(範本檔)。如果你同時用群播模式還原多個不同的印象檔，會混亂整個再生龍模式。按ENTER鍵繼續...'
+
+msgid 'msg_choose_param_to_set'
+msgstr '設定的進階參數(可複選)，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項。'
+
+msgid 'msg_hint_for_not_fdisk'
+msgstr '*注意* Clonezilla預設會在目的碟上重新產生硬碟分割表(即使你只是還原一個分割區的資料)，如果你不要clonezilla幫你做的話，務必勾選-k'
+
+msgid 'msg_choose_one_compression_param_to_save'
+msgstr '選擇的壓縮方式，如果你不知道選用哪些的話，就保留預設值，不要修改任何選項'
+
+msgid 'msg_ocs_param_n'
+msgstr '當啟動或是停止再生龍時，伺服器將不會重新啟動NFS'
+
+msgid 'msg_ocs_param_u'
+msgstr '在用戶端的電腦選擇印象檔來還原(只適用點播還原)'
+
+msgid 'msg_ocs_param_c'
+msgstr '用戶端電腦在開始複製前會再次確認是否要執行'
+
+msgid 'msg_ocs_param_s'
+msgstr '用戶端電腦開機時略去硬體偵測'
+
+msgid 'msg_ocs_param_f'
+msgstr '當啟動或是停止再生龍時，伺服器將會重新啟動NFS'
+
+msgid 'msg_ocs_param_j'
+msgstr '使用sfdisk來產生分割區而不用dd'
+
+msgid 'msg_ocs_param_j0'
+msgstr '使用dd來產生分割區而不用sfdisk'
+
+msgid 'msg_ocs_param_k'
+msgstr '不在用戶端電腦硬碟再產生分割區'
+
+msgid 'msg_ocs_param_t'
+msgstr '用戶端電腦不再復原MBR (Mater Boot Record)'
+
+msgid 'msg_ocs_param_e'
+msgstr '用戶端電腦執行sfdisk程式時強迫使用印象檔中的硬碟CHS值'
+
+msgid 'msg_ocs_param_y'
+msgstr '伺服器將總是提供還原模式給用戶端電腦(預設本機開機)'
+
+msgid 'msg_ocs_param_y0'
+msgstr '伺服器將總是提供再生模式給用戶端-預設本機開機'
+
+msgid 'msg_ocs_param_y1'
+msgstr '伺服器將總是提供再生模式給用戶端-預設是還原'
+
+msgid 'msg_ocs_param_y2'
+msgstr '伺服器將總是提供再生模式給用戶端-預設是DRBL'
+
+msgid 'msg_ocs_param_z0'
+msgstr '不壓縮(最快但是最大的印象檔)'
+
+msgid 'msg_ocs_param_z1'
+msgstr '使用gzip壓縮(快速但是較小的印象檔)'
+
+msgid 'msg_ocs_param_z2'
+msgstr '使用bzip2壓縮(最慢但是最小的印象檔)'
+
+msgid 'msg_ocs_param_z3'
+msgstr '使用lzo壓縮(大小類似gzip壓的，但是速度較快)'
+
+msgid 'msg_ocs_param_g_auto'
+msgstr '用戶端電腦重新在它的硬碟的MBR中安裝grub'
+
+msgid 'msg_ocs_param_p_true'
+msgstr '用戶端複製完畢時不做其他任何動作'
+
+msgid 'msg_ocs_param_p_poweroff'
+msgstr '用戶端複製完畢後關機'
+
+msgid 'msg_ocs_param_p_reboot'
+msgstr '用戶端複製完畢後重新開機'
+
+msgid 'msg_ocs_param_p_choose'
+msgstr '在用戶端複製完畢時才選擇模式'
+
+msgid 'msg_choose_post_mode_after_clone'
+msgstr '用戶端複製完畢後的動作'
+
+msgid 'msg_default_pxemenu_for_clone'
+msgstr '開機時候PXE預設的選單是'
+
+msgid 'msg_ocs_param_o0'
+msgstr '用戶端複製前執行目錄$OCS_PRERUN_DIR下的執行檔'
+
+msgid 'msg_ocs_param_o1'
+msgstr '用戶端複製後執行目錄$OCS_POSTRUN_DIR下的執行檔'
+
+msgid 'msg_ocs_param_hn0'
+msgstr '復原後修改用戶端硬碟中的MS win主機名稱(基於IP位址)'
+
+msgid 'msg_ocs_param_hn1'
+msgstr '復原後修改用戶端硬碟中的MS win主機名稱(基於MAC位址)'
+
+msgid 'msg_ocs_param_q'
+msgstr '使用ntfsclone而不用partimage來存NTFS分割區'
+
+msgid 'msg_ocs_param_a'
+msgstr '不要強迫開啟硬碟的DMA'
+
+msgid 'msg_ocs_param_nogui'
+msgstr 'partimage不使用圖形顯示,只顯示文字'
+
+msgid 'msg_ocs_param_v'
+msgstr '顯示詳細資訊(尤其是udpcast的訊息)'
+
+msgid 'msg_ocs_param_r'
+msgstr '在用戶端調整檔案系統符合分割區大小(印象檔放到大於原來分割區用)'
+
+msgid 'msg_ocs_param_x'
+msgstr '在群播還原時使用全雙工網路'
+
+msgid 'msg_ocs_param_ns'
+msgstr 'ntfsclone執行時,暫存檔放在伺服器印象檔目錄中'
+
+msgid 'msg_ocs_param_broadcast'
+msgstr '群播還原時,使用broadcast。適用於交換器不開放multicast'
+
+msgid 'msg_ocs_param_skip'
+msgstr '不選用此選項'
+
+msgid 'msg_ocs_param_notfs_ok'
+msgstr '假設NTFS檔案系統完整性沒問題,不再檢查(僅適用於ntfsclone)'
+
+msgid 'msg_clonezilla_advanced_extra_param'
+msgstr '再生龍額外的進階參數'
+
+msgid 'msg_skip_set_advanced_extra_param'
+msgstr '你是否要*略去*設定再生龍額外的進階參數? \n可用的參數有: \n'
+
+msgid 'msg_skip_set_save_compression_extra_param'
+msgstr '你是否要*略去*選用不同壓縮法，只用預設值(gzip)? \n可用的參數有: \n'
+
+msgid 'msg_no_network_installation_img'
+msgstr '找不到網路安裝的印象檔!'
+
+msgid 'msg_no_network_installation_img_des'
+msgstr "在$PXELINUX_DIR/default無法找到網路安裝的印象檔相關參數，\n確認你已經安裝那些網路安裝的RPM套件(例如rh-FC3-netinstall)，並且執行過 $DRBL_SCRIPT_PATH/sbin/generate-pxe-menu 來產生 PXE 的選單($PXELINUX_DIR/default)。"
+
+msgid 'msg_start_clonezilla_mode'
+msgstr '啟動再生龍模式'
+
+msgid 'msg_choose_mode'
+msgstr '選定模式'
+
+msgid 'msg_clonezilla_save_disk'
+msgstr '儲存用戶端電腦的整個硬碟'
+
+msgid 'msg_clonezilla_restore_disk'
+msgstr '還原用戶端電腦的整個硬碟'
+
+msgid 'msg_clonezilla_save_parts'
+msgstr '儲存用戶端電腦的硬碟分割區'
+
+msgid 'msg_clonezilla_restore_parts'
+msgstr '還原用戶端電腦的硬碟分割區'
+
+msgid 'msg_clonezilla_save_hda1'
+msgstr '儲存用戶端hda1(即將棄用，請使用上面功能)'
+
+msgid 'msg_clonezilla_restore_hda1'
+msgstr '還原用戶端hda1(即將棄用，請使用上面功能)'
+
+msgid 'msg_clonezilla_selec_in_client'
+msgstr '在用戶端選擇儲或還原(限點播模式)'
+
+msgid 'msg_choose_the_mode_to_restore_disk'
+msgstr '選擇還原用戶端電腦的整個硬碟時的模式'
+
+msgid 'msg_choose_the_mode_to_restore_parts'
+msgstr '選擇還原用戶端電腦的硬碟分割區時的模式'
+
+msgid 'msg_choose_the_mode_to_restore_hda1'
+msgstr '選擇還原用戶端第一個IDE硬碟的第一個分割區hda1'
+
+msgid 'msg_abandon_hda1'
+msgstr '注意:儲存與還原hda1已經棄用，請使用儲存與還原分割區'
+
+msgid 'msg_unicast_restore'
+msgstr '點播還原(unicast)'
+
+msgid 'msg_multicast_restore'
+msgstr '群播還原(multicast)'
+
+msgid 'msg_choose_the_image_to_restore'
+msgstr '選擇印象檔來做還原'
+
+msgid 'msg_time_to_wait'
+msgstr '設定時間來等待用戶端電腦開始複製'
+
+msgid 'msg_clients_to_wait'
+msgstr '直接設定用戶端電腦的數量來複製'
+
+msgid 'msg_clients_time_to_wait'
+msgstr '設定用戶端數量來複製，並且給定最長等待時間'
+
+msgid 'msg_how_many_clients_to_restore'
+msgstr '多少台用戶端電腦要還原'
+
+msgid 'msg_input_name_to_save_the_img'
+msgstr '輸入一個名稱來存這個印象檔'
+
+msgid 'msg_time_to_wait_sec'
+msgstr '最少等待的時間(秒) (從第一台電腦來報到後開始算)'
+
+msgid 'msg_max_time_to_wait_sec'
+msgstr "最長等待的時間(秒) (從第一台電腦來報到後開始算)，也就是超過這個指定的時間，只要至少有一台電腦來連接，即使指定的電腦數目不夠，也強迫開始複製(建議>=$SLEEP_TIME_AFTER_PART_CLONED)"
+
+msgid 'msg_you_must_input_filename'
+msgstr '你必須輸入一個名稱'
+
+msgid 'msg_you_must_input_legal_filename'
+msgstr '你必須輸入一個合法的名稱(只包含字母，數字，_，-與.)'
+
+msgid 'msg_you_must_input_partition'
+msgstr '你必須輸入一個分割區'
+
+msgid 'msg_please_do_it_again'
+msgstr '請再做一次'
+
+msgid 'msg_choose_the'
+msgstr '選擇這個'
+
+msgid 'msg_to_save'
+msgstr '來存(只顯示未被掛載的)'
+
+msgid 'msg_the_image'
+msgstr '這個印象檔名稱'
+
+msgid 'msg_was_saved_before'
+msgstr '存在，這個印象檔名稱已經在使用'
+
+msgid 'msg_do_you_want_to_replace'
+msgstr '你是否要覆蓋它'
+
+msgid 'msg_linux_disk_MS_mapping'
+msgstr '硬碟的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，第一顆硬碟是hda (IDE硬碟)或sda (SATA/SCSI硬碟)，第二顆硬碟是hdb或是sdb...'
+
+msgid 'msg_linux_parts_MS_mapping'
+msgstr '分割區的命名是GNU/Linux下裝置的命名方式。如果你要備份的是MS Windows的系統，一般狀況C:是hda1 (IDE硬碟)或sda1 (SATA/SCSI硬碟)，D:可能會是hda2 (或是sda2)或是hda5 (或是sda5)等等...'
+
+msgid 'msg_choose_disks_to_save'
+msgstr '選擇來源硬碟來存為印象檔(只顯示未被掛載的硬碟)'
+
+msgid 'msg_choose_parts_to_save'
+msgstr '選擇來源分割區來存為印象檔(只顯示未被掛載的分割區)。'
+
+msgid 'msg_choose_the_disks_to_restore'
+msgstr '選擇目的硬碟來還原(注意!!!該硬碟現存的資料會被覆蓋)'
+
+msgid 'msg_choose_the_parts_to_restore'
+msgstr '選擇目的分割區來還原(注意!!!該分割區現存的資料會被覆蓋)。'
+
+msgid 'msg_no_umounted_disks_found'
+msgstr '找不到沒有被掛載的硬碟!要使用Clonezilla來備份或是複製硬碟,該硬碟目前必須不能被掛載中!'
+
+msgid 'msg_no_umounted_parts_found'
+msgstr '找不到沒有被掛載的分割區!要使用Clonezilla來備份或是複製的分割區,該分割區目前必須不能被掛載中!'
+
+msgid 'msg_you_can_not_hide_all_pxe_menus'
+msgstr '你不能隱藏所有的選單'
+
+msgid 'msg_no_modification'
+msgstr '略去任何修改'
+
+msgid 'msg_install_via_network'
+msgstr '經由網路安裝'
+
+msgid 'msg_range_found_in_dhcpd_conf'
+msgstr '警告!!! 在dhcpd.conf中發現"range"選項，這個選項在Clonezilla中使用有風險...你最好設定鎖定用戶端電腦網路卡MAC位址以便每次可以發放同樣的IP位址給同一台的用戶端電腦。這樣也可以避免不小心覆蓋到不知名的電腦。'
+
+msgid 'msg_you_are_using_multicast_clonezilla'
+msgstr '你正使用群播(multicast)的再生龍環境，你務必確認：'
+
+msgid 'msg_ethernet_port_is_up_confirm'
+msgstr '1. 這張網路卡已經啟動並且有插上網路線'
+
+msgid 'msg_more_NIC_connect_each_other'
+msgstr '2. 如果你的DRBL環境中使用超過1個(>=2)的網路交換器，這幾個網路交換器必須用網路線彼此串接起來，要不然群播的封包無法透過上述的網路孔經由交換器送給所有機器，整個還原可能會無法開始!!!'
+
+msgid 'msg_switch_drbl_service'
+msgstr '啟動/停止/重啟/加入/移除DRBL服務(全部機器)'
+
+msgid 'msg_start_drbl_all_services'
+msgstr '啟動DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_stop_drbl_all_services'
+msgstr '停止DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_restart_drbl_all_services'
+msgstr '重新啟動DRBL伺服器中的DRBL相關服務'
+
+msgid 'msg_add_drbl_all_services'
+msgstr '加上DRBL伺服器中的所有DRBL相關服務'
+
+msgid 'msg_del_drbl_all_services'
+msgstr '移除DRBL伺服器中的所有DRBL相關服務'
+
+msgid 'msg_choose_action'
+msgstr '選擇動作為'
+
+msgid 'msg_login_switch'
+msgstr '切換DRBL客戶端機器的圖形介面登入模式'
+
+msgid 'msg_normal_login'
+msgstr '一般登入(要求使用者輸入帳號密碼來登入)'
+
+msgid 'msg_auto_login'
+msgstr '自動登入'
+
+msgid 'msg_timed_login'
+msgstr '限時登入'
+
+msgid 'msg_turn_on_client_to_make_template'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將該電腦的硬碟資料製作成範本(母片)印象檔。注意:如果你要存的範本是採用NTFS的檔案系統，建議你先將該分割區磁碟重組。'
+
+msgid 'msg_turn_on_client_to_clone'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來將範本(母片)印象檔複製到這些電腦的硬碟中。'
+
+msgid 'msg_turn_on_client_to_select_clone_type'
+msgstr '現在請設定用戶端電腦由PXE或是Etherboot開機(參考4步安裝法的第四步驟)。然後開啟用戶端來選擇要儲存或是還原。'
+
+msgid 'msg_client_job_are_logged_in'
+msgstr '用戶端clonezilla執行的結果記錄於此DRBL伺服器的'
+
+msgid 'msg_client_sfdisk_log_are_in'
+msgstr '用戶端clonezilla執行sfdisk的結果記錄於各自機器的'
+
+msgid 'msg_set_the_clients_root_passwd'
+msgstr '設定用戶端管理者(root)密碼'
+
+msgid 'msg_new_passwd_prompt'
+msgstr '輸入新的密碼: (螢幕上只會出現星號*)'
+
+msgid 'msg_do_you_want_set_yum_repo'
+msgstr '你要不要自己選yum的儲藏庫?'
+
+msgid 'msg_set_yum_conf_yes_prompt'
+msgstr '如果你選"yes"，一些儲藏庫將列出來讓你選，所以如果你知道那個儲藏庫連線比較快的話，建議你選擇"yes".'
+
+msgid 'msg_set_yum_conf_no_prompt'
+msgstr '如果你選"no"，我們將使用系統現有的yum儲藏庫設定(所以請務必確認您這台機器的yum儲藏庫設定有效)，並且也會產生另外一些DRBL相關程式儲藏庫的設定.'
+
+msgid 'msg_need_lynx_to_parse_config'
+msgstr '需要lynx來判斷相關的網址，現在安裝lynx...'
+
+msgid 'msg_need_curl_etc_to_parse_config'
+msgstr '需要curl, lftp與wget來判斷相關的網址，如果沒有安裝的話，我們現在安裝它們...'
+
+msgid 'msg_try_to_update_some_pkgs'
+msgstr '如果找到新版的程式，嘗試升級某些需要的程式...'
+
+msgid 'msg_force_to_upgrade_some_pkgs'
+msgstr '嘗試強迫升級某些程式...'
+
+msgid 'msg_install_net_install_images'
+msgstr '安裝某些Linux套件的網路安裝印象檔...'
+
+msgid 'msg_clean_dhcpd_lease'
+msgstr '強迫清除由DHCP服務發出的IP位址紀錄(全部機器)'
+
+msgid 'msg_client_reautologin'
+msgstr '強迫用戶端重新自動登入' 
+
+msgid 'msg_clean_autologin_account'
+msgstr '移除所有自動登入帳號(全部機器)'
+
+msgid 'msg_reset_autologin_account'
+msgstr '還原所有自動登入的環境為初始預設(全部機器)'
+
+msgid 'msg_re_deploy'
+msgstr '把伺服器的檔案更新到用戶端中(全部機器)'
+
+msgid 'msg_dcs_others'
+msgstr '其他模式或是指令'
+
+msgid 'msg_dcs_more_modes'
+msgstr '更多其他模式或是指令'
+
+msgid 'msg_2_kernel_availables'
+msgstr '有兩個可用的核心給用戶端電腦用，你要選擇哪一個?'
+
+msgid 'msg_from_this_drbl_server'
+msgstr '來自於這台DRBL伺服器'
+
+msgid 'msg_from_apt_repository'
+msgstr '來自於apt的儲藏庫'
+
+msgid 'msg_from_ayo_repository'
+msgstr '來自於apt或是yum的儲藏庫'
+
+msgid 'msg_install_kernel_for_clients'
+msgstr '安裝用戶端電腦所需的核心'
+
+msgid 'msg_which_kernel_do_you_perfer'
+msgstr '你要選擇哪個核心給用戶端電腦使用? 如果您已經更新過系統，建議選擇updates中的，如果沒有更新過，建議選擇release中的.'
+
+msgid 'msg_you_choose'
+msgstr '你選擇'
+
+msgid 'msg_chosen_kernel'
+msgstr '選定的核心為'
+
+msgid 'msg_not_available_enter_again'
+msgstr '找不到你指定的核心，請再次輸入數字，選擇可用的核心!'
+
+msgid 'msg_hosts_allow_deny_is_set'
+msgstr '警告! 你已經設定/etc/hosts.allow或是/etc/hosts.deny!'
+
+msgid 'msg_you_must_make_sure_these_clients'
+msgstr '你必須確認這些用戶端的電腦:'
+
+msgid 'msg_can_access_this_DRBL_server'
+msgstr '可以連接到這台DRBL伺服器!'
+
+msgid 'msg_otherwise_client_fail_to_boot'
+msgstr '否則，你的用戶端電腦將會開不了機。出現的錯誤訊息如下:'
+
+msgid 'msg_if_you_like_you_can_reboot_to_make_sure_everthing'
+msgstr '如果你喜歡，你可以現在把這台DRBL伺服器重新開機，確認所有的程式與設定是正確的。(這個步驟不一定要做，只是一個選項供您確認)。' 
+
+msgid 'msg_do_not_create_part'
+msgstr '用戶端不再產生硬碟分割表!'
+
+msgid 'msg_do_not_restore_mbr'
+msgstr '用戶端不再復原MBR!'
+
+msgid 'msg_you_have_to_input_image_names_in_client'
+msgstr '在用戶端的電腦選擇還原的印象檔!'
+
+msgid 'msg_title_input_save_image_name_in_server'
+msgstr '現在輸入印象檔與範本裝置名稱 ?'
+
+msgid 'msg_ask_if_input_save_image_name_in_server'
+msgstr '你是否要現在輸入印象檔與範本裝置的名稱，而不是待會才在用戶端的電腦輸入? (如果你不確定範本裝置的名稱(例如hda或是sda)，可以選擇否，然後待會到用戶端上去選擇)'
+
+msgid 'msg_input_image_name'
+msgstr '輸入一個名稱來存這個印象檔:'
+
+msgid 'msg_input_device_name'
+msgstr '複製範本機中的那個裝置 ?'
+
+msgid 'msg_ocs_param_exclude_multicast'
+msgstr '你指定參數-u (在用戶端電腦選擇復原的印象檔)來做clonezilla還原，因此只有點播(unicast)模式可用[無法使用群播(multicast)模式]!'
+
+msgid 'msg_run_drbl_ocs_again_cmd'
+msgstr '下次您可以直接下這樣的指令:'
+
+msgid 'msg_is_unknown_HD'
+msgstr '是未知的硬碟裝置! 已知並且支援的硬碟裝置如hda, hdb, hdc, hdd'
+
+msgid 'msg_creating_partition_in_target'
+msgstr '將在目的碟產生分割區...'
+
+msgid 'msg_partition_table_for_target_dev'
+msgstr '要產生的目的碟分割區的表'
+
+msgid 'msg_if_go_on_the_data_will_be_erased_then_confirm'
+msgstr '如果你繼續，原本在目的碟中的資料將會被移除!!! 請謹慎確認!!! 你確認要繼續嗎 ?'
+
+msgid 'msg_should_not_run_ocs_onthefly_in_server'
+msgstr '你不應該在這DRBL伺服器中執行這個程式! 你應該在DRBL用戶端環境中執行!!!'
+
+msgid 'msg_ok_we_will_keep_old_partition_table'
+msgstr 'OK, 我們將保留原來的分割表.'
+
+msgid 'msg_fail_to_create_partition_table_in_target_dev'
+msgstr '未能在目的碟中建立分割表' 
+
+msgid 'msg_my_IP_in_drbl_env'
+msgstr '本台機器在DRBL環境中的IP位址'
+
+msgid 'msg_are_u_sure_u_want_to_continue'
+msgstr '你確認要繼續執行'
+
+msgid 'msg_really_dangerous_then_continue'
+msgstr '這是非常危險的!!! 總之,我們將繼續...'
+
+msgid 'msg_src_target_r_same_dev'
+msgstr '來源和目的兩者是同一個裝!!!'
+
+msgid 'msg_is_not_valid_grub_root'
+msgstr '不是一個正確的grub根分割(root partition)!' 
+
+msgid 'msg_different_type_of_input_devs'
+msgstr '你輸入的裝置兩者屬於不同類型'
+
+msgid 'msg_a_partition_table_already_exist'
+msgstr '在目的碟中已經有一個分割表存在'
+
+msgid 'msg_do_u_want_to_duplicate_the_partition_layout_to'
+msgstr '你是否要複製分割表到'
+
+msgid 'msg_do_you_want_to_clone_the_MBR_to'
+msgstr '你是否要複製主要開機磁區(MBR)到'
+
+msgid 'msg_do_you_want_to_clone_the_boot_loader_to'
+msgstr '你是否要複製開機載入程式(boot loader)到'
+
+msgid 'msg_skip_clone_MBR'
+msgstr '略去複製主要開機磁區(MBR)'
+
+msgid 'msg_skip_clone_boot_loader'
+msgstr '略去複製開機載入程式(boot loader)'
+
+msgid 'msg_failed_to_clone_the_MBR'
+msgstr '未能複製主要開機磁區(MBR)到'
+
+msgid 'msg_failed_to_clone_the_boot_loader'
+msgstr '未能複製開機載入程式(boot loader)'
+
+msgid 'msg_now_run_this_cmd_in_target_machine'
+msgstr '現在你可以用Clonezilla live或是DRBL把目的機器開機，然後在目的機器上執行這樣的指令來開始複製'
+
+msgid 'msg_if_clone_the_partition_to_hda1_in_target_machine'
+msgstr '例如，如果你要把這個分割區複製到目的機的hda1，你可以在目的機這樣執行'
+
+msgid 'msg_if_clone_the_disk_to_hda_in_target_machine'
+msgstr '例如，如果你要把這個硬碟複製到目的機的hda，你可以在目的機這樣執行'
+
+msgid 'msg_this_is_for_source_machine'
+msgstr '這是在來源機器上執行'
+
+msgid 'msg_this_is_for_target_machine'
+msgstr '這是在目的機器上執行'
+
+msgid 'msg_kernel_2_6_13_15_defaul_is_buggy'
+msgstr '目前在這台電腦使用的核心2.6.13-15-default有嚴重的問題!!! NFS locking無法正常使用! 這會造成在用戶端電腦的一堆程式無法正常執行!!!'
+
+msgid 'msg_u_have_to_upgrade_kernel_in_this_machine'
+msgstr '你必須把這台電腦的核心升級，也就是執行類似這樣的指令:'
+
+msgid 'msg_then_reboot_this_server'
+msgstr '然後把這台電腦重新開機，以便使用新的核心。'
+
+msgid 'msg_make_audio_open'
+msgstr '開放用戶端電腦的聲音裝置給所有使用者使用。'
+
+msgid 'msg_make_audio_close'
+msgstr '不開放用戶端電腦的聲音裝置給所有使用者使用。'
+
+msgid 'msg_make_plugdev_open'
+msgstr '開放用戶端電腦的抽取式裝置給所有使用者使用。'
+
+msgid 'msg_make_plugdev_close'
+msgstr '不開放用戶端電腦的抽取式裝置給所有使用者使用。'
+
+msgid 'msg_restart_prompt_for_audio'
+msgstr '因為你改變用戶端電腦的聲音裝置設定，如果用戶端的電腦在這之前已經登入，你必須: (1) 將用戶端重新開機，或是(2) 把用戶端的udev服務重新啟動，然後在用戶端電腦登出再登入圖形視窗，這樣這個聲音裝置檔的設定才會生效。'
+
+msgid 'msg_restart_prompt_for_plugdev'
+msgstr '因為你改變用戶端電腦的抽取式裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這個抽取式裝置的設定才會生效。'
+
+msgid 'msg_restart_prompt_for_dev'
+msgstr '因為你改變用戶端電腦的裝置設定，如果用戶端的在這之前電腦已經登入，你必須在用戶端電腦登出再登入圖形視窗，這樣這些裝置的設定才會生效。'
+
+msgid 'msg_run_update_plugdev_again'
+msgstr '注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這個plugdev群組的資料'
+
+msgid 'msg_run_update_dev_again'
+msgstr '注意! 如果你在DRBL伺服器上新增或是移除帳號，你要記得再執行這個指令來更新這些群組(例如:plugdev)的資料'
+
+msgid 'msg_no_autologin_account'
+msgstr '未找到自動登入帳號'
+
+msgid 'msg_are_you_sure_reset_autologin_home_dir'
+msgstr '你確認你要將自動登入帳號的環境重設為初始預設狀態'
+
+msgid 'msg_warning_home_dir_will_be_deleted'
+msgstr '警告!!! 所有自動登入帳號家目錄中的資料將被清除'
+
+msgid 'msg_these_accounts_are'
+msgstr '這些帳號是'
+
+msgid 'msg_ok_let_do_it'
+msgstr 'OK, 我們繼續做吧!'
+
+msgid 'msg_do_not_reset_autologin_home_dir'
+msgstr '不要重設自動登入帳號的家目錄'
+
+msgid 'msg_created_autologin_ID_passwd_file'
+msgstr "產生的帳號與密碼存在檔案$AUTO_LOGIN_ID_PASSWD中。建議你最好把那個檔案放到其他安全的地方，然後移除$AUTO_LOGIN_ID_PASSWD。"
+
+msgid 'msg_drbl_clonezilla_switch'
+msgstr '切換企鵝龍單一系統印象檔與再生龍模式'
+
+msgid 'msg_drbl_mode_switch'
+msgstr '切換企鵝龍機制'
+
+msgid 'msg_drbl_mode_switch_long'
+msgstr "有3種模式可以提供無碟的Linux服務給用戶端使用:\n[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中，DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請了解！在這個模式中，(a)用戶端電腦的記憶體建議至少要256MB以上，(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外，如果你有修改過任何範本機器的設定檔(也就是位於$drblroot下的設定檔)，你要再執行$DRBL_SCRIPT_PATH/sbin/gen_ssi_files來產生新的tarball範本檔於$drbl_common_root/drbl_ssi/中。\n[2] 不要提供無碟Linux服務給用戶端使用.\n你要選用哪一個模式 ?"
+
+msgid 'msg_drbl_mode_0'
+msgstr '使用完全企鵝龍模式'
+
+msgid 'msg_drbl_mode_1'
+msgstr '使用企鵝龍單一系統印象檔模式'
+
+msgid 'msg_drbl_mode_2'
+msgstr '不提供無碟GNU/Linux服務'
+
+msgid 'msg_clonezilla_mode_switch'
+msgstr '切換再生龍機制'
+
+msgid 'msg_clonezilla_mode_switch_long'
+msgstr '本系統中，Clonezilla再生龍有3個模式可以選用:\n[0] 完全模式[Full clonezilla mode]，每個用戶端都有自己的/etc與/var (基於NFS).\n[1] 再生龍盒模式[Clonezilla box mode], 每個用戶端都使用tmpfs[以記憶體來當虛擬磁碟]的/etc與/var。請注意！這個模式中，用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!\n[2] 我不要使用再生龍.\n你要選用哪一個模式 ?'
+
+msgid 'msg_clonezilla_mode_0'
+msgstr '使用完全再生龍模式'
+
+msgid 'msg_clonezilla_mode_1'
+msgstr '使用再生龍盒模式'
+
+msgid 'msg_clonezilla_mode_2'
+msgstr '不提供再生龍服務'
+
+msgid 'msg_r_u_sure_want_to_del_autologin_accounts'
+msgstr '你確認要移除這些自動登入帳號?'
+
+msgid 'msg_also_clean_autologin_accounts'
+msgstr '你是否要清除這些自動登入帳號的家目錄?'
+
+msgid 'msg_do_not_del_accounts'
+msgstr '不要移除這些帳號'
+
+msgid 'msg_regenerate_nfs_nis_nat_config'
+msgstr '以DHCP服務設定,重新產生NFS,NIS與NAT的設定'
+
+msgid 'msg_not_in_SSI_mode'
+msgstr "這個指令只能在單一系統印象檔模式(DRBL SSI)中使用,由於目前此伺服器並不是在DRBL SSI模式,所以無法繼續執行。如果您要轉換成DRBL SSI模式的話，您可以使$DRBL_SCRIPT_PATH/sbin/dcs來切換。"
+
+msgid 'msg_wol_0'
+msgstr '現在用戶端電腦應該已經開機了，如果沒有的話，請檢查:'
+
+msgid 'msg_wol_1'
+msgstr '1. 用戶端電腦的BIOS有沒有正確設定可以遠端喚醒(Wake on LAN) ? 詳細設定方法請參考一下你的主機板BIOS手冊。'
+
+msgid 'msg_wol_2'
+msgstr '2. 用戶端電腦當初關機的時候是不是軟關機(software shutdown) ? 如果不是的話，這個遠端喚醒(Wake on LAN)並沒有辦法讓用戶端開機。'
+
+msgid 'msg_wol_3'
+msgstr '3. 是否用戶端使用的作業系統在關機的時候，並沒有辦法把網路卡停留在等待模式 ?'
+
+msgid 'msg_wol_4'
+msgstr "4. 那些開不了機的戶端電腦網路卡硬體卡號(MAC address)是否沒有在這台server的dhcpd設定檔$DHCPDCONF_DIR/dhcpd.conf中?"
+
+msgid 'msg_no_kernel_rpm_is_available'
+msgstr '無法在這些地方找到核心的RPM檔:'
+
+msgid 'msg_internet_connection'
+msgstr '1. 你的網際網路連線正常。'
+
+msgid 'msg_use_baseurl_in_yum_centos'
+msgstr '2. 檢查/etc/yum.repos.d/下的設定檔(例如/etc/yum.repos.d/CentOS-Base.repo). 建議可以嘗試不要使用mirrorlist，改使用baseurl來指定適當的yum儲藏庫。'
+
+msgid 'msg_you_must_input_device_name_to_save_image'
+msgstr '你一定要輸入裝置名稱才能存取印象檔'
+
+msgid 'msg_start_detect_MAC_addresse'
+msgstr '開始偵測與收集用戶端的MAC address....'
+
+msgid 'msg_enter_1_or_press_enter_to_view'
+msgstr '輸入\'1\'或是按\'Enter\'鍵來看目前收集的狀態。'
+
+msgid 'msg_enter_2_or_press_q_to_quit'
+msgstr '輸入\'2\'或是\'q\'來結束收集。'
+
+msgid 'msg_dhcpd_tftpd_stopped_need_restart_if_you_need_them'
+msgstr 'DHCP與tftpd-hpa/xinetd 服務已經被停止，如果你需要用到他們的話，記得重新啟動!'
+
+msgid 'msg_the_collected_MAC_addr_from'
+msgstr '收集到的用戶端硬體卡號MAC位址(由'
+
+msgid 'msg_are_saved_in_files_separately'
+msgstr ')個別被存在這些檔案中'
+
+msgid 'msg_http_isu_edu_tw_not_compatible'
+msgstr '由於http://ftp.isu.edu.tw採用分頁的方式顯示，這和DRBL的程式不相容'
+
+msgid 'msg_prompt_chang_yum_config'
+msgstr '這個yum儲藏庫不適合用在DRBL安裝與設定中，你必須修改yum的設定檔(位於/etc/yum.repos.d/)來避免使用這個儲藏庫。如果你在那個設定檔中使用mirrorlist，可以改成用baseurl來指定其他的儲藏庫!'
+
+msgid 'msg_What_the_win_hostname_prefix'
+msgstr '所還原的MS windows主機名稱的前置名稱是'
+
+msgid 'msg_change_hostname_of_MS_WIN_on_the_fly'
+msgstr '已經開啟-hn0或-hn1'
+
+msgid 'msg_write_MS_WIN_is_necessary'
+msgstr '你已經開啟-hn0或-hn1，也就是直接在GNU/Linux下改 MS Win 檔案中的主機名稱(hostname). 你必須確認你的GNU/Linux對那個 MS Win 檔案有寫的能力。 如果是FAT的檔案系統，一般沒有問題。如果是使用NTFS的話，你必須在此台主機安裝其他的程式(如http://www.linux-ntfs.org中的ntfs-3g或是ntfsmount)，並且再次執行drblpush，使得在用戶端，Clonezilla可以修改NTFS的檔案.\n警告! ***不要在MS WIN的系統檔案是加密的檔案系統中使用此功能!!!***'
+
+msgid 'msg_necessary_pkgs_from_dists'
+msgstr '這些來至於此GNU/Linux套件的程式是必要的(更詳細的資料請查你的套件的儲藏庫):'
+
+msgid 'msg_necessary_pkgs_from_drbl'
+msgstr '這些來至於DRBL計劃的套件是必須的[更詳細的資料請查http://drbl.sf.net (英文) 或是 http://drbl.nchc.org.tw (中文)], rpm或是deb的套件可以在http://free.nchc.org.tw/drbl-core or http://drbl.sf.net/drbl-core找到:'
+
+msgid 'msg_recommended_pkgs_from_dists'
+msgstr '這些套件如果可以在儲藏庫中找到，建議您安裝:'
+
+msgid 'msg_install_glibc_etc_arch_by_yourself'
+msgstr '如果你的用戶端CPU架構(例如AMD K7)和伺服器的CPU架構(例如Intel P4)不同, 你必須在這台伺服器下載並且安裝這些套件，要不然用戶端會無法正常開機:'
+
+msgid 'msg_prepare_kernel_for_clients'
+msgstr '準備用戶端電腦用的核心，在儲藏庫中尋找可用的核心...'
+
+msgid 'msg_some_necessary_pkgs_not_installed'
+msgstr '警告! 有些必要的程式並沒有安裝成功!如果你繼續執行的話，應該是會有問題。最好現在停止程式，然後檢查一下/etc/apt/sources.list以及網際網路連線!'
+
+msgid 'msg_reset_all_existing_urpmi_setting'
+msgstr '警告! 我們必須重新設定目前系統中的urpmi!'
+
+msgid 'msg_some_required_pkgs_not_installed'
+msgstr '這些必要的程式並沒有安裝'
+
+msgid 'msg_use_drblsrv_instead'
+msgstr "如果此台機器有連上網際網路,你可以改用$DRBL_SCRIPT_PATH/sbin/drblsrv,這個程式將會先幫您下載與安裝必需的程式。或者你可以用系統提供的安裝工具(apt/yum/urpmi/YaST等)來安裝以上所缺的程式。"
+
+msgid 'msg_continue_may_not_work'
+msgstr '如果你繼續的話，這個DRBL系統可能無法正常運作!'
+
+msgid 'msg_switch_pxe_bg_mode'
+msgstr '切換用戶端電腦PXE開機選單模式'
+
+msgid 'msg_pxemenu_text'
+msgstr '用戶端使用文字模式的開機選單'
+
+msgid 'msg_pxemenu_graphic'
+msgstr '用戶端使用圖形模式的開機選單'
+
+msgid 'msg_only_one_kernel_meets_requirement'
+msgstr '只有一個核心符合你設定的條件'
+
+msgid 'msg_drbl_server_is_NOT_NAT_server'
+msgstr '這台DRB伺服器未提供NAT服務(也就是一般俗稱的IP分享器功能)，DRBL用戶端電腦將無法連到網際網路.'
+
+msgid 'msg_ask_user_is_reserved_for_save_mode'
+msgstr '"ask_user"是保留來的名稱，請改用其他名字!'
+
+msgid 'msg_all_data_in_dev_will_be_overwritten'
+msgstr '在這個硬碟/分割區的資料將會被完全蓋掉! 所有現存的資料將會遺失'
+
+msgid 'msg_authentication_pxe_linux_info'
+msgstr "如果你要讓用戶端開機的時候需要輸入密碼才能使用，你可以在DRBL伺服器使用$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd來設定。更多訊息可以由\"$DRBL_SCRIPT_PATH/sbin/drbl-pxelinux-passwd -h\"來得知。"
+
+msgid 'msg_this_might_take_several_minutes'
+msgstr '這可能會需要一點時間...'
+
+msgid 'msg_run_dcs_clonezilla_start_to_show_pxemenu'
+msgstr "你必須要再執行\"$DRBL_SCRIPT_PATH/sbin/dcs\" -> clonezilla-start來啟動再生龍clonezilla服務,用戶端開機的時候也才會出現再生龍的選單"
+
+msgid 'msg_if_always_provide_clonezilla_srv'
+msgstr '你是否要**永遠**提供再生龍服務給用戶端使用?\n注意! 如果你開啟任何一個-y選項，用戶端複製完印象檔到本機的硬碟後，再度重新開機並不會自動選用本機的作業系統開機! 如果你不確認，最好不要勾選任何一個選項-y選項。'
+
+msgid 'msg_gen_template_files'
+msgstr '重新產生SSI/Clonezilla box範本檔案'
+
+msgid 'msg_ocs_iso_too_big_for_CD'
+msgstr '要產生的ISO檔太大，無法放到一片CD上.'
+
+msgid 'msg_ocs_iso_too_big_for_DVD'
+msgstr '要產生的ISO檔太大，無法放到一片DVD上.'
+
+msgid 'msg_unable_to_create_clonezilla_img_iso'
+msgstr '無法產生這個再生龍還原專用光碟'
+
+msgid 'msg_mkisofs_unable_process_that'
+msgstr 'mkisofs程式無法處理這個大檔案!'
+
+msgid 'msg_burn_clonezilla_img_iso'
+msgstr '你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用再生龍'
+
+msgid 'msg_burn_drbl_live_img_iso'
+msgstr '你可以把這個iso檔案燒到CD/DVD，然後在其他機器開機使用企鵝龍'
+
+msgid 'msg_burn_drbl_live_img_zip'
+msgstr "你可以把這個zip檔解開到USB隨身碟中，然後用其中的'makeboot.exe' (在MS windows下)或是'syslinux -s DEVNAME' (在GNU/Linux下，DEVNAME類似/dev/sdb1等)來做成可開機，再來就可以用它來開機使用DRBL"
+
+msgid 'msg_is_mounted_u_must_unmount_it'
+msgstr '這個裝置正被掛載使用中! 你必須要先把它卸載掉'
+
+msgid 'msg_create_live_device_warning'
+msgstr '這個程式會把Debian Live以及DRBL和Clonezilla的程式放到此裝置中。這個裝置的MBR將會被蓋掉，之前的MBR資料將會不見(磁碟分割表將會保留)! 請小心使用!!! 這個裝置是:'
+
+msgid 'msg_unable_to_mount_this_dev'
+msgstr '無法掛載此裝置，你已經將該裝置格式化了嗎? 這個裝置是'
+
+msgid 'msg_format_as_FAT_16_32'
+msgstr '如果你需要格式化，記得把它格式化成FAT16或FAT32的格式，並且指定分割區的辨識碼，例如是[W95 FAT16 (LBA)](也就是在fdisk中顯示為e)或是[W95 FAT32 (LBA)](也就是在fdisk中顯示為c)。你可以在GNU/Linux用以下指令做到'
+
+msgid 'msg_this_is_disk_usage_status'
+msgstr '這是磁碟的使用狀態'
+
+msgid 'msg_boot_clonezilla_live_dev'
+msgstr '現在你可以用這個裝置來其他機器開機，然後使用再生龍'
+
+msgid 'msg_clone_finished_choose_to'
+msgstr '下一步要'
+
+msgid 'msg_enter_cml'
+msgstr '進入命令列'
+
+msgid 'msg_clonezilla_is_free_and_no_warranty'
+msgstr '**再生龍是自由(GPL)軟體，但是完全沒有任何保證，請自行評估風險後使用**'
+
+msgid 'msg_1_6_a_b_is_reserved'
+msgstr '1, 2 ,3, 4, 5, 6, a, b, 或-b是保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+
+msgid 'msg_name_ntfs_dd_img_is_reserved'
+msgstr '.ntfs-img 或 .dd-img保留的名稱，你不可以用這些名字來當再生龍的印象檔名稱'
+
+msgid 'msg_to_use_clonezilla_to_save_image'
+msgstr '要使用再生龍來存印象檔'
+
+msgid 'msg_to_use_clonezilla_to_save_image_again'
+msgstr '要再使用再生龍來存印象檔'
+
+msgid 'msg_run_sudo_su_to_become_root'
+msgstr '執行"sudo su -"來變成管理者(root)'
+
+msgid 'msg_prepare_writable_dev_and_mount_it_as'
+msgstr '你必須準備另外一個可以寫的裝置或空間，並且把它掛載成'
+
+msgid 'msg_ex_mount_ocsroot_in_ocs_live'
+msgstr "例如:如果你要用再生龍來存/dev/hda的檔案，並且把存下來的印象檔放在/dev/hdb1。這樣你必須把/dev/hdb1掛載成$ocsroot:"
+
+msgid 'msg_if_src_part_is_ntfs'
+msgstr '如果該分割區是NTFS，要類似這樣掛載才能寫入:'
+
+msgid 'msg_sshfs_smbfs_are_supported'
+msgstr '本系統也支援sshfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh或是網路芳鄰伺服器'
+
+msgid 'msg_use_zh_TW_bterm'
+msgstr '如果你需要使用支援正體中文的終端機，可以執行'
+
+msgid 'msg_start_ocs_sr_interactive'
+msgstr '然後使用這個指令來使用再生龍'
+
+msgid 'msg_remember_poweroff_reboot_when_ocs_sr_is_done'
+msgstr '當你完成所以動作後，記得一定要用poweroff或是reboot來完成正常的關機程序。否則如果你目前的開機裝置是可寫的(例如USB隨身碟)，並且被掛載使用中，不正常關機有可能該裝置下次會無法開機!'
+
+msgid 'msg_if_you_want_to_use_ocs_again'
+msgstr '如果你要再使用再生龍'
+
+msgid 'msg_extra_storage_space_via_sshfs_smbfs_for_ocs_live'
+msgstr '如果你不要用目前用來開機的裝置來存你的印象檔，你可以使用shfs與smbfs，例如，你可以用以下指令來掛載遠端的ssh伺服器'
+
+msgid 'msg_remove_existing_link_for_ocsroot'
+msgstr "移除目前已經存在的連結檔$ocsroot，然後建一個目錄$ocsroot來當掛載點"
+
+msgid 'msg_to_see_this_ocs_live_help_msg'
+msgstr '注意! 以上的提示有可能在按Enter鍵之後隨著終端機結束而消失，所以如果你還要看這個訊息，可以執行'
+
+msgid 'msg_image_source_for_ocs_live'
+msgstr "如果你不要用目前用來開機的裝置來存你的印象檔，或是你的再生龍映像檔並不在此開機裝置中，你可以把可以存取的裝置掛載成$ocsroot。另外，本系統也支援shfs與smbfs。作法如下"
+
+msgid 'msg_modify_grub_config_if_necessary'
+msgstr "你也許需要修改目前裝置$output_dev中的兩個檔案:/boot/grub/menu.lst與/boot/grub/grub.conf。例如，修改以下兩行的裝置檔名稱來符合你用此裝置來開機時的情況"
+
+msgid 'msg_this_script_will_create_SL_diskless'
+msgstr '這個程式會製作一個DRBL環境中的無碟環境給這一個小型的GNU/Linux免安裝套件'
+
+msgid 'msg_RAM_size_for_SL_drbl_client'
+msgstr '建議你的用戶端電腦的記憶體最少要'
+
+msgid 'msg_image_saved_from_dd'
+msgstr '這個印象檔是由dd所產生的,因此使用dd而不是partimage或是ntfsclone來還原'
+
+msgid 'msg_cons_for_dd_clone'
+msgstr '使用dd的話,它會讀寫硬碟中所有的區塊,不論是否有沒有資料'
+
+msgid 'msg_will_be_inefficent_and_slow'
+msgstr '這樣將會非常沒有效率，而且可能需要很久的時間'
+
+msgid 'msg_fs_not_supported_by_partimage_ntfsclone'
+msgstr '這個檔案系統partimage或是ntfsclone並不支援'
+
+msgid 'msg_use_this_method_to_save_img'
+msgstr '只能使用這個方法來存印象檔而不是用partimage或是ntfsclone來存'
+
+msgid 'msg_status_report_is_very_primitive'
+msgstr '此模式下的狀態回報也會非常陽春'
+
+msgid 'msg_home_partimag_not_home_partimage'
+msgstr '有一個目錄/home/partimage存在! 但是找不到/home/partimag。再生龍的印象檔是放在目錄/home/partimag (注意，沒有最後一個字母"e")。你要把/home/partimage改名成/home/partimag才能繼續。'
+
+msgid 'msg_target_dev_has_this_partition_table'
+msgstr '你要寫入的硬碟有這樣的資訊表'
+
+msgid 'msg_let_me_ask_you_again'
+msgstr '容我再問你一次'
+
+msgid 'msg_unable_to_mnt_ocsroot'
+msgstr "無法掛載到$ocsroot"
+
+msgid 'msg_mount_ocsroot_img_hint_short_des'
+msgstr '掛載再生龍印象檔的目錄'
+
+msgid 'msg_mount_ocsroo_img_hint_long_des'
+msgstr "掛載本機或是遠端主機的目錄到$ocsroot來儲存或是讀取印象檔"
+
+msgid 'msg_mount_local_dev'
+msgstr '掛載本機的分割區'
+
+msgid 'msg_mount_sshfs'
+msgstr '掛載SSH伺服器的目錄'
+
+msgid 'msg_mount_smbfs'
+msgstr '掛載網路芳鄰伺服器的目錄'
+
+msgid 'msg_mount_nfs'
+msgstr '掛載NFS伺服器的目錄'
+
+msgid 'msg_mount_ftpfs'
+msgstr '掛載FTP伺服器的目錄'
+
+msgid 'msg_do_it_manually'
+msgstr '自行手動調整'
+
+msgid 'msg_skip_this_use_existing_ocsroot'
+msgstr "使用現有的$ocsroot"
+
+msgid 'msg_device_to_mount_as_ocsroot_do_not_mount_target_dev'
+msgstr "掛載某個裝置到目錄$ocsroot來儲存或是讀取印象檔。***注意*** 不要掛載你想要備份的分割區來當作再生龍印象檔的目錄"
+
+msgid 'msg_ip_address_or_FQDN_of_server'
+msgstr '伺服器的IP位址或是正式註冊的機器名稱(FQDN)，例如192.168.120.254或是hostname.domainname.org'
+
+msgid 'msg_smb_domain_in_server'
+msgstr '網路芳鄰伺服器上的網域名稱'
+
+msgid 'msg_if_no_smb_domain_skip_this'
+msgstr '如果伺服器上沒有此設定，你可以略去此選項'
+
+msgid 'msg_account_in_server'
+msgstr '使用該伺服器上的哪一個帳號，該帳號須擁有寫入(儲存印象檔)或是讀取的權限'
+
+msgid 'msg_sshfs_dir_path'
+msgstr '要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔，***注意*** 務必用絕對路徑'
+
+msgid 'msg_ftpfs_dir_path'
+msgstr '要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔'
+
+msgid 'msg_now_you_have_to_enter_passwd'
+msgstr '現在你必須輸入對於這個帳號的密碼'
+
+msgid 'msg_confirm_ssh_server_might_be_necessary'
+msgstr '如果這是你把Clonezilla live開機後第一次連線到那台ssh伺服器，基於安全理由，你將會被要求確認該台機器'
+
+msgid 'msg_ocs_img_dir_path'
+msgstr "要儲存或是讀取該伺服器上的哪一個目錄下的再生龍印象檔"
+
+msgid 'msg_enter_another_shell_hint'
+msgstr '進入命令列。當你手動完成設定後，執行"exit"來繼續執行原來的程式'
+
+msgid 'msg_existing_setting_is'
+msgstr '現有的設定是'
+
+msgid 'msg_start_clonezilla'
+msgstr '使用再生龍'
+
+msgid 'msg_start_clonezilla_or_enter_shell'
+msgstr '使用再生龍或是登入(命令列) ?'
+
+msgid 'msg_writable_dev_ex_usb_stick'
+msgstr '可寫裝置如硬碟/隨身碟'
+
+msgid 'msg_writable_fs_ex_nfs_smbfs'
+msgstr '可寫網路磁碟如NFS/SMBFS'
+
+msgid 'msg_readonly_dev_ex_CD'
+msgstr '唯讀裝置如CD'
+
+msgid 'msg_writable_dev_ramdisk'
+msgstr '記憶體，關機後資料就消失。***不建議***'
+
+msgid 'msg_warning_mount_ntfs_writable'
+msgstr '警告! 使用ntfs-3g來掛載NTFS分割區屬於實驗性質，有可能造成你的NTFS分割區資料毀損(雖然機率很低)!'
+
+msgid 'msg_df_report'
+msgstr '目前系統的掛載狀態'
+
+msgid 'msg_hint_assign_IP_group'
+msgstr "提示1: 你可以自訂IP位址群組，只要把你要的IP位址，一行一行列好，存成這樣的檔名$drbl_syscfg/IP-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+
+msgid 'msg_hint_assign_MAC_group'
+msgstr "提示2: 你可以自訂MAC位址組，只要把你要的MAC位址，一行一行列好，存成這樣的檔名$drbl_syscfg/MAC-grp-*，該檔名*的部份可以用任何可讀的字元，例如1, DX等"
+
+msgid 'msg_device_image_device_clone'
+msgstr '兩種模式可以使用，你可以選擇做 \n(1) 硬碟/分割區存成印象檔或者印象檔還原到硬碟/分割區，\n(2) 硬碟對拷或者分割區對拷'
+
+msgid 'msg_device_image_clone'
+msgstr '硬碟/分割區[存到/來至]印象檔'
+
+msgid 'msg_device_device_clone'
+msgstr '硬碟/分割區複製到硬碟/分割區'
+
+msgid 'msg_disk_to_local_disk'
+msgstr '複製本機硬碟到本機硬碟'
+
+msgid 'msg_disk_to_remote_disk'
+msgstr '複製本機硬碟到它機硬碟'
+
+msgid 'msg_part_to_local_part'
+msgstr '複製本機分割區到本機分割區'
+
+msgid 'msg_part_to_remote_part'
+msgstr '複製本機分割區到它機分割區'
+
+msgid 'msg_local_source_disk'
+msgstr '選擇本機硬碟當來源母碟'
+
+msgid 'msg_local_target_disk'
+msgstr '選擇本機硬碟當目的碟'
+
+msgid 'msg_local_source_part'
+msgstr '選擇本機分割區當來源分割區'
+
+msgid 'msg_local_target_part'
+msgstr '選擇本機分割區當目的分割區'
+
+msgid 'msg_ocs_onthefly_advanced_extra_param'
+msgstr '直接複製再生龍模式額外的進階參數'
+
+msgid 'msg_ocs_onthefly_param_g'
+msgstr '在目地碟的開機磁區重新安裝grub'
+
+msgid 'msg_ocs_onthefly_param_e'
+msgstr '在目的碟的分割區調整檔案系統大小符合分割區大小'
+
+msgid 'msg_ocs_onthefly_param_nogui'
+msgstr '使用partimage的時候不顯示圖形介面'
+
+msgid 'msg_ocs_onthefly_param_n'
+msgstr '不要在目地碟的開機磁區產生分割區的分配表'
+
+msgid 'msg_ocs_onthefly_param_m'
+msgstr '不要複製開機管理程式(boot loader)'
+
+msgid 'msg_ocs_onthefly_param_o'
+msgstr '強迫載入預存的硬碟CHS(磁柱磁頭磁區)值'
+
+msgid 'msg_ocs_onthefly_param_b'
+msgstr '使用批次模式(危險!務必先確認設定正確)'
+
+msgid 'msg_ocs_onthefly_param_v'
+msgstr '印出詳細的資訊'
+
+msgid 'msg_only_i686_kernel_available_in_centos_5'
+msgstr '目前CentOS 5只有正式提供i686的核心，並沒有提供i386或是i586的核心。更多訊息可以在此找到http://wiki.centos.org/QaWiki/CentOS5PentiumSupport'
+
+msgid 'msg_do_you_want_to_clean_all_stale_mac_cfg'
+msgstr "在$PXELINUX_DIR 下發現某些已經存在的MAC格式的pxelinux專用的設定檔，然後由於在dhcpd.conf中沒有找到對應的IP位址，所以我們無法根據IP位址來幫你清除對應的舊的設定檔。你是否要清除這些舊的MAC格式的pxelinux專用的設定檔 ? 注意! 如果你回答是的話，有可能會影響到其他的用戶端機器。如果你不在乎其他機器的話，回答是是沒關係的，畢竟你總是可以用dcs來切換用戶端的模式。建議(1)你以後要這樣選用部份的用戶端之前，先用dcs將clonezilla模式停掉。(2)盡量用所MAC位址的方式來設定dhcpd.conf。"
+
+msgid 'msg_something_went_wrong_when_start_drbl_related_srv'
+msgstr '啟動DRBL相關服務的時候出現一些狀況!'
+
+msgid 'msg_you_can_try_to_run_the_following_again'
+msgstr '你可以嘗試再度執行以下指令看看'
+
+msgid 'msg_try_drblsrv_offline'
+msgstr "如果你確認你這個GNU/Linux的套件和那些DRBL已經支援的套件相容，你可以嘗試使用 $DRBL_SCRIPT_PATH/sbin/drblsrv-offline。更詳細的訊息，你可以查看DRBL的網頁，或是執行 \"$DRBL_SCRIPT_PATH/sbin/drblsrv-offline -h\""
+
+msgid 'msg_very_unstable'
+msgstr '非常不穩定'
+
+msgid 'msg_not_stable'
+msgstr '不穩定'
+
+msgid 'msg_not_secure'
+msgstr '不安全'
+
+msgid 'msg_no_nic_is_found'
+msgstr "找不到支援的網路卡."
+
+msgid 'msg_choose_nic'
+msgstr "請選擇一個網路卡\n(如果你有兩張或更多)"
+
+msgid 'msg_send_dhcp_request_from'
+msgstr "從網路卡送出 DHCP 要求:"
+
+msgid 'msg_enter_IP_add_for_this_nic'
+msgstr "請指定這張網卡的 IP 位址: "
+
+msgid 'msg_enter_netmask_for_this_nic'
+msgstr "請指定這張網卡的網路遮罩(Netmask): "
+
+msgid 'msg_enter_default_gateway'
+msgstr "請指定通訊閘(Gateway) "
+
+msgid 'msg_enter_dns_server'
+msgstr "請指定網域名稱伺服器(Nameserver) "
+
+msgid 'msg_put_dnsserver_to_resolv_conf'
+msgstr "將 Nameserver 設定至 /etc/resolv.conf "
+
+msgid 'msg_append_dnsserver_to_resolv_conf'
+msgstr "增設 Nameserver 至 /etc/resolv.conf :"
+
+msgid 'msg_Network_config'
+msgstr "網路設定"
+
+msgid 'msg_choose_mode_to_setup_net'
+msgstr "選擇你要的模式來設定這台電腦的網路"
+
+msgid 'msg_use_dhcp_broadcast'
+msgstr "使用DHCP來設定"
+
+msgid 'msg_use_static_ip'
+msgstr "設定固定IP位址"
+
+msgid 'msg_use_pppoe_conf'
+msgstr "使用PPPoE來設定"
+
+msgid 'msg_setup_network_first'
+msgstr '先設定網路'
+
+msgid 'msg_hint_multiple_choice_select_by_space'
+msgstr '///提示! 往後如果有複選的選項讓你選擇，你必須使用空白鍵來標示你的選擇，被標示選到的部份會出現星號(*)///'
+
+msgid 'msg_network_is_not_configured'
+msgstr '網路尚未設定! 現在我們會執行這個指令來設定這台機器的網路'
+
+msgid 'msg_network_is_already_configured'
+msgstr '發信網路已經設定了! 這台機器可用的IP位址是'
+
+msgid 'msg_text_Enter'
+msgstr '輸入'
+
+msgid 'msg_text_for'
+msgstr '對於'
+
+msgid 'msg_Got_it'
+msgstr '找到了'
+
+msgid 'msg_Warning'
+msgstr '警告'
+
+msgid 'msg_uppercase_Warning'
+msgstr '警告'
+
+msgid 'msg_NOT_found'
+msgstr '未找到'
+
+msgid 'msg_Done'
+msgstr '完成'
+
+msgid 'msg_please'
+msgstr '請'
+
+msgid 'msg_browse'
+msgstr '瀏覽'
+
+msgid 'msg_or'
+msgstr '或是'
+
+msgid 'msg_for_more_details'
+msgstr '更詳細的資料'
+
+msgid 'msg_Failed_to_get'
+msgstr '未能抓取'
+
+msgid 'msg_Failed_to_install'
+msgstr '未能安裝'
+
+msgid 'msg_done'
+msgstr '完成'
+
+msgid 'msg_note'
+msgstr '注意'
+
+msgid 'msg_and'
+msgstr '與'
+
+msgid 'msg_clonezilla'
+msgstr '再生龍'
+
+msgid 'msg_error'
+msgstr '錯誤'
+
+msgid 'msg_restore'
+msgstr '還原'
+
+msgid 'msg_txt_check'
+msgstr '檢查'
+
+msgid 'msg_ex'
+msgstr '例如'
+
+msgid 'msg_exit'
+msgstr '退出'
+
+msgid 'msg_poweroff'
+msgstr '關機'
+
+msgid 'msg_reboot'
+msgstr '重新開機'
+
+msgid 'msg_then'
+msgstr '然後'
+
+msgid 'msg_unknown'
+msgstr '未知'
+
+msgid 'msg_experimental'
+msgstr '實驗性質'
+
+msgid 'msg_failed'
+msgstr "失敗"
+
Index: drbl_ui/menus/Main.py
===================================================================
--- drbl_ui/menus/Main.py	(revision 20)
+++ drbl_ui/menus/Main.py	(revision 20)
@@ -0,0 +1,116 @@
+import  wx, sys, os, gettext, string, time
+import  wx.wizard as wiz
+import  wx.lib.layoutf as layoutf
+
+from config import main_functions,remote_functions
+from remoteLinuxWizard import remoteLinuxPage, setAllClientsPage,selectClientsPage,remoteLinuxFinalPage
+
+cat = gettext.GNUTranslations(open('../langs/%s.mo' % os.getenv('LANG')))
+_ = cat.gettext
+
+
+#----------------------------------------------------------------------
+class MainFrame(wx.Frame):
+    def __init__(self):
+        wx.Frame.__init__(self, parent=None, title=_('msg_nchc_title'), pos=wx.DefaultPosition, size=(400,400))
+
+        mainlist = []
+        for i in range(0, len(main_functions)):
+            mainlist.append(main_functions[i][0] + '  ' + ' --- ' + '  ' + main_functions[i][1])
+
+        self.SetAutoLayout(True)
+
+        self.panelA = wx.Panel(self)
+        #self.panelA.SetBackgroundColour(wx.RED)
+        self.panelA.SetConstraints(layoutf.Layoutf('t=t#1;l=l10#1;b%b35#1;r=r10#1',(self,)))
+
+        self.panelB = wx.Panel(self)
+        #self.panelB.SetBackgroundColour(wx.BLUE)
+        self.panelB.SetConstraints(layoutf.Layoutf('t_5#2;l=l10#1;b%b85#1;r=r10#1',(self,self.panelA)))
+
+        self.panelC = wx.Panel(self)
+        #self.panelC.SetBackgroundColour(wx.GREEN)
+        self.panelC.SetConstraints(layoutf.Layoutf('t_10#2;l=l10#1;b=b10#1;r=r10#1',(self,self.panelB)))
+
+        gif = wx.Image('../images/drbl-logo.gif', wx.BITMAP_TYPE_GIF).ConvertToBitmap()
+        image = wx.StaticBitmap(self.panelA, -1, gif, wx.DefaultPosition, (gif.GetWidth(), gif.GetHeight()))
+        #text = wx.StaticText(self.panelA, -1, _('msg_warnning_content'), wx.DefaultPosition, (375,65), style=wx.TE_MULTILINE)
+        #font = wx.Font(10, wx.SWISS, wx.BOLD, wx.NORMAL)
+        #text.SetFont(font)
+        #image.SetConstraints(layoutf.Layoutf('X%X50#1;Y=Y#1;h*;w%w50#1', (self.panelA,)))
+        image.SetConstraints(layoutf.Layoutf('X=X#1;Y=Y#1;h*;w*', (self.panelA,)))
+
+        rb = wx.RadioBox(self.panelB, -1, _('msg_choose_action'), wx.DefaultPosition, wx.DefaultSize, mainlist, 1, wx.RA_SPECIFY_COLS)
+        rb.SetConstraints(layoutf.Layoutf('X=X#1;Y=Y#1;h*;w*', (self.panelB,)))
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+
+        self.b_ok = wx.Button(self.panelC, wx.ID_OK)
+        self.b_ok.SetSize(self.b_ok.GetBestSize())
+        self.b_ok.SetConstraints(layoutf.Layoutf('X%X150#1;Y=Y#1;h*;w*', (self.panelC,)))
+        self.b_exit = wx.Button(self.panelC, wx.ID_EXIT)
+        self.b_exit.SetSize(self.b_exit.GetBestSize())
+        self.b_exit.SetConstraints(layoutf.Layoutf('X%X50#1;Y=Y#1;h*;w*', (self.panelC,)))
+
+        #self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnWizPageChanged)
+        self.Bind(wx.EVT_BUTTON, self.remoteLinuxWizard, self.b_ok)
+        self.Bind(wx.EVT_BUTTON, self.OnCloseWindow, self.b_exit)
+        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
+
+        #warnning = wx.MessageDialog(self, _('msg_warnning_content'), _('msg_warnning'), wx.OK|wx.ICON_INFORMATION)
+        #warnning.Centre()
+        #warnning.SetFocus()
+        #warnning.ShowModal()
+        #warnning.Destroy()
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            self.Bind(wx.EVT_BUTTON, self.remoteLinuxWizard, self.b_ok)
+        #if event.GetSelection() == 1:
+            #self.Bind(wx.EVT_BUTTON, self.clonezillaSaveWizard, self.b_ok)
+        #if event.GetSelection() == 2:
+            #self.Bind(wx.EVT_BUTTON, self.clonezillaRestoreWizard, self.b_ok)
+        #if event.GetSelection() == 3:
+            #self.Bind(wx.EVT_BUTTON, self.TDWDemoWizard, self.b_ok)
+        #if event.GetSelection() == 4:
+            #self.Bind(wx.EVT_BUTTON, self.StreamDemoWizard, self.b_ok)
+        #if event.GetSelection() == 5:
+            #self.Bind(wx.EVT_BUTTON, self.RunWizard, self.b_ok)
+        #if event.GetSelection() == 6:
+            #self.Bind(wx.EVT_BUTTON, self.HelpWizard, self.b_ok)
+
+#----------------------------------------------------------------------
+    def OnCloseWindow(self, event):
+        self.Destroy()
+
+
+#------------------------------Wizard Modules--------------------------
+    def remoteLinuxWizard(self,evt):
+        wizard = wiz.Wizard(self, -1, _('msg_remote_linux'))
+
+        page1 = remoteLinuxPage(wizard, _('msg_choose'))
+        page2 = setAllClientsPage(wizard, _('msg_title_set_all_clients'))
+        page3 = selectClientsPage(wizard, _('msg_select_clients'))
+        page4 = remoteLinuxFinalPage(wizard, _('msg_done'))
+
+        self.page1 = page1
+        wizard.SetPageSize((500, 320))
+        #wizard.FitToPage(page1)
+
+        page1.SetNext(page2)
+        page2.SetPrev(page1)
+        page2.SetNext(page3)
+        page3.SetPrev(page2)
+        page3.SetNext(page4)
+
+        #wizard.GetPageAreaSizer().Add(page1)
+        wizard.RunWizard(page1)
+
+#------------------------------------------------------------------------
+if __name__ == '__main__':
+    app = wx.PySimpleApp()
+    frame = MainFrame()
+    frame.Centre()
+    frame.Show()
+    app.MainLoop()
+
Index: drbl_ui/menus/clonezillaSaveWizard.py
===================================================================
--- drbl_ui/menus/clonezillaSaveWizard.py	(revision 20)
+++ drbl_ui/menus/clonezillaSaveWizard.py	(revision 20)
@@ -0,0 +1,440 @@
+import  wx, sys, os, gettext, string, time
+import  wx.wizard as wiz
+from config import generate_ip_list, drbl_ocs, all_clonezilla_save_opt, clonezilla_disk_part, server_client_input, client_action_after_save, compress_mode
+
+cat = gettext.GNUTranslations(open('../langs/%s.mo' % os.getenv('LANG')))
+_ = cat.gettext
+
+global selected_clients, selected_disk_parts_save_opt, selected_clonezilla_save_opt, selected_server_client_opt
+globla selected_img_dev_name, selected_client_action, selected_compress_mode
+selected_clients = ['-nl','']
+selected_disk_parts_save_opt = ['','save']
+selected_clonezilla_save_opt = []
+selected_server_client_opt = [''] # not count
+selected_img_dev_name = ['','']
+selected_client_action = ['']
+selected_compress_mode = ['']
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class checklistCtrl(wx.ListCtrl, CheckListCtrlMixin):
+    def __init__(self, parent, log):
+        wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
+        CheckListCtrlMixin.__init__(self)
+        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+
+    def OnItemActivated(self, evt):
+        self.ToggleItem(evt.m_itemIndex)
+
+    def OnCheckItem(self, index, flag):
+        data = self.GetItemData(index)
+        arg = all_clonezilla_save_opt[data][0]
+        if flag:
+	    selected_clonezilla_save_opt.append(arg)
+        else:
+	    selected_clonezilla_save_opt.remove(arg)
+
+#-----------------------------------------------------------------------
+class setAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = 0
+
+        wx.StaticText(self, -1, _('msg_select_all_clients_or_select_part_them'), pos=(10,60), size=(500,100), style=wx.TE_MULTILINE)
+        wx.StaticText(self, -1, _('msg_set_all_clients_des'), pos=(10,80), size=(500,100), style=wx.TE_MULTILINE)
+        ox = ['Yes', 'No']
+        self.rb = wx.RadioBox(self, -1, _('msg_set_all_clients'), (10,150), (250,75), ox, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.rb)
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            selected_clients[0] = '-nl'
+        if event.GetSelection() == 1:
+            selected_clients[0] = '-h'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+            if self.rb.GetSelection() == 0:
+                next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        prev = self.prev
+        return prev
+
+#-----------------------------------------------------------------------
+class selectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.SelectedClientsArray = []
+        self.SelectedClientsStr = ''
+        self.fuse_next = self.fuse_prev = 0
+
+        AllClientsArray = os.popen(generate_ip_list).read().split('\n')
+        AllClientsArray.remove('')
+        self.lb = wx.CheckListBox(self, -1, (10,50), (470,250), AllClientsArray)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, self.lb)
+        self.lb.SetSelection(0)
+
+    def EvtCheckListBox(self, event):
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+            self.SelectedClientsArray.append(label)
+        if not (self.lb.IsChecked(index)):
+            self.SelectedClientsArray.remove(label)
+        self.lb.SetSelection(index)     #so that (un)checking also selects (moves the highlight)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+            if selected_clients[0] == '-h':
+		if len(self.SelectedClientsArray)==0):
+                    war = wx.MessageDialog(self, 'YOU MUST CHOOSE ONE!!', 'WARNNING!!', wx.OK|wx.ICON_INFORMATION)
+                    war.ShowModal()
+                    war.Destroy()
+                    return self
+                else:
+                    for x in self.SelectedClientsArray:
+                        self.SelectedClientsStr = x + ' ' + self.SelectedClientsStr
+                    self.SelectedClientsStr = '\"' + self.SelectedClientsStr + '\"'
+                    selected_clients[1] = self.SelectedClientsStr
+        return next
+
+    def GetPrev(self):
+        prev = self.prev
+        self.fuse_next = 0
+        return prev
+
+#-----------------------------------------------------------------------
+class clonezillaSavePage1(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_prev = 0
+
+        list = []
+        for i in range(0, len(clonezilla_disk_part)):
+            list.append(clonezilla_disk_part[i][0] + '   ' + clonezilla_disk_part[i][1])
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), ModeList, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+
+    def EvtRadioBox(self, event):
+	selected_disk_parts_save_opt[0] = clonezilla_disk_part[event.GetSelection()][0]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_prev = self.fuse_prev + 1
+        if self.fuse_prev == 1:
+            prev = self.prev
+            if selected_clients[0] == '-nl':
+                prev = prev.GetPrev()
+        return prev
+
+#-----------------------------------------------------------------------
+class clonezillaSavePage2(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = 0
+
+	list = []
+	for i in range(0, len(server_client)):
+	    list.append(server_client[i][0])
+
+        rb = wx.RadioBox(self, -1, _('msg_choose_mode'), (35, 50), (260,90), list, 1, wx.RA_SPECIFY_COLS)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+
+    def EvtRadioBox(self, event):
+        selected_server_client_opt[0] = server_client[event.GetSelection()][0]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+	next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+	    if selected_server_client_opt[0] == server_client[1][0]:
+		next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0 
+        return self.prev
+
+#----------------------------------------------------------------------
+class clonezillaSavePage3(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = self.fuse_prev = 0
+
+        wx.StaticText(self, -1,  _('msg_input_image_name'), (10, 160))
+        self.text_img = wx.TextCtrl(self, -1, '', (10, 180), size=(200, -1))
+        wx.StaticText(self, -1,  _('msg_input_device_name'), (10, 210))
+        self.text_dev = wx.TextCtrl(self, -1, '', (10, 230), size=(190, -1))
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        self.fuse_prev = 0
+        if self.fuse_next == 2:
+            if selected_server_client_opt[0] == server_client[1][0]:
+                selected_img_dev_name[0] = selected_img_dev_name[1] = ''
+                #print ('selected_img_dev_name[0] is %s, selected_img_dev_name[1] is %s' % (selected_img_dev_name[0], selected_img_dev_name[1]))
+            elif self.text_img.GetValue() == '' or self.text_dev.GetValue() == '':
+                warnning = wx.MessageDialog(self, 'YOU MUST ENTER SOMETHING!!', 'WARNNING', wx.OK|wx.ICON_INFORMATION)
+                warnning.ShowModal()
+                warnning.Destroy()
+                return self
+            else:
+                selected_img_dev_name[0] = self.text_img.GetValue()
+                selected_img_dev_name[1] = self.text_dev.GetValue()
+		print ('selected_img_dev_name[0] is %s, selected_img_dev_name[1] is %s' % (selected_img_dev_name[0], selected_img_dev_name[1]))
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        return self.prev
+
+#----------------------------------------------------------------------
+class clonezillaSavePage4(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = self.fuse_prev = 0
+
+        ox = [_('msg_yes'), _('msg_no')]
+        wx.StaticText(self, -1, _('msg_skip_set_advanced_extra_param'), (10,60), (470,100), wx.TE_MULTILINE)
+        rb = wx.RadioBox(self, -1, _('msg_choose_action'), (10,100), (100,50), ox, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(1)
+        self.SkipExtraParam = 'no'
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+           self.SkipExtraParam = 'yes'
+        else:
+           self.SkipExtraParam = 'no'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        command = command_log = ''
+        self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+            if self.SkipExtraParam == 'yes':
+                if  selected_server_client_opt[0] == server_client[1][0]:
+                    command = ('%s %s %s' % (drbl_ocs, selected_clients[0], selected_clients[1]))
+                else:
+                    command = ('%s %s %s %s %s' % (drbl_ocs, selected_clients[0], selected_clients[1], selected_img_dev_name[0], selected_img_dev_name[1]))
+                file = open('tmp.log','w')
+                os.system('sudo %s > tmp.log' % command)
+                time.sleep(6)
+                file.close()
+                file = open('tmp.log')
+                while True:
+                    line = file.readline()
+                    if len(line) == 0: # Zero length indicates EOF
+                        break
+                    command_log = command_log + line
+                file.close()
+                os.remove('tmp.log')
+                FinalCommand.SetLabel('%s' % command)
+                CommandLog.WriteText('%s' % command_log)
+                for i in range(0,3):
+                    next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        self.fuse_prev = self.fuse_prev + 1
+        prev = self.prev
+        if self.fuse_prev == 1:
+            if selected_img_dev_name[0] == '' and selected_img_dev_name[1] == '':
+                prev = prev.GetPrev()
+        return prev
+
+#----------------------------------------------------------------------
+class clonezillaSavePage5(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = self.fuse_prev = 0
+
+        self.list = checkListCtrl(self, title)
+        sizer = wx.BoxSizer()
+        sizer.Add(self.list, 1, wx.EXPAND)
+        self.SetSizer(sizer)
+
+        self.list.InsertColumn(0, _('argument'))        #not translated
+        self.list.InsertColumn(1, _('meannings'), wx.LIST_FORMAT_LEFT)  #not translated
+
+        for key, data in selected_clonezilla_save_opt.iteritems():
+            index = self.list.InsertStringItem(sys.maxint, data[0])
+            self.list.SetStringItem(index, 1, data[1])
+            self.list.SetItemData(index, key)
+
+        self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+        self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
+
+        self.list.CheckItem(0)
+        self.list.CheckItem(1)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        self.fuse_prev = 0
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class clonezillaSavePage6(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	list = []
+	for i in range(0, len(client_action_after_save)):
+	    list.append(client_action_after_save[i][0] + '   ' + client_action_after_save[i][1])
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (10,100), (250,100), list, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(0)
+        selected_client_action[0] = '-p choose'
+
+    def EvtRadioBox(self, event):
+        selected_client_action[0] = client_action_after_save[event.GetSelection()][0]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class clonezillaSavePage7(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        self.fuse_next = 0
+
+	list = []
+	for i in range(0, len(compress_mode)):
+	    list.append(compress_mode[i][0] + '   ' + compress_mode[i][1])
+        rb = wx.RadioBox(self, -1, _('msg_choose_post_mode_after_clone'), (10,100), (300,100), list, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
+        rb.SetSelection(3)
+        selected_compress_mode = '-z3'
+
+    def EvtRadioBox(self, event):
+        selected_compress_mode[0] =  compress_mode[event.GetSelection()][0]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        command = command_log = ''
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+            if selected_clients[0] == '-nl':
+                selected_clients[0] = ''
+		command = drbl_ocs + selected_clonezilla_save_opt + selected_client_action[0] + selected_compress_mode[0] + selected_clients[0] + selected_clients[1] + selected_disk_parts_save_opt
+                #if FinalArgs[i] != '':
+                    #command = command + FinalArgs[i] + ' '
+            file = open('tmp.log','w')
+            os.system('%s > tmp.log' % command)
+            time.sleep(6)
+            file.close()
+            file = open('tmp.log')
+            while True:
+                line = file.readline()
+                if len(line) == 0: # Zero length indicates EOF
+                    break
+                command_log = command_log + line
+            file.close()
+            os.remove('tmp.log')
+            FinalCommand.SetLabel('%s' % command)
+            CommandLog.WriteText('%s' % command_log)
+        return self.next
+
+    def GetPrev(self):
+        self.fuse_next = 0
+        return self.prev
+
Index: drbl_ui/menus/remoteLinuxWizard.py
===================================================================
--- drbl_ui/menus/remoteLinuxWizard.py	(revision 20)
+++ drbl_ui/menus/remoteLinuxWizard.py	(revision 20)
@@ -0,0 +1,162 @@
+import  wx, sys, os, gettext, string, time
+import  wx.wizard as wiz
+from config import generate_ip_list, drbl_dcs, remote_functions
+
+cat = gettext.GNUTranslations(open('../langs/%s.mo' % os.getenv('LANG')))
+_ = cat.gettext
+
+global selected_clients, selected_func
+selected_clients = ['-nl','']
+selected_func = ['']
+
+#----------------------------------------------------------------------
+def makePageTitle(wizPg, title):
+    sizer = wx.BoxSizer(wx.VERTICAL)
+    wizPg.SetSizer(sizer)
+    title = wx.StaticText(wizPg, -1, title)
+    title.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
+    sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
+    sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5)
+    return sizer
+
+#----------------------------------------------------------------------
+class remoteLinuxPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+	list = []
+	for i in range(0, len(remote_functions)):
+	    list.append(remote_functions[i][0] + '   ' + remote_functions[i][1])
+
+        self.rb = wx.RadioBox(self, -1, '', wx.DefaultPosition, wx.DefaultSize, list, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.sizer.Add(self.rb, 0, wx.ALIGN_CENTER|wx.ALL, 50)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.rb)
+        self.rb.SetSelection(0)
+	selected_func[0] = remote_functions[0][2]
+
+    def EvtRadioBox(self, event):
+        selected_func[0] = remote_functions[event.GetSelection()][2]
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        return self.next
+
+    def GetPrev(self):
+        return self.prev
+
+#----------------------------------------------------------------------
+class setAllClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+	self.fuse_next = 0
+
+        wx.StaticText(self, -1, _('msg_select_all_clients_or_select_part_them'), pos=(10,60), size=(500,100), style=wx.TE_MULTILINE)
+        wx.StaticText(self, -1, _('msg_set_all_clients_des'), pos=(10,80), size=(500,100), style=wx.TE_MULTILINE)
+        ox = ['Yes', 'No']
+        self.rb = wx.RadioBox(self, -1, _('msg_set_all_clients'), (10,150), (250,75), ox, 1, wx.RA_SPECIFY_COLS|wx.NO_BORDER)
+        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, self.rb)
+
+    def EvtRadioBox(self, event):
+        if event.GetSelection() == 0:
+            selected_clients[0] = '-nl'
+        if event.GetSelection() == 1:
+            selected_clients[0] = '-h'
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+	self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+	self.fuse_next = self.fuse_next + 1
+	if self.fuse_next == 2:
+            if self.rb.GetSelection() == 0:
+                Command.SetLabel('%s %s %s' % (drbl_dcs, selected_clients[0], selected_func[0]))
+                #CommandLog.WriteText(os.popen('%s %s %s' % (drbl_dcs, selected_clients[0], selected_func[0])).read())
+                next = next.GetNext()
+        return next
+
+    def GetPrev(self):
+	self.fuse_next = 0
+	prev = self.prev
+	return prev
+
+#----------------------------------------------------------------------
+class selectClientsPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+
+        self.SelectedClientsArray = []
+        self.SelectedClientsStr = ''
+        self.fuse_next = self.fuse_prev = 0
+
+        AllClientsArray = os.popen(generate_ip_list).read().split('\n')
+        AllClientsArray.remove('')
+        self.lb = wx.CheckListBox(self, -1, (10,50), (470,250), AllClientsArray)
+        self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, self.lb)
+        self.lb.SetSelection(0)
+
+    def EvtCheckListBox(self, event):
+        index = event.GetSelection()
+        label = self.lb.GetString(index)
+        if self.lb.IsChecked(index):
+            self.SelectedClientsArray.append(label)
+        if not (self.lb.IsChecked(index)):
+            self.SelectedClientsArray.remove(label)
+        self.lb.SetSelection(index)	#so that (un)checking also selects (moves the highlight)
+
+    def SetNext(self, next):
+        self.next = next
+
+    def SetPrev(self, prev):
+        self.prev = prev
+
+    def GetNext(self):
+        next = self.next
+        self.fuse_prev = 0
+        self.fuse_next = self.fuse_next + 1
+        if self.fuse_next == 2:
+	    if (selected_clients[0] == '-h'):
+	        if len(self.SelectedClientsArray) == 0:
+                    war = wx.MessageDialog(self, 'YOU MUST CHOOSE ONE!!', 'WARNNING!!', wx.OK|wx.ICON_INFORMATION)
+                    war.ShowModal()
+                    war.Destroy()
+                    return self
+                else:
+                    for x in self.SelectedClientsArray:
+                        self.SelectedClientsStr = x + ' ' + self.SelectedClientsStr
+                    self.SelectedClientsStr = '\"' + self.SelectedClientsStr + '\"'
+                    selected_clients[1] = self.SelectedClientsStr
+		    CommandLog.WriteText('The commands are : %s %s %s %s' % (drbl_dcs, selected_clients[0], selected_clients[1], selected_func[0]))
+                    #CommandLog.WriteText(os.popen('%s %s %s %s' % (drbl_dcs, selected_clients[0], selected_clients[1], selected_func[0])).read())
+	return next
+
+    def GetPrev(self):
+	prev = self.prev
+	self.fuse_next = 0
+	return prev
+
+#------------------------------------------------------------------------
+class remoteLinuxFinalPage(wiz.PyWizardPage):
+    def __init__(self, parent, title):
+        wiz.PyWizardPage.__init__(self, parent)
+        self.next = self.prev = None
+        self.sizer = makePageTitle(self, title)
+        global Command, CommandLog
+
+        Command = wx.StaticText(self, -1, '', pos=(10,60), size=(150,100), style=wx.TE_MULTILINE)
+        CommandLog = wx.TextCtrl(self, -1, '', pos=(10,100), size=(480,200), style=wx.TE_MULTILINE|wx.TE_READONLY)
+
