3 MODULE
'workbench/startup','workbench/workbench','dos/datetime','dos/dos','utility/hooks','*getpath',
4 'tools/file', 'muimaster','libraries/mui', 'mui/betterString_mcc','amigalib/boopsi','libraries/gadtools',
5 'utility/tagitem','tools/installhook','icon','libraries/asl','timer','devices/timer','exec/io','*VERSTAG',
6 'locale','libraries/locale','*Scalos_Protect_Locale','*ProtModule','scalos','scalos/scalos41.6','*GetIconObject'
8 #define prefile
'ENV:Scalos/Protect_Module.prefs'
46 ENUM ER_MUILIB
=1,ID_CHANGES
,ER_ICONLIB
,ER_APP
48 DEF ex_dirs
=0,ex_files
=0,ex_size
=0,str
[500]:STRING,file
:file
,debug=0,myname
,ent
=0,
49 app
=0,win
=0,running
=TRUE,result,sigs
,tir
,appMsgHook
:hook
,log
,
50 bufname
[600]:STRING, appicon
:PTR TO diskobject
,ttir
,lock
=NIL
,aslobj
,bt_Rapport
,arret
=0,debut
=1
52 DEF wb
:PTR TO wbstartup
, args
:PTR TO wbarg
, rdargs
,etatlog
, myargs
:PTR TO LONG
, marg0
:PTR TO LONG
,
53 c
=0, tirv
,vuetir
,filev
55 DEF tr
:PTR TO timerequest
, at
:PTR TO timeval
, bb
:PTR TO timeval
,btime
[20]:STRING,temps
,m
=0,
56 textbuffer
[80]:STRING,endgui
,etatendgui
,vuetime
,cat
:PTR TO catalog_Scalos_Protect
,bt_p
58 DEF ph
,ps
,pp
,pa
,pr
,pw
,pe
,pd
59 DEF ah
,as,ap
,aa
,ar
,aw
,ae
,ad
61 DEF var
,buffer
[600]:STRING
64 DEF bufo
[2]:STRING,bufo2
[2]:STRING,n
,outfile
=NIL
,line
[1024]:ARRAY OF CHAR
66 IF outfile
:=Open(prefile
,OLDFILE
)
67 WHILE (Fgets(outfile
, line
, 3))
70 StrCopy(bufo
,line
,StrLen(line
)-1)
71 -> WriteF('n[\d] bufo = \s\n', n
, bufo
)
75 IF StrCmp(bufo
,'0')=TRUE
76 set(endgui
,MUIA_Selected
,0)
77 ELSEIF StrCmp(bufo
,'1')=TRUE
78 set(endgui
,MUIA_Selected
,1)
86 DEF bufs
[3]:STRING,outfile
=NIL
88 get(endgui
,MUIA_Selected
,{etatendgui
})
89 outfile
:=Open(prefile
,NEWFILE
)
90 StringF(bufs
,'\d\n',etatendgui
)
96 DEF strprotinfo
,lockinfo
=NIL
,wintitre
[100]:STRING
98 IF (muimasterbase
:=OpenLibrary(MUIMASTER_NAME
,MUIMASTER_VMIN
))=NIL
THEN Raise(ER_MUILIB
)
99 IF (iconbase
:=OpenLibrary('icon.library',0))=NIL
THEN Raise(ER_ICONLIB
)
100 IF (scalosbase
:=OpenLibrary('scalos.library',40))=NIL
THEN Raise('pas de scalos!')
102 localebase
:= OpenLibrary( 'locale.library' , 0 )
104 cat
.open( NIL
, NIL
)
106 installhook(appMsgHook
,{appMsgFunc
})
108 StringF(wintitre
,'\s \s',VERSTRING
, __TARGET__
)
110 app
:= ApplicationObject
,
111 MUIA_Application_Title
, 'Protect.module',
112 MUIA_Application_Version
, VERSDATE
,
113 MUIA_Application_Copyright
, 'COAT J_Marie, 2004',
114 MUIA_Application_Author
, 'COAT J_Marie, ALIAS JMC ',
115 MUIA_Application_Description
, 'Set protection bits of drawers/files for SCALOS',
116 MUIA_Application_Base
, 'Protect.module',
117 MUIA_Application_DiskObject
, get_MyDiskObject(appicon
),
118 SubWindow
, win
:= WindowObject
,
119 MUIA_Window_ID
, "MAIN",
120 MUIA_Window_ScreenTitle
, VERSTRING
,
121 MUIA_Window_AppWindow
, MUI_TRUE
,
122 MUIA_Window_Title
, wintitre
,
123 MUIA_Window_AppWindow
, MUI_TRUE
,
124 WindowContents
, VGroup
,
126 Child
, Label2((cat
.msg_Entry
.getstr() )),
128 MUIA_Popstring_String
, tir
:=BetterStringObject
, TextFrame
,
129 MUIA_String_Format
, MUIV_String_Format_Center
,
131 MUIA_Popstring_Button
, aslobj
:=PopButton(MUII_PopFile
),
132 ASLFR_TITLETEXT
, (cat
.msg_Asltext
.getstr() ),
134 Child
, Label2((cat
.msg_Type
.getstr() )),
135 Child
, ttir
:=TextObject
, TextFrame
,
136 MUIA_Background
, MUII_ListBack
,
137 MUIA_Text_Contents
, '',
138 MUIA_Text_PreParse
, '\ec\eb\e3' ,
142 Child
, ColGroup(8), GroupFrameT( (cat
.msg_GroupProtect
.getstr() ) ),
143 Child
, ph
:= makeIMG(ah
, (cat
.msg_HelpTextHide
.getstr() ) ),
144 Child
, proTxtObject( (cat
.msg_TextHide
.getstr() ) ),
146 Child
, ps
:= makeIMG(as, (cat
.msg_HelpTextScript
.getstr() ) ),
147 Child
, proTxtObject( (cat
.msg_TextScript
.getstr() ) ),
149 Child
, pp
:= makeIMG(ap
, (cat
.msg_HelpTextPure
.getstr() ) ),
150 Child
, proTxtObject( (cat
.msg_TextPure
.getstr() ) ),
152 Child
, pa
:= makeIMG(aa
, (cat
.msg_HelpTextArchive
.getstr() ) ),
153 Child
, proTxtObject( (cat
.msg_TextArchive
.getstr() ) ),
155 Child
, pr
:= makeIMG(ar
, (cat
.msg_HelpTextRead
.getstr() ) ),
156 Child
, proTxtObject( (cat
.msg_TextRead
.getstr() ) ),
158 Child
, pw
:= makeIMG(aw
, (cat
.msg_HelpTextWrite
.getstr() ) ),
159 Child
, proTxtObject( (cat
.msg_TextWrite
.getstr() ) ),
161 Child
, pe
:= makeIMG(ae
, (cat
.msg_HelpTextExecute
.getstr() ) ),
162 Child
, proTxtObject( (cat
.msg_TextExecute
.getstr() ) ),
164 Child
, pd
:= makeIMG(ad
, (cat
.msg_HelpTextDelete
.getstr() ) ),
165 Child
, proTxtObject( (cat
.msg_TextDelete
.getstr() ) ),
167 Child
, Mui_MakeObjectA(MUIO_HBar
,[2]),
169 Child
,HGroup
,MUIA_Frame
,MUIV_Frame_Text
,
170 Child
, RectangleObject
,
172 Child
,Label1((cat
.msg_All
.getstr() )),
173 MUIA_Font
, MUIV_Font_Normal
,
174 Child
, log
:=ImageObject
, MUIA_ShortHelp
, (cat
.msg_HelpAll
.getstr() ),
178 MUIA_InputMode
, MUIV_InputMode_Toggle
,
179 MUIA_Image_Spec
, MUII_CheckMark
,
180 MUIA_Image_FreeVert
, TRUE,
181 MUIA_Selected
, FALSE,
182 MUIA_Background
, MUII_ButtonBack
,
183 MUIA_ShowSelState
, FALSE,
185 Child
, RectangleObject
,
187 Child
,Label1((cat
.msg_Quit
.getstr() )),
188 MUIA_Font
, MUIV_Font_Normal
,
189 Child
, endgui
:=ImageObject
, MUIA_ShortHelp
, (cat
.msg_HelpQuit
.getstr() ),
193 MUIA_InputMode
, MUIV_InputMode_Toggle
,
194 MUIA_Image_Spec
, MUII_CheckMark
,
195 MUIA_Image_FreeVert
, TRUE,
196 MUIA_Selected
, FALSE,
197 MUIA_Background
, MUII_ButtonBack
,
198 MUIA_ShowSelState
, FALSE,
200 Child
, RectangleObject
,
202 Child
, bt_p
:=SimpleButton((cat
.msg_Protect
.getstr() )),
205 Child
, bt_Rapport
:=TextObject
, MUIA_ShortHelp
, (cat
.msg_HelpBtAbort
.getstr() ),
206 MUIA_Frame
, MUIV_Frame_ImageButton
,
207 MUIA_Background
, MUII_HSHINEBACK
,
208 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
209 MUIA_Text_Contents
, (cat
.msg_BtAbort
.getstr() ),
210 MUIA_Text_PreParse
, '\eb\ec' ,
213 Child
, RectangleObject
,
216 Child
, vuetime
:= GroupObject
,
218 Child
, RectangleObject
,
220 Child
, Label2((cat
.msg_Time
.getstr() )),
221 Child
, temps
:= TextObject
, TextFrame
,
222 MUIA_Background
, MUII_TextBack
,
223 MUIA_Text_PreParse
, '\ec' ,
231 Child
, Mui_MakeObjectA(MUIO_HBar
,[2]),
233 Child
, vuetir
:= GroupObject
, GroupFrameT( (cat
.msg_GroupEntry
.getstr() ) ), MUIA_ShortHelp
, (cat
.msg_HelpGroupEntry
.getstr() ),
234 MUIA_Frame
,MUIV_Frame_Text
,
237 Child
, Label2((cat
.msg_LabelDrawer
.getstr() )),
238 Child
, tirv
:=TextObject
, TextFrame
,
239 MUIA_Background
, MUII_TextBack
, -> MUII_ListBack
,
240 MUIA_Text_Contents
, '',
241 MUIA_Text_PreParse
, '\eb' ,
246 Child
, Label2((cat
.msg_LabelFile
.getstr() )),
247 Child
, filev
:=TextObject
, TextFrame
,
248 MUIA_Background
, MUII_TextBack
, -> MUII_ListBack
,
249 MUIA_Text_Contents
, '',
250 MUIA_Text_PreParse
, '\e3' ,
260 IF app
=NIL
THEN Raise(ER_APP
)
262 doMethodA(win
,[MUIM_Notify
,MUIA_Window_CloseRequest
,MUI_TRUE
,app
,2,MUIM_Application_ReturnID
,MUIV_Application_ReturnID_Quit
])
264 doMethodA(win
,[MUIM_Notify
,MUIA_AppMessage
,MUIV_EveryTime
,tir
,3,MUIM_CallHook
,appMsgHook
,MUIV_TriggerValue
])
266 doMethodA(tir
,[MUIM_Notify
,MUIA_String_Acknowledge
,MUIV_EveryTime
,app
,2,MUIM_Application_ReturnID
,"init"])
268 doMethodA(log
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,
269 app
,3, MUIM_WriteLong
,MUIV_TriggerValue
,{etatlog
}])
271 doMethodA(log
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,
272 app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
274 doMethodA(endgui
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,
275 app
,3, MUIM_WriteLong
,MUIV_TriggerValue
,{etatendgui
}])
277 doMethodA(ph
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
278 doMethodA(ps
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
279 doMethodA(pp
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
280 doMethodA(pa
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
281 doMethodA(pr
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
282 doMethodA(pw
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
283 doMethodA(pe
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
284 doMethodA(pd
,[MUIM_Notify
,MUIA_Selected
, MUIV_EveryTime
,app
,3, MUIM_Application_ReturnID
,ID_CHANGES
])
287 doMethodA(bt_Rapport
,[MUIM_Notify
,MUIA_Pressed
,0,app
,3,MUIM_WriteLong
,1,{arret
}])
289 doMethodA(bt_p
, [MUIM_Notify
,MUIA_Pressed
,0,app
,2,MUIM_Application_ReturnID
,"use"])
291 doMethodA(win
,[MUIM_Notify
,MUIA_Window_CloseRequest
,MUI_TRUE
, app
,3,MUIM_WriteLong
,1,{arret
}])
293 doMethodA(win
,[MUIM_Window_SetCycleChain
, tir
, ph
,ps
,pp
,pa
,pr
,pw
,pe
,pd
, log
, endgui
, NIL
])
295 set(app
,MUIA_Application_DropObject
,win
)
297 set(bt_Rapport
,MUIA_ShowMe
,0)
298 set(vuetir
,MUIA_ShowMe
,0)
299 set(vuetime
,MUIA_ShowMe
,0)
307 set(app
,MUIA_Application_Iconified
,TRUE)
308 set(win
,MUIA_Window_Open
,MUI_TRUE
)
309 ELSEIF StrLen(str
) >0
310 set(win
,MUIA_Window_Open
,MUI_TRUE
)
311 set(tir
,MUIA_String_Contents
,file
.name
)
316 result:= doMethodA(app
,[MUIM_Application_Input
,{sigs
}])
319 CASE MUIV_Application_ReturnID_Quit
328 get(tir
,MUIA_String_Contents
,{var
})
330 set(bt_p
,MUIA_Disabled
,1)
331 IF (lock
:= Lock(var
, ACCESS_READ
)) = 0
333 mreq(win
,(cat
.msg_TitleErrorReq
.getstr() ) , (cat
.msg_BtOkReq
.getstr() ), (cat
.msg_ErrorReq
.getstr() ) ,[var
,IoErr(),textbuffer
])
334 set(ttir
,MUIA_Text_Contents
,(cat
.msg_NoFound
.getstr() ))
337 IF buffer
[StrLen(buffer
)-1]="/"
338 SetStr(buffer
,StrLen(buffer
)-1)
345 IF ent
AND (etatlog
=1)
347 ELSEIF (ent
=0) AND (etatlog
=0)
348 protectfile(file
.name
)
350 strprotinfo
:=String(StrLen(buffer
)+5)
351 StrCopy(strprotinfo
,buffer
,ALL)
352 StrAdd(strprotinfo
,'.info')
353 -> WriteF('\s\n',strprotinfo
)
354 IF (lockinfo
:= Lock(strprotinfo
, ACCESS_READ
))
355 file
.name
:=strprotinfo
356 protectfile(file
.name
)
363 IF lock
THEN UnLock(lock
)
375 -> set(bt_p
,MUIA_Disabled
,0)
377 set(ttir
,MUIA_Text_Contents
, (cat
.msg_TextNothing
.getstr() ) )
378 set(win
,MUIA_Window_ActiveObject
,tir
)
385 IF (running
AND sigs
) THEN Wait(sigs
)
387 FreeDiskObject(appicon
)
390 IF app
THEN Mui_DisposeObject(app
)
391 IF muimasterbase
THEN CloseLibrary(muimasterbase
)
392 IF iconbase
THEN CloseLibrary(iconbase
)
393 IF scalosbase
THEN CloseLibrary(scalosbase
)
396 IF localebase
THEN CloseLibrary( localebase
)
399 WriteF((cat
.msg_MuiError
.getstr() ) ,MUIMASTER_NAME
)
403 WriteF((cat
.msg_IconLibError
.getstr() ))
407 WriteF((cat
.msg_AppError
.getstr() ))
415 get(tir
,MUIA_String_Contents
,{var
})
417 IF (lock
:= Lock(var
, ACCESS_READ
)) = 0
419 mreq(win
, (cat
.msg_TitleErrorReq
.getstr() ) , (cat
.msg_BtOkReq
.getstr() ), (cat
.msg_ErrorReq
.getstr() ),[var
,IoErr(),textbuffer
])
420 set(ttir
,MUIA_Text_Contents
, (cat
.msg_NoFound
.getstr() ))
423 IF buffer
[StrLen(buffer
)-1]="/"
424 SetStr(buffer
,StrLen(buffer
)-1)
436 IF lock
THEN UnLock(lock
)
438 set(win
,MUIA_Window_ActiveObject
,tir
)
443 DEF lock
=0,fib
:fileinfoblock
446 set(vuetime
,MUIA_ShowMe
,1)
447 doMethodA(aslobj
,[MUIM_Set
,MUIA_Disabled
,TRUE])
448 set(bt_Rapport
,MUIA_ShowMe
,1)
449 set(vuetir
,MUIA_ShowMe
,1)
452 IF debug THEN WriteF('')
453 StrCopy(bufname
,'Examen de : \eb')
454 StrAdd(bufname
,file
.name
)
455 StrAdd(bufname
,' \en...')
457 file
.pname
:=file
.name
458 IF lock
:=Lock(file
.name
,-2)
460 file
.protection
:=fib
.protection
461 CopyMem(fib
.datestamp
,file
.datestamp
,SIZEOF datestamp
)
462 IF fib
.direntrytype
<0
463 file
.numblocks
:=fib
.numblocks
467 -> file
.comment
:=news(fib
.comment
)
475 IF OpenDevice('timer.device', UNIT_MICROHZ
, tr
, 0)=0 ->>> TIMER
476 timerbase
:=tr
.io
.device
480 set(vuetime
,MUIA_ShowMe
,0)
481 doMethodA(aslobj
,[MUIM_Set
,MUIA_Disabled
,FALSE])
487 set(bt_Rapport
,MUIA_ShowMe
,0)
488 set(vuetir
,MUIA_ShowMe
,0)
489 set(vuetime
,MUIA_ShowMe
,0)
490 set(aslobj
,MUIA_Disabled
,FALSE)
492 set(app
,MUIA_Application_Iconified
, FALSE)
493 set(bt_Rapport
,MUIA_ShowMe
,0)
494 set(vuetir
,MUIA_ShowMe
,0)
502 DEF fib
:PTR TO fileinfoblock
,dirlock
=NIL
,path
[256]:STRING,files
[256]:STRING,olddir
= NIL
504 IF(dirlock
:= Lock(dir
,SHARED_LOCK
))
505 olddir
:= CurrentDir(dirlock
)
506 fib
:= AllocDosObject(DOS_FIB
, NIL
)
507 IF (Examine(dirlock
, fib
))
508 WHILE
ExNext(dirlock
, fib
) AND (arret
=0)
509 IF(fib
.entrytype
=-3) -> Fichier
510 file
.pname
:=fib
.filename
511 StrCopy(files
,fib
.filename
,ALL)
512 set(filev
,MUIA_Text_Contents
,files
)
513 doMethodA(app
,[MUIM_Application_InputBuffered
])
514 protectfile(file
.pname
)
515 doMethodA(app
,[MUIM_Application_InputBuffered
])
517 ex_size
:=ex_size
+fib
.size
520 NameFromLock(dirlock
,path
,StrMax(path
))
521 -> StrCopy(path
,fib
.filename
)
522 set(tirv
,MUIA_Text_Contents
,path
)
523 file
.pname
:=fib
.filename
524 protectfile(file
.pname
)
525 doMethodA(app
,[MUIM_Application_InputBuffered
])
527 doMethodA(app
,[MUIM_Application_InputBuffered
])
545 FreeDosObject(DOS_FIB
, fib
)
553 StringF(btime
,'0\d:0\d:\d[02]', m
,bb
.secs
, bb
.micro
)
555 StringF(btime
,'0\d:\d:\d[02]', m
,bb
.secs
, bb
.micro
)
558 StringF(btime
,'\d:\d:\d[02]', m
,bb
.secs
, bb
.micro
)
560 set(temps
,MUIA_Text_Contents
,btime
)
565 myname
:=getprogname()
567 IF rdargs
:=ReadArgs('Files/A/M',myargs
,NIL
)
571 IF str
[StrLen(str
)-1]="/"
572 str
[StrLen(str
)-1]:=0
574 IF c
=0 THEN file
.name
:=news(str
) ELSE loadfile(myname
,str
)
583 NameFromLock(args
[0].lock
,str
,256)
584 IF StrLen(args
[0].name
)>0 THEN AddPart(str
, args
[0].name
,256)
589 FOR rdargs
:=2 TO wb
.numargs
-1
590 NameFromLock(args
[rdargs
].lock
,str
,256)
591 IF StrLen(args
[rdargs
].name
)>0 THEN AddPart(str
, args
[rdargs
].name
,256)
595 NameFromLock(args
[1].lock
,str
,256)
596 IF StrLen(args
[1].name
)>0 THEN AddPart(str
, args
[1].name
,256)
601 StringF(str
,'\s',file
.name
)
609 DEF dlock
=NIL
, info
:PTR TO fileinfoblock
611 info
:=AllocDosObject(DOS_FIB
, NIL
)
612 IF dlock
:=Lock(file
.name
,-2)
614 IF info
.direntrytype
=-3
616 set(log
,MUIA_Disabled
,1)
617 set(ttir
,MUIA_Text_Contents
,(cat
.msg_TypeProject
.getstr() ))
618 ELSEIF info
.direntrytype
=1
620 set(ttir
,MUIA_Text_Contents
,(cat
.msg_TypeDisk
.getstr() ))
621 set(log
,MUIA_Selected
,1)
622 StrCopy(str
,file
.name
)
623 ELSEIF info
.direntrytype
=2
625 IF (debut
=1) THEN initfile(file
.name
) ELSE comfile(file
.name
)
626 set(log
,MUIA_Disabled
,0)
627 set(ttir
,MUIA_Text_Contents
,(cat
.msg_TypeDrawer
.getstr() ))
628 StrCopy(str
,file
.name
)
629 IF str
[(StrLen(str
)-1)]=":" THEN set(ttir
,MUIA_Text_Contents
,(cat
.msg_TypeAssign
.getstr() ))
630 IF str
[(StrLen(str
)-1)]<>":" THEN
635 -> WriteF('type = \d\n',info
.direntrytype
)
639 FreeDosObject(DOS_FIB
, info
)
642 ->*********************
644 PROC
initfile(fichier
)
645 DEF fib
:fileinfoblock
,lock
=0
647 IF lock
:=Lock(fichier
,-2)
649 file
.numblocks
:=fib
.numblocks
652 file
.comment
:=fib
.comment
656 mreq(win
,(cat
.msg_TitleErrorReq
.getstr() ), (cat
.msg_BtOkReq
.getstr() ), (cat
.msg_ErrorReq
.getstr() ) ,[fichier
,IoErr(),textbuffer
])
660 PROC
comfile(fichier
)
661 DEF fib
:fileinfoblock
,lock
=0
663 IF lock
:=Lock(fichier
,-2)
671 ->*********************
674 Fault(IoErr(),NIL
,textbuffer
,80)
677 PROC
mreq(obj
,tobj
,tbt
,tmreq
,tamp
)
678 Mui_RequestA(app
, obj
, 0, tobj
, tbt
, tmreq
, tamp
)
681 PROC
appMsgFunc(hook
,obj
,x
:PTR TO LONG
)
683 amsg
:PTR TO appmessage
,
685 buf
[256]:STRING,b
,bufapp
[256]:STRING
690 WHILE (i
<amsg
.numargs
)
691 NameFromLock(ap
.lock
,buf
,StrMax(buf
))
692 AddPart(buf
,ap
.name
,StrMax(buf
))
694 StringF(bufapp
,'\s',b
)
702 PROC
loadfile(prog
,file
=0); DEF str
[600]:STRING
703 StringF(str
,'STACK 10000\nrun <>nil: "\s"',prog
)
704 IF file
THEN StringF(str
,'\s "\s"',str
,file
)
705 IF debug THEN WriteF('\s\n',str
)
706 Execute(str
,0,stdout
)
711 DEF lock
=0,fib
:fileinfoblock
713 file
.pname
:=file
.name
714 IF lock
:=Lock(file
.name
,-2)
716 file
.protection
:=fib
.protection
717 CopyMem(fib
.datestamp
,file
.datestamp
,SIZEOF datestamp
)
718 ah
:= IF file
.protection
AND FIBF_HIDDEN
THEN 1 ELSE 0
719 as := IF file
.protection
AND FIBF_SCRIPT
THEN 1 ELSE 0
720 ap
:= IF file
.protection
AND FIBF_PURE
THEN 1 ELSE 0
721 aa
:= IF file
.protection
AND FIBF_ARCHIVE
THEN 1 ELSE 0
722 ar
:= IF file
.protection
AND FIBF_READ
THEN 0 ELSE 1
723 aw
:= IF file
.protection
AND FIBF_WRITE
THEN 0 ELSE 1
724 ae
:= IF file
.protection
AND FIBF_EXECUTE
THEN 0 ELSE 1
725 ad
:= IF file
.protection
AND FIBF_DELETE
THEN 0 ELSE 1
727 set(ph
,MUIA_Selected
,ah
)
728 set(ps
,MUIA_Selected
,as)
729 set(pp
,MUIA_Selected
,ap
)
730 set(pa
,MUIA_Selected
,aa
)
731 set(pr
,MUIA_Selected
,ar
)
732 set(pw
,MUIA_Selected
,aw
)
733 set(pe
,MUIA_Selected
,ae
)
734 set(pd
,MUIA_Selected
,ad
)
742 DEF vh
,vs
,vp
,va
,vr
,vw
,ve
,vd
745 get(ph
,MUIA_Selected
,{vh
})
746 get(ps
,MUIA_Selected
,{vs
})
747 get(pp
,MUIA_Selected
,{vp
})
748 get(pa
,MUIA_Selected
,{va
})
749 get(pr
,MUIA_Selected
,{vr
})
750 get(pw
,MUIA_Selected
,{vw
})
751 get(pe
,MUIA_Selected
,{ve
})
752 get(pd
,MUIA_Selected
,{vd
})
753 IF (vh
<>ah
) OR (vs
<>as) OR (vp
<>ap
) OR (va
<>aa
) OR (vr
<>ar
) OR (vw
<>aw
) OR (ve
<>ae
) OR (vd
<>ad
)
754 set(bt_p
,MUIA_Disabled
,0)
756 IF etatlog
THEN set(bt_p
,MUIA_Disabled
,0) ELSE set(bt_p
,MUIA_Disabled
,1)
761 PROC
protectfile(fichier
)
762 DEF nh
=NIL
,ns
=NIL
,np
=NIL
,na
=NIL
,nr
=NIL
,nw
=NIL
,ne
=NIL
,nd
=NIL
,nprot
=0,pt
=NIL
765 get(ph
,MUIA_Selected
,{nh
})
766 get(ps
,MUIA_Selected
,{ns
})
767 get(pp
,MUIA_Selected
,{np
})
768 get(pa
,MUIA_Selected
,{na
})
769 get(pr
,MUIA_Selected
,{nr
})
770 get(pw
,MUIA_Selected
,{nw
})
771 get(pe
,MUIA_Selected
,{ne
})
772 get(pd
,MUIA_Selected
,{nd
})
774 IF nh
=1 THEN nprot
:=nprot
+FIBF_HIDDEN
775 IF ns
=1 THEN nprot
:=nprot
+FIBF_SCRIPT
776 IF np
=1 THEN nprot
:=nprot
+FIBF_PURE
777 IF na
=1 THEN nprot
:=nprot
+FIBF_ARCHIVE
778 IF nr
=0 THEN nprot
:=nprot
+FIBF_READ
779 IF nw
=0 THEN nprot
:=nprot
+FIBF_WRITE
780 IF ne
=0 THEN nprot
:=nprot
+FIBF_EXECUTE
781 IF nd
=0 THEN nprot
:=nprot
+FIBF_DELETE
782 pt
:=SetProtection(fichier
,nprot
)
785 -> WriteF('\s:\tH=\d S=\d P=\d A=\d R=\d W=\d E= \d D=\d\n',fichier
,nh
,ns
,np
,na
,nr
,nw
,ne
,nd
)
789 mreq(win
, (cat
.msg_TitleErrorReq
.getstr() ) , (cat
.msg_BtOkReq
.getstr() ), (cat
.msg_ErrorReq
.getstr() ),[fichier
,IoErr(),textbuffer
])
793 PROC
proTxtObject(s
) IS TextObject
,
794 MUIA_Text_Contents
,s
,
797 PROC
makeIMG(sel
,help
) IS ImageObject
,
800 MUIA_FixHeight
, 8, */
801 MUIA_InputMode
, MUIV_InputMode_Toggle
,
802 MUIA_Image_Spec
, MUII_CheckMark
,
803 MUIA_Image_FreeVert
, TRUE,
805 MUIA_Background
, MUII_ButtonBack
,
806 MUIA_ShowSelState
, FALSE,
807 MUIA_ShortHelp
, help
,
810 CHAR VERSTAG
, __TARGET__
, 0