Article View: vmsnet.sources
Article #135DWProfile V3.3, part 01/06
From: tanner
Date: Mon, 04 Jan 1993 20:46
Date: Mon, 04 Jan 1993 20:46
1551 lines
50405 bytes
50405 bytes
Submitted-by: tanner@cerritos.edu
Posting-number: Volume 4, Issue 26
Archive-name: dwprofile/part01
DWProfile is a DECwindows Motif application that creates, modifies and
deletes UAF records. It will perform most of the functions of AUTHORIZE
and will also automatically create, move and delete directories.
--
Bruce Tanner (310) 860-2451 x 596 Tanner@Cerritos.EDU
Cerritos College Norwalk, CA DoD #0161 NOMAD #007
$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 7.2-007 22-FEB-1990
$! On 18-DEC-1992 13:25:24.51 By user TANNER
$!
$! This VMS_SHARE Written by:
$! Andy Harper, Kings College London UK
$!
$! Acknowledgements to:
$! James Gray - Original VMS_SHARE
$! Michael Bednarek - Original Concept and implementation
$!
$!+ THIS PACKAGE DISTRIBUTED IN 6 PARTS, TO KEEP EACH PART
$! BELOW 100 BLOCKS
$!
$! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
$! AND EXECUTE AS A COMMAND PROCEDURE ( @name )
$!
$! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
$! 1. AAAREADME.TXT;44
$! 2. ABSTRACT.TXT;1
$! 3. ACCESS.UIL;39
$! 4. BUTTONS.UIL;79
$! 5. DELTREE.COM;4
$! 6. DESCRIP.MMS;39
$! 7. DWPDEF.H;49
$! 8. DWPROFILE.C;445
$! 9. DWPROFILE.DAT;91
$! 10. DWPROFILE.HLP;21
$! 11. DWPROFILE.UIL;44
$! 12. FLAGS.UIL;51
$! 13. IDENTS.UIL;33
$! 14. MOTIF.OPT;3
$! 15. MOVE_DIRECTORY.COM;10
$! 16. PRIVS.UIL;61
$! 17. QUOTAS.UIL;16
$! 18. RESETOWNER.COM;19
$! 19. TEXT.UIL;25
$!
$set="set"
$set symbol/scope=(nolocal,noglobal)
$f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID"))
$e="write sys$error ""%UNPACK"", "
$w="write sys$output ""%UNPACK"", "
$ if f$trnlnm("SHARE_LOG") then $ w = "!"
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto START
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$UNPACK: SUBROUTINE ! P1=filename, P2=checksum
$ if f$search(P1) .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped."
$ delete 'f'*
$ exit
$file_absent:
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'."
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn'. File skipped."
$ delete 'f'*
$ exit
$dirok:
$ w "-I-PROCESS, Processing file ''P1'."
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='P1'
PROCEDURE Unpacker ON_ERROR ENDON_ERROR;SET(FACILITY_NAME,"UNPACK");SET(
SUCCESS,OFF);SET(INFORMATIONAL,OFF);f:=GET_INFO(COMMAND_LINE,"file_name");b:=
CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(b));
LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION(
BEGINNING_OF(b));g:=0;LOOP EXITIF MARK(NONE)=END_OF(b);x:=ERASE_CHARACTER(1);
IF g=0 THEN IF x="X" THEN MOVE_VERTICAL(1);ENDIF;IF x="V" THEN APPEND_LINE;
MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);ENDIF;IF x="+" THEN g:=1;
ERASE_LINE;ENDIF;ELSE IF x="-" THEN IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+")=
1 THEN g:=0;ENDIF;ENDIF;ERASE_LINE;ENDIF;ENDLOOP;t:="0123456789ABCDEF";
POSITION(BEGINNING_OF(b));LOOP r:=SEARCH("`",FORWARD);EXITIF r=0;POSITION(r);
ERASE(r);x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,ERASE_CHARACTER(1))-1;
COPY_TEXT(ASCII(16*x1+x2));ENDLOOP;WRITE_FILE(b,GET_INFO(COMMAND_LINE,
"output_file"));ENDPROCEDURE;Unpacker;QUIT;
$ delete/nolog 'f'*
$ CHECKSUM 'P1'
$ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT
$ e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ ENDSUBROUTINE
$START:
$ create 'f'
XInstallation:
X`09The logical name DWPUID needs to point to the directory that contains
X`09DWPROFILE.UID, ACCESS.UID, PRIVS.UID, IDENTS.UID, RESETOWNER.COM,
X`09DELTREE.COM, MOVE_DIRECTORY.COM and DWPROFILE.HLB.
X`09DWPROFILE.DAT must be put in DECW$SYSTEM_DEFAULTS: (World Readable)
X`09or DECW$USER_DEFAULTS:
X
X`09To rebuild:
X`09UIL/MOTIF DWPROFILE
X`09UIL/MOTIF ACCESS
X`09UIL/MOTIF PRIVS
X`09UIL/MOTIF IDENTS
X`09CC DWPROFILE
X`09LINK DWPROFILE,MOTIF/OPT
X`09LIBRARY/CREATE/HELP DWPROFILE.HLB DWPROFILE.HLP
X
X`09or if you have MMS, use the DESCRIP.MMS file.
X
XOperation:
X`09The interface is supposed to be intuitive, but here's what the buttons
X`09and stuff do:
X
X`09'Read Identifiers' forces the list of identifiers to be reloaded.
X`09This is only necessary if new identifiers have been created since
X`09DWProfile was started.
X
X`09'Read' reads in the UAF entry given by the 'username' widget.
X
X`09'Find Next' will search the UAF for a field that is specified by
X`09the 'Select' menu.
X
X`09'Write' writes out those fields that were changed for the specified
X`09record. If the UAF record is created, the UIC, owner, account, default
X`09device and directory must also be specified. A new directory is created
X`09if necessary, the directory tree will be moved if the device/directory
X`09field changes.
X
X`09'Remove' removes the specified UAF record. The directory tree is deleted
V.
X
X`09'Quit' exits the program.
X
X`09'Access...' pops up or removes a window that displays the hours
X`09available for each category of access. Click and drag in these
X`09windows to change the time.
X
X`09'Privs...' pops up or removes a window that displays the default and
X`09authorized privileges.
X
X`09'Accounts...' pops up or removes a selection widget that provides a
X`09list of group identifier names. A new UIC is calculated from this
X`09group number.
X
X`09'Idents...' pops up up or removes a pair of list boxes that contain
X`09the identifiers that may be granted and the identifiers that are held
X`09by the UIC.
X
X`09'Select' lets you select a field and contents for the 'Find Next' button.
X
XNon-obvious interactions:
X`09If DWProfile is defined as a symbol, the initial username can be
X`09specified after the symbol name, e.g. dwp :== $dwprofile and then
X`09dwp tanner.
X
X`09If return is pressed in the 'username' widget, the 'Read' button routine
X`09is executed.
X
X`09If the return key is pressed in the 'account' widget and the UIC is
X`09`5B0,0`5D, a new UIC will be calculated.
X
XScreen/font interactions:
X`09The default 75DPI font used on 19" monitors, is smaller than the default
X`09100DPI font used on 15" monitors. If the application's widgets are
X`09positioned for the 75DPI fonts, the text fields will probably overlap.
X`09I've explicitly specified that the 75DPI 12 point Helvetica Bold font
X`09will be used by all widgets (see DWPROFILE.DAT). This is almost the
X`09same as the default 75DPI font, except that the pitch is narrower.
X
XCustomization:
X`09There are a couple of non-widget resources that DWProfile can use.
X`09The default value is in parenthesis.
X
X DWProfile.quota (none) and DWProfile.overdraft (none) set the disk q
Vuota
X and overdraft used when creating a new directory.
X
X`09DWProfile.defaultIdent ("") will position the list box of identifiers
X`09to show this idenifier item if it exists. In other words, if there
X`09is a 'staff' identifier that almost everyone gets, this will
X`09automatically scroll the list widget to show 'staff'.
X
X`09DWProfile.showAccess (False), DWProfile.showPrivs (False),
X`09DWProfile.showAccounts (False), DWProfile.showIdents (False) will
X`09automatically display the specified windows.
X
X`09DWProfile.readNotifyInterval (-2) will provide notification
X`09when reading a non-existant user name. See findNotifyInterval for a`20
X`09description of the value. `20
X
X`09DWProfile.writeNotifyInterval (-2) will provide notification
X`09upon successful creation/update of a UAF record. See findNotifyInterval
X`09for a description of the value. `20
X
X`09DWProfile.findNotifyInterval (-1) will provide notification of a
X`09non-existant UAF record when searching through the list of UIC-type
X`09identifiers. The interpretation of the interval is:
X`09-2 means don't notify at all
X`09-1 means display the message on sys$output (the DECterm, fileview output,
V etc.)
X`090 means pop up a message window
X`09n means pop up a message window for n milliseconds or until the OK button
V is pressed.
X
X`09DWProfile.versionLimit (0) will define the version limit of a user's
X`09directory created by DWProfile. The version limit is normally
X`09inherited from the parent directory.
X
X`09DWProfile.minimumGroup (0) and DWProfile.maximumGroup (32767) specify
X`09the minimum and maximum groups that will be calculated when a new UIC
X`09is generated. For example, your group numbers start with 200 and
X`09extend upward, but you have network servers with UIC group numbers at
X`09400. A new account string will generate a UIC group above 400 rather
X`09than in the 200's that you'd wish. Setting maximumGroup to be 255
X`09(377 octal) will cause DWProfile to ignore UICs above `5B400,0`5D for the
X`09purposes of making a new UIC. minimumGroup won't mean anything
X`09unless you are creating a new range of group numbers.
X
X`09You can override the resources in DECW$SYSTEM_DEFAULTS:DWPROFILE.DAT by
X`09specifying resources in SYS$USER_DEFAULTS:DWPROFILE.DAT or
X`09SYS$LOGIN:DECW$XDEFAULTS.DAT. Just remember that you have to log back
X`09in to reload the new DECW$XDEFAULTS.DAT.
X
XThings to do:
X`09Add/Remove identifiers (maybe). Is this needed?
X
X`09It turns out that the login flags and quotas aren't used often.
X`09Perhaps they can be put into their own window?
X`09Then we'd have room for password changed date, pwd expired button,
X`09disk quota and overdraft.
X
X`09Save a named default UAF record other than the DEFAULT UAF record.
X`09Include things like identifiers, disk quota.
X
X`09Pop up requestor on search for date fields, numeric fields, to ask for
X`09a relation. Flags and privs would have a mask and match. Identifiers
X`09are easy ($find_holder).
X
X`09Something else might be done with the list of matched identifiers.
X`09Write username/owner/etc. to a file? Print widget?`20
X
X`09Use XtVaSetArgs(), XmNmodifyVerify callback
X
XAcknowledgements:
X`09This program was inspired by and named after Profile by John Howells.
X`09Some of the techniques used in DWProfile were gratefully stolen from
X`09that program.
X
X`09DELTREE.COM was posted to comp.os.vms by Jamie Hanrahan, Simpact
X`09Associates, San Diego CA.
X
XBugs/fixes/suggestions/praise/brickbats to:
X
X`09Tanner@Cerritos.EDU
X
X`09Bruce Tanner
X`09Cerritos College
X`09Computer Services
X`0911110 Alondra Blvd.
X`09Norwalk, CA 90650
X
X`09(310) 860-2451 x596
$ CALL UNPACK AAAREADME.TXT;44 628854647
$ create 'f'
XDWProfile is a DECwindows Motif application that creates, modifies and
Xdeletes UAF records. It will perform most of the functions of AUTHORIZE
Xand will also automatically create, move and delete directories.
X
XDWProfile will also search and display UAF records based on fields matching
X(possibly wildcarded) selection criteria.
X
XSource: C, UIL
XRequires: DECwindows Motif V1.0A or higher.
$ CALL UNPACK ABSTRACT.TXT;1 1007373165
$ create 'f'
Xmodule Access
X`09names = case_sensitive
X
X objects = `7B
X XmLabel = gadget;
X XmPushButton = gadget;
X XmToggleButton = gadget;
X `7D
X
Xprocedure
X`09WidgetCreated(integer);
X`09Help(string);
X
Xobject
X`09access_box: XmBulletinBoardDialog `7B
X`09`09arguments `7B
X`09`09`09XmNdialogTitle = "DWProfile: Access times";
X`09`09`09XmNdefaultPosition = false;
X`09`09`7D;
X`09`09controls `7B
X`09`09`09XmForm`09prime;
X`09`09`09XmForm`09hours;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNhelpCallback = procedure Help("menus windows access");
X`09`09`09`7D;
X`09`09`7D;
X
Xvalue
X`09k_monday_button:`090;
X`09k_tuesday_button:`091;
X`09k_wednesday_button:`092;
X`09k_thursday_button:`093;
X`09k_friday_button:`094;
X`09k_saturday_button:`095;
X`09k_sunday_button:`096;
X
Xprocedure
X`09PrimeCreated(integer);
X`09PrimeChanged(integer);
X
Xobject
X`09prime: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNx = 5;
X`09`09`09XmNy = 5;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09`09prime_label;
X`09`09`09XmRowColumn`09prime_box;
X`09`09`09`7D;
X`09`09`7D;
X
X`09prime_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Prime Days:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = 5;
X`09`09`09XmNtopAttachment = XmATTACH_FORM;
X`09`09`09XmNtopOffset = 2; `20
X`09`09`09`7D;
X`09`09`7D;
X
X`09prime_box: XmRowColumn `7B
X`09`09arguments `7B
X`09`09`09XmNleftAttachment = XmATTACH_WIDGET;
X`09`09`09XmNleftWidget = prime_label;
X`09`09`09XmNorientation = XmHORIZONTAL;
X`09`09`09XmNpacking = XmPACK_TIGHT;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmToggleButton`09monday_button;
X`09`09`09XmToggleButton`09tuesday_button;
X`09`09`09XmToggleButton`09wednesday_button;
X`09`09`09XmToggleButton`09thursday_button;
X`09`09`09XmToggleButton`09friday_button;
X`09`09`09XmToggleButton`09saturday_button;
X`09`09`09XmToggleButton`09sunday_button;
X`09`09`09`7D;
X`09`09`7D;
X
X
X`09sunday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Sunday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_sunday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_sunday_button);
X`09`09`09`7D;
X`09`09`7D;
X
X`09monday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Monday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_monday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_monday_button);
X`09`09`09`7D;
X`09`09`7D;
X
X`09tuesday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Tuesday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_tuesday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_tuesday_button);
X`09`09`09`7D;
X`09`09`7D;
X
X`09wednesday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Wednsday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_wednesday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_wednesday_button
V);
X`09`09`09`7D;
X`09`09`7D;
X
X`09thursday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Thursday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_thursday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_thursday_button)
V;
X`09`09`09`7D;
X`09`09`7D;
X
X`09friday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Friday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_friday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_friday_button);
X`09`09`09`7D;
X`09`09`7D;
X
X`09saturday_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Saturday";
X`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure PrimeCreated(k_saturday_button);
X`09`09`09XmNvalueChangedCallback = procedure PrimeChanged(k_saturday_button)
V;
X`09`09`09`7D;
X`09`09`7D;
X
X
Xvalue
X`09k_widget_network_prime:`09`0936;
X`09k_widget_network_secondary:`0937;
X`09k_widget_batch_prime:`09`0938;
X`09k_widget_batch_secondary:`0939;
X`09k_widget_local_prime:`09`0940;
X`09k_widget_local_secondary:`0941;
X`09k_widget_dialup_prime:`09`0942;
X`09k_widget_dialup_secondary:`0943;
X`09k_widget_remote_prime:`09`0944;
X`09k_widget_remote_secondary:`0945;
X
X`09k_prime_label_tab:`09`095;
X`09k_prime_hour_tab:`09`09100;
X`09k_secondary_label_tab:`09`09350;
X`09k_secondary_hour_tab:`09`09450;
X`09k_hours_height:`09`09`0916;
X`09k_hours_width:`09`09`09192; !runtime modified to hourSize * 24
X`09k_hour_2_y:`09`09`0913;
X
Xobject
X`09hours: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNx = 5;
X`09`09`09XmNy = 40;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09primary_label;
X`09`09`09XmLabel`09primary_hours_1;
X`09`09`09XmLabel`09primary_hours_2;
X`09`09`09XmLabel`09secondary_label;
X`09`09`09XmLabel`09secondary_hours_1;
X`09`09`09XmLabel`09secondary_hours_2;
X`09`09`09XmForm network;
X`09`09`09XmForm batch;
X`09`09`09XmForm local;
X`09`09`09XmForm dialup;
X`09`09`09XmForm remote;
X`09`09`09`7D;
X`09`09`7D;
X
X`09primary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Primary";
X`09`09`09XmNx = k_prime_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09primary_hours_1: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "000000000011111111112222";
X`09`09`09XmNx = k_prime_hour_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09primary_hours_2: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "012345678901234567890123";
X`09`09`09XmNx = k_prime_hour_tab;
X`09`09`09XmNy = k_hour_2_y;
X`09`09`09`7D;
X`09`09`7D;
X
X`09secondary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Secondary";
X`09`09`09XmNx = k_secondary_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09secondary_hours_1: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "000000000011111111112222";
X`09`09`09XmNx = k_secondary_hour_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09secondary_hours_2: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "012345678901234567890123";
X`09`09`09XmNx = k_secondary_hour_tab;
X`09`09`09XmNy = k_hour_2_y;
X`09`09`09`7D;
X`09`09`7D;
X
X`09network: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNy = 30;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09network_prime_label;
X`09`09`09XmDrawingArea`09network_prime_window;
X`09`09`09XmLabel`09network_secondary_label;
X`09`09`09XmDrawingArea`09network_secondary_window;
X`09`09`09`7D;
X`09`09`7D;
X
X`09network_prime_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Network:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09network_prime_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_network_prime
V);
X`09`09`09`7D;
X`09`09`7D;
X
X`09network_secondary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Network:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09network_secondary_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_network_secon
Vdary);
X`09`09`09`7D;
X`09`09`7D;
X
X`09batch: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNy = 50;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09batch_prime_label;
X`09`09`09XmDrawingArea`09batch_prime_window;
X`09`09`09XmLabel`09batch_secondary_label;
X`09`09`09XmDrawingArea`09batch_secondary_window;
X`09`09`09`7D;
X`09`09`7D;
X
X`09batch_prime_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Batch:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09batch_prime_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_batch_prime);
X`09`09`09`7D;
X`09`09`7D;
X
X`09batch_secondary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Batch:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09batch_secondary_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_batch_seconda
Vry);
X`09`09`09`7D;
X`09`09`7D;
X
X`09local: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNy = 70;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09local_prime_label;
X`09`09`09XmDrawingArea`09local_prime_window;
X`09`09`09XmLabel`09local_secondary_label;
X`09`09`09XmDrawingArea`09local_secondary_window;
X`09`09`09`7D;
X`09`09`7D;
X
X`09local_prime_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Local:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09local_prime_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_local_prime);
X`09`09`09`7D;
X`09`09`7D;
X
X`09local_secondary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Local:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09local_secondary_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_local_seconda
Vry);
X`09`09`09`7D;
X`09`09`7D;
X
X`09dialup: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNy = 90;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09dialup_prime_label;
X`09`09`09XmDrawingArea`09dialup_prime_window;
X`09`09`09XmLabel`09dialup_secondary_label;
X`09`09`09XmDrawingArea`09dialup_secondary_window;
X`09`09`09`7D;
X`09`09`7D;
X
X`09dialup_prime_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Dialup:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09dialup_prime_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_dialup_prime)
V;
X`09`09`09`7D;
X`09`09`7D;
X
X`09dialup_secondary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Dialup:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09dialup_secondary_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_dialup_second
Vary);
X`09`09`09`7D;
X`09`09`7D;
X
X`09remote: XmForm `7B
X`09`09arguments `7B
X`09`09`09XmNy = 110;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmLabel`09remote_prime_label;
X`09`09`09XmDrawingArea`09remote_prime_window;
X`09`09`09XmLabel`09remote_secondary_label;
X`09`09`09XmDrawingArea`09remote_secondary_window;
X`09`09`09`7D;
X`09`09`7D;
X
X`09remote_prime_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Remote:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09remote_prime_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_prime_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_remote_prime)
V;
X`09`09`09`7D;
X`09`09`7D;
X
X`09remote_secondary_label: XmLabel `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Remote:";
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_label_tab;
X`09`09`09`7D;
X`09`09`7D;
X
X`09remote_secondary_window: XmDrawingArea `7B
X`09`09arguments `7B
X`09`09`09XmNheight = k_hours_height;
X`09`09`09XmNwidth = k_hours_width;
X`09`09`09XmNleftAttachment = XmATTACH_FORM;
X`09`09`09XmNleftOffset = k_secondary_hour_tab;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure WidgetCreated(k_widget_remote_second
Vary);
X`09`09`09`7D;
X`09`09`7D;
Xend module;
$ CALL UNPACK ACCESS.UIL;39 355085878
$ create 'f'
Xvalue
X`09k_work_area_x:`09`09100;
X`09k_work_area_spacing:`0950;
X
X`09k_access_menu:`09`090;
X`09k_accounts_menu:`091;
X`09k_idents_menu:`09`092;
X`09k_privs_menu:`09`093;
X`09k_functions_menu:`094;
X`09k_find_menu:`09`095;
X`09k_find_button:`09`096;
X`09k_restart_button:`097;
X
X`09k_username_select:`090;
X`09k_account_select:`091;
X`09k_owner_select:`09`092;
X`09k_uic_select:`09`093;
X`09k_device_select:`094;
X`09k_directory_select:`095;
X`09k_cli_select:`09`096;
X`09k_lgicmd_select:`097;
X`09k_table_select:`09`098;
X`09k_lifetime_select:`099;
X`09k_expire_select:`0910;
X`09k_logfail_select:`0911;
X`09k_restart_select:`09100;
X
Xprocedure
X`09Quit();
X`09Read();
X`09Find();
X`09Write();
X`09Remove();
X`09Access();
X Privs();
X`09Idents();
X`09Accounts();
X`09ReadIdentifiers();
X`09ButtonCreated(integer);
X`09Select(integer);
X
Xobject
X`09menu: XmMenuBar `7B
X`09`09arguments `7B
X`09`09`09XmNorientation = XmHORIZONTAL;
X`09`09`09XmNspacing = 10;
X`09`09`09XmNmenuHelpWidget = XmCascadeButton help_menu_entry;
X`09`09`7D;
X`09`09controls `7B
X`09`09`09XmCascadeButton file_menu_entry;
X`09`09`09XmCascadeButton windows_menu_entry;
X`09`09`09XmCascadeButton select_menu_entry;
X`09`09`09XmCascadeButton help_menu_entry;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNhelpCallback = procedure Help("menus");
X`09`09`09`7D;
X`09`09`7D;
X
X`09file_menu_entry: XmCascadeButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "File";
X `09`09`09XmNmnemonic = keysym('F');
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmPulldownMenu commands_menu;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNhelpCallback = procedure Help("menus file");
X`09`09`09`7D;
X`09`09`7D;
X
X`09windows_menu_entry: XmCascadeButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Windows";
X `09`09`09XmNmnemonic = keysym('W');
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmPulldownMenu windows_menu;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNhelpCallback = procedure Help("menus windows");
X`09`09`09`7D;
X`09`09`7D;
X
X`09select_menu_entry: XmCascadeButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Select";
X`09`09`09XmNmnemonic = keysym('S');
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmPulldownMenu select_menu;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNhelpCallback = procedure Help("menus select");
X`09`09`09`7D;
X`09`09`7D;
X
X`09help_menu_entry: XmCascadeButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Help";
X`09`09`09XmNmnemonic = keysym('H');
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmPulldownMenu help_menu;
X`09`09`09`7D;
X`09`09`7D;
X
X`09commands_menu: XmPulldownMenu `7B
X`09`09controls `7B
X`09`09`09XmPushButton`09read_id_button;
X`09`09`09XmSeparator`09`7B`7D;
X`09`09`09XmPushButton`09read_button;
X`09`09`09XmPushButton`09find_menu_button;
X`09`09`09XmPushButton write_button;
X`09`09`09XmPushButton remove_button;
X`09`09`09XmPushButton quit_button;
X`09`09`09`7D;
X`09`09`7D;
X
X`09windows_menu: XmPulldownMenu `7B
X`09`09controls `7B
X`09`09`09XmToggleButton access_button;
X`09`09`09XmToggleButton`09accounts_button;
X`09`09`09XmToggleButton idents_button;
X`09`09`09XmToggleButton privs_button;
X`09`09`09`7D;
X`09`09`7D;
X
X`09privs_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Privs...";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_privs_menu);
X`09`09`09XmNvalueChangedCallback = procedure Privs;
X`09`09`09XmNhelpCallback = procedure Help("menus windows privs");
X`09`09`09`7D;
X`09`09`7D;
X
X`09accounts_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Accounts...";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_accounts_menu);
X`09`09`09XmNvalueChangedCallback = procedure Accounts;
X`09`09`09XmNhelpCallback = procedure Help("menus windows accounts");
X`09`09`09`7D;
X`09`09`7D;
X
X`09idents_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Identifiers...";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_idents_menu);
X`09`09`09XmNvalueChangedCallback = procedure Idents;
X`09`09`09XmNhelpCallback = procedure Help("menus windows idents");
X`09`09`09`7D;
X`09`09`7D;
X
X`09access_button: XmToggleButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Access...";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_access_menu);
X`09`09`09XmNvalueChangedCallback = procedure Access;
X`09`09`09XmNhelpCallback = procedure Help("menus windows access");
X`09`09`09`7D;
X`09`09`7D;
X
X`09select_menu: XmPulldownMenu `7B
X`09`09controls `7B
X`09`09`09XmPushButton`09restart_button;
X`09`09`09XmSeparator`09`7B`7D;
X`09`09`09XmPushButton`09username_button;
X`09`09`09XmPushButton`09account_button;
X`09`09`09XmPushButton`09owner_button;
X`09`09`09XmPushButton`09uic_button;
X`09`09`09XmPushButton`09device_button;
X`09`09`09XmPushButton`09directory_button;
X`09`09`09XmPushButton`09cli_button;
X`09`09`09XmPushButton`09lgicmd_button;
X`09`09`09XmPushButton`09table_button;
X`09`09`09XmPushButton `09lifetime_button;
X`09`09`09XmPushButton `09expire_button;
X`09`09`09XmPushButton `09logfail_button;
X`09`09`09`7D;
X`09`09`7D;
X
X`09restart_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Reset search";
X`09`09`09XmNsensitive = false;
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_restart_button);
X`09`09`09XmNactivateCallback = procedure Select(k_restart_select);
X`09`09`09XmNhelpCallback = procedure Help("menus select restart");
X`09`09`09`7D;
X`09`09`7D;
X
X`09username_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Username";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_username_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09account_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Account";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_account_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09owner_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Owner";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_owner_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09uic_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "UIC";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_uic_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09device_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Device";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_device_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09directory_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Directory";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_directory_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09cli_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "CLI";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_cli_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09lgicmd_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "LGICMD";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_lgicmd_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09table_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "DCL table";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_table_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09lifetime_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Pwdlifetime";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_lifetime_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09expire_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Expire date";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_expire_select);
X`09`09`09`7D;
X`09`09`7D;
X
X`09logfail_button: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Login failures > 0";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Select(k_logfail_select);
X`09`09`09`7D;
X`09`09`7D;
X
X
X`09help_menu: XmPulldownMenu `7B
X`09`09controls `7B
X`09`09`09XmPushButton`09help_context;
X`09`09`09XmPushButton`09help_window;
X`09`09`09XmPushButton`09help_version;
X`09`09`09`7D;
X`09`09`7D;
X
X`09help_context: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "On Context";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Help("context");
X`09`09`09`7D;
X`09`09`7D;
X
X
X`09help_window: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "On Window";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Help("overview");
X`09`09`09`7D;
X`09`09`7D;
X
X
X`09help_version: XmPushButton `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "On Version";
X`09`09`09`7D;
X`09`09callbacks `7B`09
X`09`09`09XmNactivateCallback = procedure Help("version");
X`09`09`09`7D;
X`09`09`7D;
X
X
Xobject
X`09functions: XmRowColumn `7B
X`09`09arguments `7B
X`09`09`09XmNorientation = XmHORIZONTAL;
X`09`09`09XmNx = k_work_area_x;
X`09`09`09XmNy = k_functions_y;
X`09`09`09XmNspacing = k_work_area_spacing;
X`09`09`09XmNborderWidth = 1;
X`09`09`09`7D;
X`09`09controls `7B
X`09`09`09XmPushButton`09read_button;
X`09`09`09XmPushButton`09find_button;
X`09`09`09XmPushButton write_button;
X`09`09`09XmPushButton remove_button;
X`09`09`09XmPushButton quit_button;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_functions_menu);
X`09`09`09`7D;
X`09`09`7D;
X
X`09read_id_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Read Identifiers";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNactivateCallback = procedure ReadIdentifiers;
X`09`09`09XmNhelpCallback = procedure Help("menus file read_identifiers");
X`09`09`09`7D;
X`09`09`7D;
X
X`09read_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Read";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNactivateCallback = procedure Read;
X`09`09`09XmNhelpCallback = procedure Help("menus file read");
X`09`09`09`7D;
X`09`09`7D;
X
X`09find_menu_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Find Next";
X`09`09`09XmNsensitive = false;
X`09`09`09XmNaccelerator = "<Key>Next:";
X`09`09`09XmNacceleratorText = "Next";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_find_menu);
X`09`09`09XmNactivateCallback = procedure Find;
X`09`09`09XmNhelpCallback = procedure Help("menus file find_next");
X`09`09`09`7D;
X`09`09`7D;
X
X`09find_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Find Next";
X`09`09`09XmNsensitive = false;
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09MrmNcreateCallback = procedure ButtonCreated(k_find_button);
X`09`09`09XmNactivateCallback = procedure Find;
X`09`09`09XmNhelpCallback = procedure Help("menus file find_next");
X`09`09`09`7D;
X`09`09`7D;
X
X`09write_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Write";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNactivateCallback = procedure Write;
X`09`09`09XmNhelpCallback = procedure Help("menus file write");
X`09`09`09`7D;
X`09`09`7D;
X
X`09remove_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Remove";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNactivateCallback = procedure Remove;
X`09`09`09XmNhelpCallback = procedure Help("menus file remove");
X`09`09`09`7D;
X`09`09`7D;
X
X`09quit_button: XmPushButton widget `7B
X`09`09arguments `7B
X`09`09`09XmNlabelString = "Quit";
X`09`09`09XmNacceleratorText = "Ctrl/Z";
X`09`09`09XmNaccelerator = "Ctrl<Key>z:";
X`09`09`09`7D;
X`09`09callbacks `7B
X`09`09`09XmNactivateCallback = procedure Quit;
X`09`09`09XmNhelpCallback = procedure Help("menus file quit");
X`09`09`09`7D;
X`09`09`7D;
$ CALL UNPACK BUTTONS.UIL;79 1934089683
$ create 'f'
X$ old_veri = f$verify(0)
X$ !`09DELTREE.COM - delete a complete directory tree
X$
X$ !`09P1 = pathname of root of tree to delete
X$
X$ !`09All files and directories in the tree, including
X$ !`09the named root directory, are deleted. `20
X$ !`09For instance,`20
X$ !
X$ !`09@DELTREE `5BUSER.SUBDIR`5D
X$ !
X$ !`09deletes everything in `5BUSER.SUBDIR...`5D, and also `5BUSER`5DSUBDIR.
VDIR;1 .
X$ !
X$ !`09Note: There are faster ways to do this, but this is so elegant. `20
X$
X$`09old_priv = f$setprv("BYPASS")`09`09! ensure we can delete files
X$`09on control_y then goto done
X$`09on warning then goto done
X$ `09default = f$logical("SYS$DISK") + f$directory()
X$
X$GET_PARAM:
X$`09if p1 .eqs. "" then exit
X$
X$`09p1 = p1 - "..."`09`09`09`09! don't want elipsis
X$`09p1_dir = f$parse(p1,,,"DIRECTORY") - "`5D"! get the direc spec w/o trlng
V `5D
X$`09if p1_dir .eqs. "" then goto bad_param`09! check for errors
X$`09p1_nd = f$parse(p1,,,"NODE") + -`09! parse for errors
X`09 f$parse(p1,,,"DEVICE")
X$`09p1 = p1_nd + p1_dir
X$`09if p1 .eqs. "" then goto bad_param`09! Report error, exit
X$
X$ !`09set default to the root of the tree
X$
X$`09set default 'p1'`5D
X$
X$ !`09delete each tree under the current default
X$
X$DIR_LOOP:
X$`09sub_dir = f$search("*.DIR;*")
X$`09if sub_dir .eqs. "" then goto end_dir_loop
X$`09sub_dir_name = f$parse(sub_dir,,,"NAME")
X$`09@'f$envi("PROCEDURE")' `5B.'sub_dir_name'`5D
X$`09goto dir_loop
X$END_DIR_LOOP:
X$
X$ !`09now there are no .DIRs here, delete everything else.
X$
X$`09if f$search("*.*;*") .eqs. "" then goto del_root
X$`09write sys$output "Deleting ''p1'`5D*.*;*"
X$`09on warning then goto del_root
X$!!!`09set file/prot=o:rwed *.*;*
X$`09delete *.*;*
X$
X$ !`09finally, delete the .DIR for the current default. `20
X$
X$DEL_ROOT:
X$
X$ !`09we set the default up one level, then remove the resulting default
X$ !`09directory string from the original root directory spec, so we're`20
X$ !`09left with the file name of the .DIR to be deleted. The character
X$ !`09expression used here works properly even when the root is a ufd. `20
X$
X$`09set default `5B-`5D
X$`09top_dir = ((p1_dir - (f$directory() - "`5D")) - "." - "`5B") + ".DIR;1"
X$`09on warning then goto done
X$`09write sys$output "Deleting ''p1_nd'''f$directory()'''top_dir'"
X$`09set file/prot=w:rwed 'top_dir'
X$`09delete 'top_dir'
X$`09goto done
X$`09
X$BAD_PARAM:
X$`09write sys$output "COULD NOT FIND ROOT"
X$
X$DONE:
X$`09set default 'default'
X$`09junk = f$setprv (old_priv)
X$`09junk = f$veri(old_veri)
$ CALL UNPACK DELTREE.COM;4 643486790
$ create 'f'
X.suffixes .uid .uil
X.uil.uid
X`09UIL/MOTIF $(mms$source)
X
Xbuild : dwprofile.exe, dwprofile.uid, access.uid, privs.uid, idents.uid, dwp
Vrofile.hlb`20
X`09!done
X
Xdwprofile.exe : dwprofile.obj
X`09$(link) $(linkflags) $(mms$source_list),motif/opt
X
Xdwprofile.obj : dwprofile.c, dwpdef.h
X
Xdwprofile.uid : dwprofile.uil, text.uil, flags.uil, quotas.uil, buttons.uil
X
Xdeb :`20
X`09cflags = "/noopt/debug/define=debug"
X`09linkflags = "/deb"
X`09if "''f$search("dwprofile.obj")'" .nes. "" then delete/nolog dwprofile.ob
Vj;*
X`09mms /override
$ CALL UNPACK DESCRIP.MMS;39 242296416
$ create 'f'
X/* DWprofile table definitions */
X
X#include uaidef
X#include <X11/Intrinsic.h>
X#include <Mrm/MrmAppl.h>
X
X#define NO 0
X#define OFF 0
X#define ON 1
X
X#define k_widget_uic_trans 7 /* unused UAI codes */
X#define k_widget_held_list 8 /* for non-UAI widgets */
X#define k_widget_all_list 9
X
X#define k_hours_height 16
X#define MAX_WIDGET UAI$_MAX_ITEM_CODE
X#define PRIVS_BIAS 40
X#define MAX_PRIVS PRIVS_BIAS * 2
X#define MAX_PRIME 7 /* number of prime day widgets */
X#define MAX_FLAGS 20 /* number of flag widgets */
X#define access_menu 0
X#define accounts_menu 1
X#define idents_menu 2
X#define privs_menu 3
X#define functions_menu 4
X#define find_menu 5
X#define find_button 6
X#define restart_button 7
X#define MAX_MENUS (restart_button + 1)
X#define SDATA_LEN 65 /* size of largest UAI item + 1 */
X
X/* Type of UAF element */
X
X#define DWP_LALPHA`091`09/* Alpha with length byte */
X#define DWP_INT`09`092`09/* Integer */
X#define DWP_TIME`093`09/* 3 byte time vector */
X#define DWP_DATE`094`09/* Date */
X#define DWP_PRIV`095`09/* Priv vector */
X#define DWP_FLAG`096`09/* Login flags */
X#define DWP_UIC`09`097`09/* UIC */
X#define DWP_PRIME`098`09/* Primary/seconday days */
X#define DWP_ENCR`099`09/* Encrypted password */
X#define DWP_ALPHA`0910`09/* Alpha, no length byte */
X#define DWP_CPU`09`0911`09/* CPU time in 10 ms units */
X#define DWP_RDATE`0912`09/* Read-only Date */
X#define DWP_RINT`0913`09/* Read-only Integer */
X
X/* array of UAF elements */
Xstruct `7B
X int code, size, type;
X`7D items`5B`5D = `7B
X `7BUAI$_ACCOUNT, 32, DWP_ALPHA`7D,
X `7BUAI$_ASTLM, 2, DWP_INT`7D,
X `7BUAI$_BATCH_ACCESS_P, 3, DWP_TIME`7D,
X `7BUAI$_BATCH_ACCESS_S, 3, DWP_TIME`7D,
X `7BUAI$_BIOLM, 2, DWP_INT`7D,
X `7BUAI$_BYTLM, 4, DWP_INT`7D,
X `7BUAI$_CLITABLES, 32, DWP_LALPHA`7D,
X `7BUAI$_CPUTIM, 4, DWP_CPU`7D,
X `7BUAI$_DEFCLI, 32, DWP_LALPHA`7D,
X `7BUAI$_DEFDEV, 32, DWP_LALPHA`7D,
X `7BUAI$_DEFDIR, 64, DWP_LALPHA`7D,
X `7BUAI$_DEF_PRIV, 8, DWP_PRIV`7D,
X `7BUAI$_DFWSCNT, 4, DWP_INT`7D,
X `7BUAI$_DIOLM, 2, DWP_INT`7D,
X `7BUAI$_DIALUP_ACCESS_P, 3, DWP_TIME`7D,
X `7BUAI$_DIALUP_ACCESS_S, 3, DWP_TIME`7D,
X `7BUAI$_ENQLM, 2, DWP_INT`7D,
X `7BUAI$_EXPIRATION, 8, DWP_DATE`7D,
X `7BUAI$_FILLM, 2, DWP_INT`7D,
X `7BUAI$_FLAGS, 4, DWP_FLAG`7D,
X `7BUAI$_JTQUOTA, 4, DWP_INT`7D,
X `7BUAI$_LGICMD, 64, DWP_LALPHA`7D,
X `7BUAI$_LASTLOGIN_I, 8, DWP_RDATE`7D,
X `7BUAI$_LASTLOGIN_N, 8, DWP_RDATE`7D,
X `7BUAI$_LOCAL_ACCESS_P, 3, DWP_TIME`7D,
X `7BUAI$_LOCAL_ACCESS_S, 3, DWP_TIME`7D,
X `7BUAI$_LOGFAILS, 2, DWP_RINT`7D,
X `7BUAI$_MAXACCTJOBS, 2, DWP_INT`7D,
X `7BUAI$_MAXDETACH, 2, DWP_INT`7D,
X `7BUAI$_MAXJOBS, 2, DWP_INT`7D,
X `7BUAI$_NETWORK_ACCESS_P, 3, DWP_TIME`7D,
X `7BUAI$_NETWORK_ACCESS_S, 3, DWP_TIME`7D,
X `7BUAI$_OWNER, 32, DWP_LALPHA`7D,
X `7BUAI$_PBYTLM, 4, DWP_INT`7D,
X `7BUAI$_PGFLQUOTA, 4, DWP_INT`7D,
X `7BUAI$_PRCCNT, 2, DWP_INT`7D,
X `7BUAI$_PRI, 1, DWP_INT`7D,
X `7BUAI$_PRIMEDAYS, 1, DWP_PRIME`7D,
X `7BUAI$_PRIV, 8, DWP_PRIV`7D,
X `7BUAI$_PWD, 8, DWP_ENCR`7D,
X `7BUAI$_PWD_DATE, 8, DWP_RDATE`7D,
X `7BUAI$_PWD_LENGTH, 1, DWP_INT`7D,
X `7BUAI$_PWD_LIFETIME, 8, DWP_DATE`7D,
X `7BUAI$_PWD2_DATE, 8, DWP_RDATE`7D,
X `7BUAI$_QUEPRI, 1, DWP_INT`7D,
X `7BUAI$_REMOTE_ACCESS_P, 3, DWP_TIME`7D,
X `7BUAI$_REMOTE_ACCESS_S, 3, DWP_TIME`7D,
X `7BUAI$_SHRFILLM, 2, DWP_INT`7D,
X `7BUAI$_TQCNT, 2, DWP_INT`7D,
X `7BUAI$_UIC, 4, DWP_UIC`7D,
X `7BUAI$_USERNAME, 12, DWP_ALPHA`7D,
X `7BUAI$_WSEXTENT, 4, DWP_INT`7D,
X `7BUAI$_WSQUOTA, 4, DWP_INT`7D,`20
X `7BNULL, NULL, NULL`7D
X`7D;
X
X/* array of UAF elements that can be selected for the 'find' button */
X/* indexed by k_*_select in buttons.uil */
Xstruct `7B
X int code, size, type;
X String name;
X`7D select_data`5B`5D = `7B
X `7BUAI$_USERNAME, 12, DWP_ALPHA, "Username"`7D,
X `7BUAI$_ACCOUNT, 32, DWP_ALPHA, "Account"`7D,
X `7BUAI$_OWNER, 32, DWP_LALPHA, "Owner"`7D,
X `7BUAI$_UIC, 4, DWP_UIC, "UIC"`7D,
X `7BUAI$_DEFDEV, 32, DWP_LALPHA, "Device"`7D,
X `7BUAI$_DEFDIR, 64, DWP_LALPHA, "Directory"`7D,
X `7BUAI$_DEFCLI, 32, DWP_LALPHA, "CLI"`7D,
X `7BUAI$_LGICMD, 64, DWP_LALPHA, "LGICMD"`7D,
X `7BUAI$_CLITABLES, 32, DWP_LALPHA, "DCL Table"`7D,
X `7BUAI$_PWD_LIFETIME, 8, DWP_DATE, "Pwdlifetime"`7D,
X `7BUAI$_EXPIRATION, 8, DWP_DATE, "Expire Date"`7D,
X `7BUAI$_LOGFAILS, 2, DWP_RINT, "Login failures"`7D,
X `7B NULL, NULL, NULL, NULL`7D
X`7D;
X
X
X/* ubiquitous itemlist3 */
Xstruct itemlist3 `7B
X short buflen;
X short itmcode;
X char *bufadr;
X short *retadr;
X`7D;
X
Xtypedef unsigned short int ushort;
X
X/* Identifier list node structure */
Xtypedef struct ident_node `7B
X String name; /* name of identifier */
X Cardinal identifier; /* value of identifier */
X enum `7Buic_ident, account, intern_ident, user_ident`7D status;
X /* uic_ident = `5Bn,m`5D type identifier */
X /* account = `5Bn,*`5D type identifier */
X /* intern_ident = interactive, batch, sys$node_x */
X /* user_ident = regular identifier (%x080010000+n)
V */
X struct ident_node *next;
X`7D ident;
X
X/* Held identifier list node structure */
Xtypedef struct held_node `7B
X String name; /* name of identifier */
X Cardinal identifier; /* value of identifier */
X enum `7Boriginal, del_orig, add_ident`7D status;
X /* original = identifier was held when user read in
V */
X /* del_orig = original identifier to be removed upo
Vn write */
X /* add_ident = identifier to be added upon write */
X struct held_node *next;
X`7D held_ident;
X
X
X/* non-widget resources */
Xtypedef struct `7B
X Cardinal quota, overdraft, version_limit, minimum_group, maximum_group,
X hour_size;
X int read_interval, write_interval, find_interval;
X String default_ident;
X Boolean show_access, show_accounts, show_idents, show_privs, show_work;
X`7D ApplicationData, *ApplicationDataPtr;
X
Xstatic XtResource resources`5B`5D = `7B
X `7B"defaultIdent", "DefaultIdent", XtRString, sizeof(String),
X XtOffset(ApplicationDataPtr, default_ident), XtRString, ""`7D,
X `7B"hourSize", "HourSize", XtRInt, sizeof(int),
X XtOffset(ApplicationDataPtr, hour_size), XtRString, "7"`7D,
X `7B"readNotifyInterval", "PopupTime", XtRInt, sizeof(int),
X XtOffset(ApplicationDataPtr, read_interval), XtRString, "-2"`7D,
X `7B"writeNotifyInterval", "PopupTime", XtRInt, sizeof(int),
X XtOffset(ApplicationDataPtr, write_interval), XtRString, "-2"`7D,
X `7B"findNotifyInterval", "PopupTime", XtRInt, sizeof(int),
X XtOffset(ApplicationDataPtr, find_interval), XtRString, "-1"`7D,
X `7B"overdraft", "Overdraft", XtRInt, sizeof(int),
X XtOffset(ApplicationDataPtr, overdraft), XtRString, "0"`7D,
X `7B"quota", "Quota", XtRInt, sizeof(int),
X XtOffset(ApplicationDataPtr, quota), XtRString, "0"`7D,
X `7B"showAccess", "ShowAccess", XtRBoolean, sizeof(Boolean),
X XtOffset(ApplicationDataPtr, show_access), XtRString, "False"`7D,
X `7B"showAccounts", "AutoShow", XtRBoolean, sizeof(Boolean),
X XtOffset(ApplicationDataPtr, show_accounts), XtRString, "False"`7D,
X `7B"showPrivs", "AutoShow", XtRBoolean, sizeof(Boolean),
X XtOffset(ApplicationDataPtr, show_privs), XtRString, "False"`7D,
X `7B"showIdents", "AutoShow", XtRBoolean, sizeof(Boolean),
X XtOffset(ApplicationDataPtr, show_idents), XtRString, "False"`7D,
X `7B"showWorkBox", "AutoShow", XtRBoolean, sizeof(Boolean),
X XtOffset(ApplicationDataPtr, show_work), XtRString, "True"`7D,
+-+-+-+-+-+-+-+- END OF PART 1 +-+-+-+-+-+-+-+-
Technical Details
Message-ID:
<9908573@MVB.SAIC.COM>Path:
arc1-ca.pugleaf.net!sparky!uunet!cs.utexas.edu!swrinde!network.ucsd.edu!mvb.saic.com!vmsnet-sourcesShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!cs.utexas.edu!swrinde!network.ucsd.edu!mvb.saic.com!vmsnet-sources From: tanner@cerritos.edu Newsgroups: vmsnet.sources Subject: DWProfile V3.3, part 01/06 Message-ID: <9908573@MVB.SAIC.COM> Date: Mon, 04 Jan 1993 20:46:16 GMT Organization: Cerritos College, Norwalk CA Lines: 1551 Approved: Mark.Berryman@Mvb.Saic.Com