Doc and some make script updates.

This commit is contained in:
Patrick Kloepfer 2019-12-12 23:19:05 -05:00
parent c9110f3298
commit e20b870ff4
7 changed files with 55 additions and 33 deletions

View File

@ -82,6 +82,8 @@ In KCONFIG you can set:
LOGIN is a system process for A2osX that authenticates users against the A2osX User Database stored in ./ETC/PASSWD. Once a user is authenticated, LOGIN then loads the SH (./BIN/SH) process passing it the PROFILE script found in the users Home directory.
>Note, at the shell prompt you can execute the **LOGIN** command which will then ask you for a name/password and create a new user "session" for you as if you are that user. You will have a new shell environment and be placed in that user's home directory. When you type **EXIT** or press Control-D at the shell prompt, that session will be terminated and you will returned to your original session in tact.
### NETWORKD
| Command |

View File

@ -767,6 +767,35 @@ loading functions this way
>A note on memory. All scripts get loaded into and run from Main Memory.
### Getting and Validating Input
One of the challenges when writing scripts is gathering input from the user and validating that input before performing a series of operations that would be affected by missing or invalid data. For example, suppose you wrote a script that prompted a user to enter in an IP address which will be passed to the ping command. You might want to gather the input as the 4 separate octets that make up an IP address and make sure each is a valid integer in the range of 1 to 255. The A2osX shell provides a robust set of commands you can use to craft such a script with extensive error checking. For instance the **READ** command (see above) has options to limit input to just 3 characters (the max an IP octet can be), in this case **READ -N 3 IP1** would accomplish this. Next you might want to validate that the user did not press return without typing anything (a null) by using either the **IF [ -Z var ]** (is null) or **IF [ -N var ]** (not null) checks. Then using the **IF [ -I var ]** check you could make sure the user entered an integer. Once you know you have **an** integer, you can check to see if it is in an acceptable range by using the compound **IF [ $IP1 -gt 0 ] AND [ $IP1 -LT 256 ]**.
>Note, it may seem expedient to just do that last compound **IF** to check the range of the input. If you do that, should the user enter nothing (just press return) or enter a string (i.e. ABC) then when the script executes this **IF** command the shell will throw and error and stop execution of your script. This is because **IF** checks like **-gt** can only handle integers and the integer check **-I** cannot handle nulls.
The following example demonstrates the complete validation concept outlined above. You could enhance this example further by putting the input and error checking in a **WHILE** loop to continue prompting the user for a valid octet until one was entered in the proper range. In addition, you could put such a routine in a function so that you could have the same set of code executed for all 4 octets.
#!/bin/sh
#
# Demo of Getting and Validating Input
#
ECHO \f ; # Clear screen
ECHO "\n\n Enter Octet: "
READ -N 3 IP1
IF [ -Z $IP1 ]
ECHO "\n\nNothing entered"
ELSE
IF ![ -I $IP1 ] ; # Note the use of ! to negate IF
ECHO "\n\nNon-numeric characters entered"
ELSE
IF [ $IP1 -gt 0 ] AND [ $IP1 -lt 256 ]
ECHO "\n\nValid Octet Entered"
ELSE
ECHO "\n\nNumber out of range"
FI
FI
FI
### Shell Environment
Copy Vars????, Different Context, own vars get lost, own funcs, when called with dot, is using the same env.

Binary file not shown.

View File

@ -7,7 +7,7 @@ AUTO 4,1
# and then verifies/corrects that files are in the right locations to
# be used by other MAKE processes such as those for making disk images
#
. MAKEFUNCS
. makefuncs
CALL CS
CALL TBOX " New BUILD File Copier"
# Check for BUILD and MAKE online
@ -53,4 +53,4 @@ ECHO "PREFIX BUILDS/BUILD${B}" > /MAKE/BLEED
ECHO "-A2OSX.SYSTEM" >> /MAKE/BLEED
ECHO "BLEED file updated! Process Complete. Exiting.\n"
MAN
TEXT /MAKE/USR/SHARE/MAKE/COPYBUILD
TEXT /MAKE/USR/SHARE/MAKE/copybuild

View File

@ -1,8 +1,8 @@
NEW
PREFIX
AUTO 4,1
a2osx.logo
a2osx.system
A2osX.logo
A2OSX.SYSTEM
bin/arp
bin/cat
bin/chmod

View File

@ -6,7 +6,7 @@ AUTO 4,1
# This script makes a proper fullboot disk using the files
# found in a particular build stored in /make/builds
#
. MAKEFUNCS
. makefuncs
CALL CS
CALL TBOX " fullboot 800 Media Creator"
CALL PRINTXY 8 0 "You must have the correct image mounted on /dev/s7d2"
@ -28,7 +28,7 @@ IF [ -Z $B ]
ECHO "Exiting"
EXIT
FI
SET SRC = "/make/builds/build${B}"
SET SRC = "/MAKE/BUILDS/BUILD${B}"
IF [ -D ${SRC} ]
ECHO "\n\nFound Valid BUILD\n"
ELSE
@ -66,13 +66,10 @@ SWITCH $RCS
EXIT
END
ECHO "Which Prodos:"
ECHO " 1) Asset ProDOS 2.03tc"
ECHO " 2) Asset ProDOS FX"
ECHO " 3) Asset ProDOS FX Paked"
ECHO " 4) Build ProDOS 2.03tc"
ECHO " 5) Build ProDOS FX"
ECHO " 6) Build ProDOS FX Paked"
READ -P "Enter 1-6: " PDOS
ECHO " 1) ProDOS 2.03tc"
ECHO " 2) ProDOS FX"
ECHO " 3) ProDOS FX Paked"
READ -P "Enter 1-3: " PDOS
IF [ -Z $PDOS ]
ECHO "You did not enter any response."
ECHO
@ -81,22 +78,13 @@ IF [ -Z $PDOS ]
FI
SWITCH $PDOS
CASE 1
SET PDOSFILE = "/make/assets/pdos203tc/prodos"
SET PDOSFILE = "${SRC}/PRODOS"
BREAK
CASE 2
SET PDOSFILE = "/make/assets/pdos203fx/prodos.fx"
SET PDOSFILE = "${SRC}/PRODOS.FX"
BREAK
CASE 3
SET PDOSFILE = "/make/assets/pdos203fx/prodos.fx.paked"
BREAK
CASE 4
SET PDOSFILE = "${SRC}/prodos"
BREAK
CASE 5
SET PDOSFILE = "${SRC}/prodos.fx"
BREAK
CASE 6
SET PDOSFILE = "${SRC}/prodos.fx.paked"
SET PDOSFILE = "${SRC}/PRODOS.FX.PAKED"
BREAK
DEFAULT
ECHO "You did not enter a valid response."
@ -106,7 +94,7 @@ SWITCH $PDOS
EXIT
END
ECHO "Formatting Destination..."
FORMAT -B 1600 s7d2 fullboot
format -B 1600 s7d2 fullboot
ECHO "Making Directory Structure..."
md /fullboot/bin
md /fullboot/drv
@ -121,15 +109,19 @@ md /fullboot/var
md /fullboot/var/log
ECHO "Copying Files..."
FOR FILE IN (fullfiles)
CP -Q ${SRC}/${FILE} /fullboot/${FILE}
cp -Q ${SRC}/${FILE} /fullboot/${FILE}
NEXT
CP -Q -Y $PDOSFILE /fullboot/ProDOS
CP -Q -Y initboot /fullboot/etc/init
cp -Q -Y $PDOSFILE /fullboot/ProDOS
cp -Q -Y initboot /fullboot/etc/init
ECHO "Welcome to A2osX!" > /fullboot/etc/issue
ECHO >> /fullboot/etc/issue
ECHO $IM >> /fullboot/etc/issue
CP -Q tcpip.conf /fullboot/etc/tcpip.conf
CP -Q profile /fullboot/root/profile
cp -Q tcpip.conf /fullboot/etc/tcpip.conf
cp -Q profile /fullboot/root/profile
IF [ $PDOS -eq 1 ]
ECHO Renaming VOL
REN /fullboot FULLBOOT
FI
ECHO "fullboot Disk Created!"
MAN
TEXT /MAKE/USR/SHARE/MAKE/MAKEFULL

View File

@ -1,3 +1,4 @@
NEW
PREFIX
AUTO 4,1
@ -67,7 +68,5 @@ WHILE [ $OL -ne 0 ]
NEXT
SET OL = $OL - 1
LOOP
MAN
TEXT /MAKE/USR/SHARE/TESTS/FORTEST