Rdb: Ruby-Nachbau der MWC /rdb-Werkzeuge

This commit is contained in:
wkh
2026-10-11 20:33:17 +02:00
commit a9990169e9
308 changed files with 16738 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
.TH unlock "" "" "/rdb Command"
.PC "Unlock a record or field of a file"
\fBunlock \fItableorlist processid from to indexfrom indexto\fR
.PP
.II table^unlock
.II "record locking"
The command
.B unlock
unlocks a record or file by removing a row from a common unlock file.
File \fB/tmp/L\fItableorlist\fR
contains one line for each locked record or field plus
.I processid
of the process that locked it.
.I from
and
.I to
give, respectively, the offsets of the beginning and end of the locked
record or field;
and
.I indexfrom
and
.I indexto
give, respectively, the offsets of the beginning and end of the row or
field's entry in the secondary index file.
.SH Example
Let us use
.B unlock
on table
.BR inventory ,
which is as follows:
.DM
Item Amount Cost Value Description
---- ------ ---- ----- --------------
1 3 50 150 rubber gloves
2 100 5 500 test tubes
3 5 80 400 clamps
4 23 19 437 plates
5 99 24 2376 cleaning cloth
6 89 147 13083 bunsen burners
7 5 175 875 scales
.DE
.PP
First, we use the
.B /rdb
command
.B seek
to locate the record and return the offset and size:
.DM
LOCATION=`echo 5 | seek -mb inventory Item`
.DE
.PP
The above command returns the offset and size of column
.B Item
in row 5 of table
.BR inventory ,
and writes the informatio into environmental variable
.BR LOCATION .
When we look at the contents of
.BR LOCATION ,
we see the following:
.DM
207 245 0 8
.DE
.PP
This means that the record begins 207 bytes into the file, ends
245 bytes into the file, and therefore is 38 bytes long.
.PP
Now we can call
.B unlock
to unlock the record:
.DM
unlock inventory $$ $LOCATION
.DE
.PP
Note that we use the environmental variable
.B $LOCATION
to supply the location.
We also use the shell's built-in variable \fB$$\fR to
write the process identifier onto the command line.
.PP
Let's see what the lock file looks like.
Since we're locking table
.BR inventory ,
the lock file is named
.BR Linventory .
If we type the command:
.DM
cat /tmp/Linventory
.DE
.PP
we see the message:
.DM
cat: cannot open /tmp/Linventory
.DE
.PP
.B unlock
removes the lock file if it removes the last lock line.
.SH "See Also"
.B
lock,
seek
.R
.SO unlock