Initial import of Scalos. To decrease size I have
[AROS-Contrib.git] / scalos / main / Tools / Protect.MUI / Protect.module.e
blob8dc8166ac21e1af50e44b166b29ab079f53215c7
1 OPT PREPROCESS
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'
10 OBJECT ttype
11 name
12 next:PTR TO ttype
13 ENDOBJECT
15 OBJECT disk
16 size
17 used
18 free
19 blksize
20 ENDOBJECT
22 OBJECT file
23 name
24 doname
25 iname
26 pname
28 comment
29 protection
30 numblocks, size
31 datestamp:datestamp
32 infodata:infodata
33 tt:ttype
34 numtt
35 nt:ttype
36 nic
37 type
38 noicon
39 stack
40 deftool
41 not
42 nod
43 pat
44 ENDOBJECT
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
63 PROC o_pref()
64 DEF bufo[2]:STRING,bufo2[2]:STRING,n,outfile=NIL,line[1024]:ARRAY OF CHAR
65 n:=0
66 IF outfile:=Open(prefile,OLDFILE)
67 WHILE (Fgets(outfile, line, 3))
68 n++
69 IF n=1
70 StrCopy(bufo,line,StrLen(line)-1)
71 -> WriteF('n[\d] bufo = \s\n', n, bufo)
72 ENDIF
73 ENDWHILE
75 IF StrCmp(bufo,'0')=TRUE
76 set(endgui,MUIA_Selected,0)
77 ELSEIF StrCmp(bufo,'1')=TRUE
78 set(endgui,MUIA_Selected,1)
79 ENDIF
81 Close(outfile)
82 ENDIF
83 ENDPROC
85 PROC s_pref()
86 DEF bufs[3]:STRING,outfile=NIL
88 get(endgui,MUIA_Selected,{etatendgui})
89 outfile:=Open(prefile,NEWFILE)
90 StringF(bufs,'\d\n',etatendgui)
91 Fputs(outfile,bufs)
92 Close(outfile)
93 ENDPROC
95 PROC main() HANDLE
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 )
103 NEW cat.create()
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,
125 Child,HGroup,
126 Child, Label2((cat.msg_Entry.getstr() )),
127 Child, PopaslObject,
128 MUIA_Popstring_String, tir:=BetterStringObject, TextFrame,
129 MUIA_String_Format , MUIV_String_Format_Center ,
130 End,
131 MUIA_Popstring_Button, aslobj:=PopButton(MUII_PopFile),
132 ASLFR_TITLETEXT, (cat.msg_Asltext.getstr() ),
133 End,
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' ,
139 MUIA_Weight, 40,
140 End,
141 End,
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() ) ),
166 End,
167 Child, Mui_MakeObjectA(MUIO_HBar,[2]),
169 Child,HGroup,MUIA_Frame ,MUIV_Frame_Text ,
170 Child, RectangleObject,
171 End,
172 Child,Label1((cat.msg_All.getstr() )),
173 MUIA_Font, MUIV_Font_Normal,
174 Child, log:=ImageObject, MUIA_ShortHelp, (cat.msg_HelpAll.getstr() ),
175 ImageButtonFrame,
176 MUIA_FixWidth, 4,
177 MUIA_FixHeight, 8,
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,
184 End,
185 Child, RectangleObject,
186 End,
187 Child,Label1((cat.msg_Quit.getstr() )),
188 MUIA_Font, MUIV_Font_Normal,
189 Child, endgui:=ImageObject, MUIA_ShortHelp, (cat.msg_HelpQuit.getstr() ),
190 ImageButtonFrame,
191 MUIA_FixWidth, 4,
192 MUIA_FixHeight, 8,
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,
199 End,
200 Child, RectangleObject,
201 End,
202 Child, bt_p:=SimpleButton((cat.msg_Protect.getstr() )),
203 Child, HGroup,
204 Child, HSpace(1),
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' ,
211 MUIA_Weight, 80,
212 End,
213 Child, RectangleObject,
214 End,
216 Child, vuetime := GroupObject,
217 Child, HGroup,
218 Child, RectangleObject,
219 End,
220 Child, Label2((cat.msg_Time.getstr() )),
221 Child, temps:= TextObject, TextFrame,
222 MUIA_Background, MUII_TextBack,
223 MUIA_Text_PreParse , '\ec' ,
224 MUIA_FixWidth, 50,
225 End,
226 End,
227 End,
228 End,
229 End,
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 ,
235 Child, HGroup,
236 Child, HSpace(1),
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' ,
242 End,
243 End,
244 Child, HGroup,
245 Child, HSpace(1),
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' ,
251 End,
252 Child, HSpace(1),
253 End,
254 End,
255 ->>>
256 End,
257 End,
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)
301 o_pref()
303 getargs()
306 IF StrLen(str) = 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)
312 ENDIF
315 WHILE running
316 result:= doMethodA(app,[MUIM_Application_Input,{sigs}])
318 SELECT result
319 CASE MUIV_Application_ReturnID_Quit
320 s_pref()
321 running:=FALSE
323 CASE "init"
324 getinit()
325 changebtapply()
327 CASE "use"
328 get(tir,MUIA_String_Contents,{var})
329 IF StrLen(var) <> 0
330 set(bt_p,MUIA_Disabled,1)
331 IF (lock := Lock(var, ACCESS_READ)) = 0
332 faute()
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() ))
335 ELSE
336 StrCopy(buffer,var)
337 IF buffer[StrLen(buffer)-1]="/"
338 SetStr(buffer,StrLen(buffer)-1)
339 ENDIF
341 file.name:=buffer
342 StrCopy(str,buffer)
343 file.type:=-10
344 diskobjects()
345 IF ent AND (etatlog=1)
346 examine()
347 ELSEIF (ent=0) AND (etatlog=0)
348 protectfile(file.name)
349 ENDIF
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)
357 UnLock(lockinfo)
359 ENDIF
362 ENDIF
363 IF lock THEN UnLock(lock)
364 IF (etatendgui=1)
365 s_pref()
366 running:=FALSE
367 ELSE
368 file.name:=NIL
369 file.pname:=NIL
370 var:=NIL
371 getinit()
372 changebtapply()
373 ENDIF
374 s_pref()
375 -> set(bt_p,MUIA_Disabled,0)
376 ELSE
377 set(ttir,MUIA_Text_Contents, (cat.msg_TextNothing.getstr() ) )
378 set(win,MUIA_Window_ActiveObject,tir)
379 ENDIF
381 CASE ID_CHANGES
382 changebtapply()
383 ENDSELECT
385 IF (running AND sigs) THEN Wait(sigs)
386 ENDWHILE
387 FreeDiskObject(appicon)
389 EXCEPT DO
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)
395 cat.close()
396 IF localebase THEN CloseLibrary( localebase )
397 SELECT exception
398 CASE ER_MUILIB
399 WriteF((cat.msg_MuiError.getstr() ) ,MUIMASTER_NAME)
400 CleanUp(20)
402 CASE ER_ICONLIB
403 WriteF((cat.msg_IconLibError.getstr() ))
404 CleanUp(20)
406 CASE ER_APP
407 WriteF((cat.msg_AppError.getstr() ))
408 CleanUp(20)
410 ENDSELECT
411 ENDPROC 0
413 ->**************
414 PROC getinit()
415 get(tir,MUIA_String_Contents,{var})
416 IF StrLen(var) <> 0
417 IF (lock := Lock(var, ACCESS_READ)) = 0
418 faute()
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() ))
421 ELSE
422 StrCopy(buffer,var)
423 IF buffer[StrLen(buffer)-1]="/"
424 SetStr(buffer,StrLen(buffer)-1)
425 ENDIF
427 file.name:=buffer
428 StrCopy(str,buffer)
430 file.type:=-10
431 debut:=1
432 getprotect()
433 diskobjects()
434 debut:=0
435 ENDIF
436 IF lock THEN UnLock(lock)
437 ELSE
438 set(win,MUIA_Window_ActiveObject,tir)
439 ENDIF
440 ENDPROC
442 PROC examine()
443 DEF lock=0,fib:fileinfoblock
445 m:=0
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)
450 ex_dirs:=0
451 ex_files:=0
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)
459 Examine(lock,fib)
460 file.protection:=fib.protection
461 CopyMem(fib.datestamp,file.datestamp,SIZEOF datestamp)
462 IF fib.direntrytype<0
463 file.numblocks:=fib.numblocks
464 file.size:=fib.size
465 ENDIF
467 -> file.comment:=news(fib.comment)
469 UnLock(lock)
470 ELSE
471 file.pname:=0
472 ENDIF
473 arret:=0
474 NEW tr, at, bb
475 IF OpenDevice('timer.device', UNIT_MICROHZ, tr, 0)=0 ->>> TIMER
476 timerbase:=tr.io.device
477 GetSysTime(at)
478 ENDIF
479 getdir()
480 set(vuetime,MUIA_ShowMe,0)
481 doMethodA(aslobj,[MUIM_Set,MUIA_Disabled,FALSE])
482 ENDPROC
484 PROC getdir()
485 exdir(file.name)
486 IF arret
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)
491 ELSE
492 set(app,MUIA_Application_Iconified, FALSE)
493 set(bt_Rapport,MUIA_ShowMe,0)
494 set(vuetir,MUIA_ShowMe,0)
495 Dispose(at)
496 Dispose(bb)
497 CloseDevice(tr)
498 ENDIF
499 ENDPROC
501 PROC exdir(dir)
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])
516 ex_files++
517 ex_size:=ex_size+fib.size
519 ELSE
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])
526 exdir(fib.filename)
527 doMethodA(app,[MUIM_Application_InputBuffered])
528 ENDIF
529 GetSysTime(bb)
530 SubTime(bb,at)
531 IF bb.secs>59
532 Dispose(bb)
533 Dispose(at)
534 m:=m+1
535 GetSysTime(at)
536 GetSysTime(bb)
537 SubTime(bb,at)
538 ENDIF
539 get_time()
540 ENDWHILE
541 ENDIF
542 UnLock(dirlock)
543 ENDIF
544 CurrentDir(olddir)
545 FreeDosObject(DOS_FIB, fib)
546 ENDPROC
548 ->**************
550 PROC get_time()
551 IF m<10
552 IF bb.secs<10
553 StringF(btime,'0\d:0\d:\d[02]', m,bb.secs, bb.micro)
554 ELSE
555 StringF(btime,'0\d:\d:\d[02]', m,bb.secs, bb.micro)
556 ENDIF
557 ELSE
558 StringF(btime,'\d:\d:\d[02]', m,bb.secs, bb.micro)
559 ENDIF
560 set(temps,MUIA_Text_Contents,btime)
561 ENDPROC
563 PROC getargs()
564 IF wbmessage=NIL
565 myname:=getprogname()
566 myargs:=[0]
567 IF rdargs:=ReadArgs('Files/A/M',myargs,NIL)
568 marg0:=myargs[0]
569 WHILE marg0[]
570 StrCopy(str,marg0[])
571 IF str[StrLen(str)-1]="/"
572 str[StrLen(str)-1]:=0
573 ENDIF
574 IF c=0 THEN file.name:=news(str) ELSE loadfile(myname,str)
575 marg0[]++
577 ENDWHILE
578 ent:=1
579 ENDIF
580 ELSE /* from wb */
581 wb:=wbmessage
582 args:=wb.arglist
583 NameFromLock(args[0].lock,str,256)
584 IF StrLen(args[0].name)>0 THEN AddPart(str, args[0].name,256)
585 myname:=news(str)
586 ent:=0
587 IF wb.numargs>=2
588 IF wb.numargs>2
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)
592 loadfile(myname,str)
593 ENDFOR
594 ENDIF
595 NameFromLock(args[1].lock,str,256)
596 IF StrLen(args[1].name)>0 THEN AddPart(str, args[1].name,256)
597 file.name:=news(str)
598 ENDIF
599 ENDIF
600 file.type:=-10
601 StringF(str,'\s',file.name)
602 getprotect()
603 diskobjects()
604 debut:=0
606 ENDPROC
608 PROC diskobjects()
609 DEF dlock=NIL, info:PTR TO fileinfoblock
611 info:=AllocDosObject(DOS_FIB, NIL)
612 IF dlock:=Lock(file.name,-2)
613 Examine(dlock, info)
614 IF info.direntrytype=-3
615 ent:=0
616 set(log,MUIA_Disabled,1)
617 set(ttir,MUIA_Text_Contents,(cat.msg_TypeProject.getstr() ))
618 ELSEIF info.direntrytype=1
619 ent:=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
624 ent:=1
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
631 StrAdd(str,'/')
632 file.name:=str
633 ENDIF
635 -> WriteF('type = \d\n',info.direntrytype)
637 UnLock(dlock)
638 ENDIF
639 FreeDosObject(DOS_FIB, info)
640 ENDPROC
642 ->*********************
644 PROC initfile(fichier)
645 DEF fib:fileinfoblock,lock=0
647 IF lock:=Lock(fichier,-2)
648 Examine(lock,fib)
649 file.numblocks:=fib.numblocks
650 file.size:=fib.size
651 getprotect()
652 file.comment:=fib.comment
653 UnLock(lock)
654 ELSE
655 faute()
656 mreq(win,(cat.msg_TitleErrorReq.getstr() ), (cat.msg_BtOkReq.getstr() ), (cat.msg_ErrorReq.getstr() ) ,[fichier,IoErr(),textbuffer])
657 ENDIF
658 ENDPROC
660 PROC comfile(fichier)
661 DEF fib:fileinfoblock,lock=0
663 IF lock:=Lock(fichier,-2)
664 Examine(lock,fib)
665 file.pname:=fichier
666 protectfile(fichier)
667 UnLock(lock)
668 ENDIF
669 ENDPROC
671 ->*********************
673 PROC faute()
674 Fault(IoErr(),NIL,textbuffer,80)
675 ENDPROC
677 PROC mreq(obj,tobj,tbt,tmreq,tamp)
678 Mui_RequestA(app, obj, 0, tobj, tbt, tmreq, tamp)
679 ENDPROC
681 PROC appMsgFunc(hook,obj,x:PTR TO LONG)
682 DEF ap:PTR TO wbarg,
683 amsg:PTR TO appmessage,
685 buf[256]:STRING,b,bufapp[256]:STRING
687 amsg:=x[]
688 b:=buf;i:=0
689 ap:=amsg.arglist
690 WHILE (i<amsg.numargs)
691 NameFromLock(ap.lock,buf,StrMax(buf))
692 AddPart(buf,ap.name,StrMax(buf))
693 file.name:=b
694 StringF(bufapp,'\s',b)
695 loadfile(myname,buf)
696 ap++
698 ENDWHILE
699 ENDPROC
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)
707 ENDPROC
710 PROC getprotect()
711 DEF lock=0,fib:fileinfoblock
713 file.pname:=file.name
714 IF lock:=Lock(file.name,-2)
715 Examine(lock,fib)
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
726 IF (debut=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)
735 ENDIF
736 UnLock(lock)
737 ENDIF
739 ENDPROC
741 PROC changebtapply()
742 DEF vh,vs,vp,va,vr,vw,ve,vd
744 IF file.pname<>0
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)
755 ELSE
756 IF etatlog THEN set(bt_p,MUIA_Disabled,0) ELSE set(bt_p,MUIA_Disabled,1)
757 ENDIF
758 ENDIF
759 ENDPROC
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)
787 IF pt=FALSE
788 faute()
789 mreq(win, (cat.msg_TitleErrorReq.getstr() ) , (cat.msg_BtOkReq.getstr() ), (cat.msg_ErrorReq.getstr() ),[fichier,IoErr(),textbuffer])
790 ENDIF
791 ENDPROC
793 PROC proTxtObject(s) IS TextObject,
794 MUIA_Text_Contents,s,
797 PROC makeIMG(sel,help) IS ImageObject,
798 ImageButtonFrame,
799 /* MUIA_FixWidth, 4,
800 MUIA_FixHeight, 8, */
801 MUIA_InputMode, MUIV_InputMode_Toggle,
802 MUIA_Image_Spec, MUII_CheckMark,
803 MUIA_Image_FreeVert, TRUE,
804 MUIA_Selected, sel,
805 MUIA_Background, MUII_ButtonBack,
806 MUIA_ShowSelState, FALSE,
807 MUIA_ShortHelp, help,
810 CHAR VERSTAG, __TARGET__, 0