1 |
Since version 0.8.7 (October 2002) openisis is able to store |
2 |
new or updated records in the masterfile. |
3 |
Programmers may call the function openIsisWrite, |
4 |
see openisis.c for sample usage. |
5 |
|
6 |
From the command line, the openisis executable accepts |
7 |
a new -write option which specifies a database, |
8 |
where all retrieved records are written to. |
9 |
This works with all record selections like dump, search, scan, mfnlist |
10 |
and the -stream option for reading records from text files. |
11 |
|
12 |
examples: |
13 |
$ |
14 |
# dump (copy) the whole unesb database to cds |
15 |
openisis -db db/unesb/unesb -write db/cds/cds |
16 |
# copy only records found for azteca |
17 |
openisis -db db/unesb/unesb -search azteca -write db/cds/cds |
18 |
# add the syspar.par as new record to the cds db |
19 |
openisis -stream -write db/cds/cds </c/winisis/syspar.par |
20 |
$ |
21 |
|
22 |
|
23 |
The modified masterfile is readable by both DOS ISIS and WinIsis. |
24 |
The DOS/Windows version of wwwisis should also work. |
25 |
No attempt is made to support writing of aligned ("UNIX") masterfiles. |
26 |
|
27 |
NOTE: |
28 |
|
29 |
You *HAVE* to make sure that only one process has the |
30 |
database open for writing. |
31 |
Reading processes, however, should not be affected. |
32 |
Within Java, use synchronized. |
33 |
With other environments, use lockfiles or whatever seems fit. |
34 |
|
35 |
|
36 |
CAVEAT: |
37 |
|
38 |
The index is NOT updated and we're not planning to write |
39 |
the update code for the legacy index structures. |
40 |
(We propose a separate, somewhat different index structure). |
41 |
The CDS/ISIS for DOS or WinIsis index update functions can be used |
42 |
to refresh the index. |
43 |
|
44 |
|
45 |
Under Linux this is also possible from batch using dosemu's keystroke feature. |
46 |
The following was tested with dosemu 1.0.2, |
47 |
which uses per-user configuration in ~/dosemu. |
48 |
|
49 |
- have Micro CDS/ISIS for DOS Version 3.08 installed under |
50 |
c:\cds (where "c:\" is ~/dosemu/drives/c) |
51 |
- give it a syspar-entry to use a data dir similar to winisis |
52 |
5=c:\cds\data\ |
53 |
- link this data dir to your db/cds/cds |
54 |
- run something like the following: |
55 |
$ |
56 |
# note the dosemu shell script breaks an -I param |
57 |
# by using $@ instead of "$@" |
58 |
# |
59 |
# note the \p300; to wait 3 seconds so that freedos startup doesn't |
60 |
# eat the keystrokes -- very unreliable of course, |
61 |
# using dosemu's -U control pipes is much better ... |
62 |
# |
63 |
BASE=$HOME/dosemu |
64 |
/opt/dosemu/bin/dosemu.bin -D-a --Flibdir $BASE/conf \ |
65 |
--Fimagedir $BASE -f $BASE/conf/dosemurc -O \ |
66 |
-I 'keystroke "\p300;cd cds\risis\r\p100;i'"${1:-cds}"'\ru\rxxexitemu\r"' \ |
67 |
2>$BASE/boot.log |
68 |
$ |