home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
sosutl12.zip
/
doc
/
sosutil.inf
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1993-10-20
|
19KB
|
476 lines
ΓòÉΓòÉΓòÉ 1. SOS Utilities overview ΓòÉΓòÉΓòÉ
This file documents SOS Utilities version 1.2, a collection of small
command-line utilities for OS/2.
Copyright (C) 1993, SuperOscar Softwares, Tommi Nieminen.
ΓòÉΓòÉΓòÉ 2. Permissions ΓòÉΓòÉΓòÉ
Permission is granted to make and distribute verbatim copies of this manual
provided the copyright notice and this permission notice are preserved on all
copies.
Permission is granted to process this file through TeX and print the results,
provided the printed document carries copying permission notice identical to
this one except for the removal of this paragraph (this paragraph not being
relevant to the printed manual).
Permission is granted to copy and distribute modified versions of this manual
under the conditions for verbatim copying, provided that the entire resulting
derived work is distributed under the terms of a permission notice identical to
this one.
Permission is granted to copy and distribute translations of this manual into
another language, under the above conditions for modified versions, except that
this permission notice may be stated in a translation approved by the Free
Software Foundation. SOS Utilities is a collection of small useful utilities
written in REXX, the OS/2 batch file processing language. Also included is SOS
Tree, a utility for displaying the directory tree.
ΓòÉΓòÉΓòÉ 3. ChName---file name modifier ΓòÉΓòÉΓòÉ
ChName changes long HPFS file names to FAT format and vice versa. It is a
useful tool when copying files to or from diskettes.
ΓòÉΓòÉΓòÉ 3.1. ChName usage ΓòÉΓòÉΓòÉ
[D:\] chname FILE ... [ /f /h /q /x /? ]
`/f'
HPFS to FAT (default)
`/h'
FAT to HPFS (ie. reverse what was done with /f)
`/q'
Quiet mode
`/x'
Send output to a REXX queue instead of standard output
`/?'
Show help page and quit
ΓòÉΓòÉΓòÉ 3.2. How it's done ΓòÉΓòÉΓòÉ
When changing HPFS names to FAT, the program first simply tries to truncate the
name to the `????????.???' mask. Spaces are converted to underlines, and the
first and the last dot-separated part are put together. For example,
"What ever happened to Baby Jane.txt.Z" -> WHAT_EVE.Z
If there already is a file with the same name, a part of the resulting name is
substituted with a number, eg. `WHAT_EV0.Z'. Only as many letters are
substituted as necessary---first one number is tried (`0...9'), then two
numbers (`00...99') and so on. Eventually a unique file name is very probably
found.
The long HPFS file name is saved to the `.LONGNAME' extended attribute so that
the name can later be restored with the `/h' switch, eg.
WHAT_E00.Z -> "What ever happened to Baby Jane.txt.Z"
ΓòÉΓòÉΓòÉ 3.3. Using REXX queues ΓòÉΓòÉΓòÉ
The `/x' switch is designed to be a helpful addition for REXX programmers. With
it, the output of ChName (ie. the old file names, whether long or short, and
corresponding new names) can be easily fetched. For example, the following
program saves all the long names to long_name stem variable, and corresponding
short names to short_name stem.
/* example.cmd */
"@echo off"
Parse Arg list
n = 1
Do i = 1 To Words(list)
file = Word(list, i)
Call ChName file "/f /x"
Do While Queued() > 0
Parse Pull long " -> " short
long_name.n = long
short_name.n = short
n = n + 1
End
End
ΓòÉΓòÉΓòÉ 3.4. Known bugs ΓòÉΓòÉΓòÉ
Spaces in file names cannot be handled from the command line, ie. you cannot
use ChName like this:
[D:\] chname "What really happened to Baby Jane.txt.Z"
Because OS/2 seems to strip the quotes before anything reaches REXX, ChName
gives you a list of silly messages about files not found:
ChName v1.1: File 'What' not found
ChName v1.1: File 'really' not found
...
But spaces are still allowed in file names, so the following is possible even
if the `*.txt.Z' mask matched also files with spaces in their names:
[D:\] chname *.txt.Z
ΓòÉΓòÉΓòÉ 4. Extract ΓòÉΓòÉΓòÉ
Extract---extract files from archives or list archive contents. A REXX script.
Note: Extract only chooses the appropriate archiver and forms the command line
which is passed to it; you will still need all the archivers whose archive
files you encounter. However, Extract makes working with the archivers much
more comfortable since you don't need to remember every switch of every program
(or indeed, remember the actual executable names of the archives). It also
makes it possible to put the archivers to a directory not contained in
`PATH'---just edit the line arcdir=... in `extract.cmd' to point to your
archiver directory.
ΓòÉΓòÉΓòÉ 4.1. Extract usage ΓòÉΓòÉΓòÉ
[D:\] extract ARCHIVE [ FILE ... ] [ /jlp? /t DIR ]
`/j'
Junk directories (ie. don't extract them). With this switch, files
are extracted to the current directory, or the directory given with
`/t' switch. Can't be used together with `/l' or `/p'.
`/l'
Show archive contents. Output goes to stdout. Can't be used together
with `/l', `/p', or `/t'.
`/p'
Extract to stdout. Useful in viewing document files stored in the
archive.
`/t DIR'
Set directory in which files are extracted. Without the `/j'
switches, any subdirectories contained in the archive file will be
created under DIR. The space between the switch and the directory
name isn't necessary.
`/?'
Display help page and quit.
ΓòÉΓòÉΓòÉ 4.2. Examples of Extract usage ΓòÉΓòÉΓòÉ
Suppose you have a file `foo.zoo', which includes the following files (and
subdirectories): (Zoo, Zip, gzip, tar and Compress use slashes instead of
backslashes internally to separate directories, but in the command line of
Extract you should use backslashes---otherwise you'll get silly messages of
unknown switches...)
src\foo.c
src\foo.h
src\foo.mak
exe\foo.exe
man\foo.man
README
Copyright
To extract all the files, use
[D:\] extract foo.zoo
To extract all the files in `src' subdirectory (ie. `foo.c', `foo.h', and
`foo.mak'):
[D:\] extract foo.zoo src\*
The same as above, but do not create `src' subdirectory, ie. extract files to
the current directory:
[D:\] extract foo.zoo src\* /j
The same as above, but extract to `C:\tmp\thrash' directory:
[D:\] extract foo.zoo src\* /j /t C:\tmp\thrash
To list the contents of this archive, use:
[D:\] extract foo.zoo /l
To view the `README' file with `more', use:
[D:\] extract foo.zoo README /p |more
To redirect `README' to printer:
[D:\] extract foo.zoo README /p >prn
ΓòÉΓòÉΓòÉ 5. FileFind ΓòÉΓòÉΓòÉ
FileFind---whereis-like find file utility written completely in REXX.
ΓòÉΓòÉΓòÉ 5.1. FileFind usage ΓòÉΓòÉΓòÉ
[D:\] filefind [PATH\]FILENAME ... [ /h /n /? ]
FileFind finds files under PATH if that is specified, or the current directory
(= `.') if it isn't. Multiple command line arguments are allowed.
`/h'
find hidden and system files too
`/n'
brief format: display only file names
`/?'
display help page and quit
ΓòÉΓòÉΓòÉ 5.2. Examples of FileFind usage ΓòÉΓòÉΓòÉ
Note the prompt (ie. current directory info) in the following examples!
Find all `*.inf' files under `D:\OS2'
[D:\OS2] filefind *.inf
The same as preceding, but note that the current directory is now different:
[D:\] filefind \OS2\*.inf
Find all `*.exe' files under `C:\Bin'
[D:\] filefind C:\Bin\*.exe
Find all `*.inf' files under `D:\OS2\DLL' and `D:\os2\apps'---this demonstrates
multiple command line arguments
[D:\OS2] filefind DLL\*.inf apps\*.inf
ΓòÉΓòÉΓòÉ 5.3. Warning ΓòÉΓòÉΓòÉ
FileFind displays file dates and times in the national format, which is found
with a SysIni() call to `os2.ini'. However, this seems to be causing troubles
every now and then---sometimes SysIni() returns insane results, like `0' as the
date or time separator. If you are having problems with this, remove all date
and time formatting lines from the program, and change the following line:
ok = SysFileTree(Word(find, i), files, "fst", "*--*-")
to
ok = SysFileTree(Word(find, i), files, "fs", "*--*-")
FileFind will then display dates and times in the American formats (`MM/DD/YY'
and `HH:MM{am|pm}', respectively) which are insane but work fine.
ΓòÉΓòÉΓòÉ 6. kill---kill processes ΓòÉΓòÉΓòÉ
kill---kill processes by their process id's (PID).
ΓòÉΓòÉΓòÉ 6.1. kill usage ΓòÉΓòÉΓòÉ
[D:\] kill PID ...
Process id's are given in decimals, not hexadecimals. To get decimal process
id's, use ps (See ps) instead of the OS/2 system utility PSTAT (well, actually
ps runs PSTAT).
ΓòÉΓòÉΓòÉ 6.2. System requirements ΓòÉΓòÉΓòÉ
kill is a Perl program and requires you to have Perl installed. Perl is a
programming language which originally was designed for UNIX (how else) but is
now ported for many other operating systems. Perl should be find by anonymous
FTP'ing to one of the following places:
hobbes.nmsu.edu
ftp.cdrom.com
ftp.luth.se
ftp.informatik.tu-muenchen.de
ftp.urz.uni-heidelberg.de
and possibly many others. Try directories like
.../os2/2_x/programming or
.../os2/2_x/unix/programming
and search for files starting `perl'.
ΓòÉΓòÉΓòÉ 6.3. Tips ΓòÉΓòÉΓòÉ
If you are using an aliasing shell like 4OS2, this script should be easy to
convert to an alias. For example, when using 4OS2, put the line
KILL=perl -e "kill(9, %$);"
in your alias file, or type
[D:\] alias kill=`perl -e "kill(9, %$);"`
at the command line.
I haven't yet figured out how command line can be passed to sh (ms_sh 2.1C).
The easiest solution (using `$*') doesn't seem to work.
ΓòÉΓòÉΓòÉ 7. ps---process status ΓòÉΓòÉΓòÉ
ps---display processes with their process id's (PID), parent process id's
(PPID), and session id's (SID).
ΓòÉΓòÉΓòÉ 7.1. ps usage ΓòÉΓòÉΓòÉ
[D:\] ps
ps output looks like this:
PID PPID SID PROCESS
3 1 1 d:\os2\pmshell.exe
7 3 18 d:\bin\pc2\pc2.exe
6 3 17 d:\bin\xfeel.exe
5 3 16 d:\os2\pmshell.exe
4 3 0 d:\os2\system\harderr.exe
All the numeric values are decimals. If you want hexadecimals, just remove all
calls to Format() and X2D() in lines 24--26 of `ps.cmd'; ie. change
pid = Format(X2D(Word(line, 1)), 4)
to
pid = Word(line, 1)
You may have to reformat the header line to get the columns right.
ΓòÉΓòÉΓòÉ 7.2. System requirements ΓòÉΓòÉΓòÉ
ps is a REXX program and requires you to have REXX installed. Also, ps calls
PSTAT to obtain the information, and only re-formats the output to a more
readable and at least shorter format. PSTAT is part of the OS/2 Diagnostic
Tools installation options; if you don't have the file `pstat.exe' in your
`\OS2' directory, use the `Selective Install' object in your System folder to
install it. REXX can be installed in the same way, in the unlikely case you
haven't it installed already.
`rxqueue.exe' should also be found in the `\OS2' directory. It is part of the
REXX installation option.
ΓòÉΓòÉΓòÉ 7.3. Implementation notes ΓòÉΓòÉΓòÉ
It took a long while before I found out how to pipe output to REXX routines
inside a REXX program. Maybe there are even better altern- atives than the
rxqueue method this program uses, but none of them is documented in the
standard OS/2 package. I really wish IBM would some day give a full, decent
documentation free with the OS/2 system...
ΓòÉΓòÉΓòÉ 8. SOS Tree ΓòÉΓòÉΓòÉ
SOS Tree---directory tree drawer utility for OS/2.
ΓòÉΓòÉΓòÉ 8.1. SOS Tree usage ΓòÉΓòÉΓòÉ
[D:\] sostree [ -adfnqz ] PATH
`-a'
Display file attributes in the format `ADHRS'
`-d'
Display dates and times too (in current national format).
`-f'
Include plain files too in the listing.
`-n'
List all directories (or all files and directories with -f option)
with full path names; do not draw the tree graph.
`-q'
Don't display the `Directory tree of ...' header.
`-z'
Display file sizes too. This switch is meaningless if `-f' isn't used
simultaneously.
ΓòÉΓòÉΓòÉ 8.2. Note of re-compiling SOS Tree ΓòÉΓòÉΓòÉ
I have tried to make SOS Tree as easy to be translated to other languages as
possible, but without the IBM mkmsgf utility I'm forced to use different
methods than the handy message file system OS/2 offers. However, it should
still be easy to make other-language versions of the program. From version 1.0a
onwards, after the standard `.h' files have been included, there are
conditional #include clauses (lines 24- in `sostree.c'):
#if defined(LANG_SUOMI)
#include "msg_suomi.inc"
...
#else
#include "msg_english.inc" /* The default */
#endif
To get the Finnish messages, compile with `LANG_SUOMI' symbolic constant
defined. For example, using Borland C++:
[D:\] bcc -DLANG_SUOMI sostree.c
To create a custom message file, examine `msg_english.inc' or for an example,
and then add an appropriate #elsif clause to `sostree.c':
#if defined(LANG_SUOMI)
#include "msg_suomi.h"
#elsif defined(LANG_ESPERANTO)
#include "msg_esperanto.h"
...
#else
#include "msg_english.h"
#endif
No other changes to `sostree.c' are necessary. To compile this new version, you
need to define `LANG_ESPERANTO' constant in the command line of the compiler,
of course.
NOTE: please send your translations to me so that I can include them in the
next `official' release of SOS Tree.
ΓòÉΓòÉΓòÉ 9. Version and copyrights ΓòÉΓòÉΓòÉ
SOS Utilities version 1.2
SOS Tree v1.0a---directory drawer
ChName v1.1b---change names to/from FAT format
Extract v1.1---archive extractor/lister
FindFile v1.4a---file finder
kill v1.0--kill process
ps v4.0a---display process status
Copyright (C) 1993, SuperOscar Softwares, Tommi Nieminen.
These programs are free software; you can redistribute them and/or modify them
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any later version.
These programs are distributed in the hope that they will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
this program package; if not, write to the Free Software Foundation, Inc., 675
Mass Ave, Cambridge, MA 02139, USA.