home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 68 6f | 77 40 6d 69 6c 68 6f 77 |From: ho|w@milhow|
|00000010| 31 2e 55 55 2e 4e 45 54 | 20 28 4d 69 6b 65 20 48 |1.UU.NET| (Mike H|
|00000020| 6f 77 61 72 64 29 0a 4e | 65 77 73 67 72 6f 75 70 |oward).N|ewsgroup|
|00000030| 73 3a 20 61 6c 74 2e 73 | 6f 75 72 63 65 73 0a 53 |s: alt.s|ources.S|
|00000040| 75 62 6a 65 63 74 3a 20 | 66 69 6c 65 20 6c 6f 63 |ubject: |file loc|
|00000050| 6b 20 63 6f 6e 76 69 65 | 6e 63 65 20 72 6f 75 74 |k convie|nce rout|
|00000060| 69 6e 65 73 20 28 70 61 | 72 74 30 31 2f 30 31 29 |ines (pa|rt01/01)|
|00000070| 0a 4d 65 73 73 61 67 65 | 2d 49 44 3a 20 3c 33 34 |.Message|-ID: <34|
|00000080| 38 40 6d 69 6c 68 6f 77 | 31 2e 55 55 2e 4e 45 54 |8@milhow|1.UU.NET|
|00000090| 3e 0a 44 61 74 65 3a 20 | 32 34 20 4a 61 6e 20 39 |>.Date: |24 Jan 9|
|000000a0| 31 20 32 32 3a 30 36 3a | 32 38 20 47 4d 54 0a 0a |1 22:06:|28 GMT..|
|000000b0| 0a 49 20 77 72 6f 74 65 | 20 74 68 69 73 20 62 65 |.I wrote| this be|
|000000c0| 63 61 75 73 65 20 49 27 | 6d 20 73 69 63 6b 20 6f |cause I'|m sick o|
|000000d0| 66 20 64 65 61 6c 69 6e | 67 20 77 69 74 68 20 64 |f dealin|g with d|
|000000e0| 69 66 66 65 72 65 6e 74 | 20 6c 6f 63 6b 69 6e 67 |ifferent| locking|
|000000f0| 0a 73 79 6e 74 61 78 20 | 61 6e 64 20 6c 6f 63 6b |.syntax |and lock|
|00000100| 69 6e 67 20 73 65 6d 61 | 6e 74 69 63 73 20 64 65 |ing sema|ntics de|
|00000110| 70 65 6e 64 69 6e 67 20 | 6f 6e 20 74 68 65 20 6d |pending |on the m|
|00000120| 61 63 68 69 6e 65 20 74 | 68 65 20 63 6f 64 65 20 |achine t|he code |
|00000130| 69 73 0a 72 75 6e 6e 69 | 6e 67 20 6f 6e 2e 20 20 |is.runni|ng on. |
|00000140| 42 54 57 2c 20 74 68 69 | 73 20 73 68 6f 75 6c 64 |BTW, thi|s should|
|00000150| 20 62 65 20 63 6f 6e 73 | 69 64 65 72 65 64 20 61 | be cons|idered a|
|00000160| 6e 20 41 6c 70 68 61 20 | 72 65 6c 65 61 73 65 2e |n Alpha |release.|
|00000170| 0a 0a 54 68 65 73 65 20 | 61 72 65 20 63 6f 6e 76 |..These |are conv|
|00000180| 65 6e 69 65 6e 63 65 20 | 72 6f 75 74 69 6e 65 73 |enience |routines|
|00000190| 20 77 68 69 63 68 20 69 | 6d 70 6c 65 6d 65 6e 74 | which i|mplement|
|000001a0| 20 66 69 6c 65 20 6c 6f | 63 6b 69 6e 67 20 69 6e | file lo|cking in|
|000001b0| 20 73 74 61 6e 64 61 72 | 64 0a 77 61 79 73 20 72 | standar|d.ways r|
|000001c0| 65 67 61 72 64 6c 65 73 | 73 20 6f 66 20 74 68 65 |egardles|s of the|
|000001d0| 20 6d 65 74 68 6f 64 20 | 73 65 6c 65 63 74 65 64 | method |selected|
|000001e0| 20 77 69 74 68 69 6e 20 | 74 68 65 20 70 61 72 74 | within |the part|
|000001f0| 69 63 75 6c 61 72 20 6f | 70 65 72 61 74 69 6e 67 |icular o|perating|
|00000200| 0a 73 79 73 74 65 6d 2e | 20 20 43 75 72 72 65 6e |.system.| Curren|
|00000210| 74 6c 79 20 60 73 75 70 | 70 6f 72 74 65 64 27 20 |tly `sup|ported' |
|00000220| 61 72 65 20 66 63 6e 74 | 6c 28 29 2c 20 6c 6f 63 |are fcnt|l(), loc|
|00000230| 6b 66 28 29 2c 20 61 6e | 64 20 66 6c 6f 63 6b 28 |kf(), an|d flock(|
|00000240| 29 20 73 74 79 6c 65 0a | 6c 6f 63 6b 69 6e 67 2e |) style.|locking.|
|00000250| 20 20 54 68 65 20 63 6f | 64 65 20 68 61 73 20 62 | The co|de has b|
|00000260| 65 65 6e 20 64 65 76 65 | 6c 6f 70 65 64 20 61 6e |een deve|loped an|
|00000270| 64 20 60 74 65 73 74 65 | 64 27 20 6f 6e 20 61 20 |d `teste|d' on a |
|00000280| 53 75 6e 0a 53 50 41 52 | 43 73 74 61 74 69 6f 6e |Sun.SPAR|Cstation|
|00000290| 20 31 20 75 6e 64 65 72 | 20 53 75 6e 4f 53 20 34 | 1 under| SunOS 4|
|000002a0| 2e 31 2e 20 20 49 74 20 | 68 61 73 20 61 6c 73 6f |.1. It |has also|
|000002b0| 20 62 65 65 6e 20 60 74 | 65 73 74 65 64 27 20 75 | been `t|ested' u|
|000002c0| 6e 64 65 72 20 53 43 4f | 0a 58 65 6e 69 78 20 32 |nder SCO|.Xenix 2|
|000002d0| 2e 33 2e 32 20 61 6e 64 | 20 60 70 61 73 73 65 73 |.3.2 and| `passes|
|000002e0| 27 2c 20 65 78 63 65 70 | 74 20 74 68 61 74 20 6c |', excep|t that l|
|000002f0| 6f 63 6b 66 28 29 20 73 | 74 79 6c 65 20 6c 6f 63 |ockf() s|tyle loc|
|00000300| 6b 69 6e 67 20 73 65 74 | 73 20 65 72 72 6e 6f 0a |king set|s errno.|
|00000310| 74 6f 20 45 41 47 41 49 | 4e 20 72 61 74 68 65 72 |to EAGAI|N rather|
|00000320| 20 74 68 61 6e 20 45 41 | 43 43 45 53 2c 20 61 73 | than EA|CCES, as|
|00000330| 20 69 74 20 64 6f 65 73 | 20 6f 6e 20 74 68 65 20 | it does| on the |
|00000340| 53 75 6e 2e 20 20 49 20 | 68 61 76 65 6e 27 74 0a |Sun. I |haven't.|
|00000350| 60 66 69 78 65 64 27 20 | 69 74 20 62 65 63 61 75 |`fixed' |it becau|
|00000360| 73 65 20 49 20 74 68 69 | 6e 6b 20 74 68 61 74 20 |se I thi|nk that |
|00000370| 53 43 4f 27 73 20 65 72 | 72 6e 6f 20 76 61 6c 75 |SCO's er|rno valu|
|00000380| 65 20 69 73 20 77 72 6f | 6e 67 20 61 6e 64 20 49 |e is wro|ng and I|
|00000390| 20 66 65 65 6c 0a 6c 69 | 6b 65 20 62 65 69 6e 67 | feel.li|ke being|
|000003a0| 20 70 65 72 76 65 72 73 | 65 20 74 6f 64 61 79 2e | pervers|e today.|
|000003b0| 0a 0a 54 68 65 20 72 6f | 75 74 69 6e 65 20 60 74 |..The ro|utine `t|
|000003c0| 65 73 74 2d 6c 6f 63 6b | 2e 63 27 20 69 73 20 61 |est-lock|.c' is a|
|000003d0| 20 68 61 6c 66 2d 61 73 | 73 65 64 20 74 65 73 74 | half-as|sed test|
|000003e0| 20 64 72 69 76 65 72 2e | 20 20 60 64 6f 2d 74 65 | driver.| `do-te|
|000003f0| 73 74 2e 73 68 27 0a 63 | 61 75 73 65 73 20 61 20 |st.sh'.c|auses a |
|00000400| 76 61 72 69 65 74 79 20 | 6f 66 20 74 65 73 74 20 |variety |of test |
|00000410| 74 6f 20 62 65 20 70 65 | 72 66 6f 72 6d 65 64 20 |to be pe|rformed |
|00000420| 2d 20 74 68 65 20 72 65 | 73 75 6c 74 73 20 61 72 |- the re|sults ar|
|00000430| 65 20 73 61 76 65 64 20 | 69 6e 0a 74 65 73 74 2e |e saved |in.test.|
|00000440| 6c 6f 67 2e 0a 0a 49 66 | 20 61 6e 79 6f 6e 65 20 |log...If| anyone |
|00000450| 69 73 20 69 6e 74 65 72 | 65 73 74 65 64 20 69 6e |is inter|ested in|
|00000460| 20 62 75 69 6c 64 69 6e | 67 20 75 70 20 74 68 65 | buildin|g up the|
|00000470| 73 65 20 72 6f 75 74 69 | 6e 65 73 20 69 6e 74 6f |se routi|nes into|
|00000480| 20 73 6f 6d 65 74 68 69 | 6e 67 0a 73 6f 6c 69 64 | somethi|ng.solid|
|00000490| 20 66 6f 72 20 74 68 65 | 20 70 75 72 70 6f 73 65 | for the| purpose|
|000004a0| 20 6f 66 20 70 6f 72 74 | 69 6e 67 2c 20 73 65 6e | of port|ing, sen|
|000004b0| 64 20 6d 65 20 64 69 66 | 66 73 2e 20 20 49 66 20 |d me dif|fs. If |
|000004c0| 74 68 65 20 69 6e 74 65 | 72 65 73 74 20 69 73 0a |the inte|rest is.|
|000004d0| 77 69 64 65 20 65 6e 6f | 75 67 68 20 49 20 77 69 |wide eno|ugh I wi|
|000004e0| 6c 6c 20 61 74 74 65 6d | 70 74 20 74 6f 20 63 6f |ll attem|pt to co|
|000004f0| 6f 72 64 69 6e 61 74 65 | 20 72 65 76 69 73 69 6f |ordinate| revisio|
|00000500| 6e 73 20 61 6e 64 20 77 | 69 6c 6c 20 70 75 62 6c |ns and w|ill publ|
|00000510| 69 73 68 0a 74 68 72 6f | 75 67 68 20 63 6f 6d 70 |ish.thro|ugh comp|
|00000520| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 2e 0a 0a |.sources|.misc...|
|00000530| 4d 69 6b 65 20 48 6f 77 | 61 72 64 0a 68 6f 77 25 |Mike How|ard.how%|
|00000540| 6d 69 6c 68 6f 77 31 40 | 75 75 6e 65 74 2e 75 75 |milhow1@|uunet.uu|
|00000550| 2e 6e 65 74 0a 0a 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |.net..==|========|
|00000560| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000570| 3d 3d 3d 3d 3d 3d 63 75 | 74 20 68 65 72 65 3d 3d |======cu|t here==|
|00000580| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000590| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 0a 23 |========|======.#|
|000005a0| 21 20 2f 62 69 6e 2f 73 | 68 0a 23 20 54 68 69 73 |! /bin/s|h.# This|
|000005b0| 20 69 73 20 61 20 73 68 | 65 6c 6c 20 61 72 63 68 | is a sh|ell arch|
|000005c0| 69 76 65 2e 20 20 52 65 | 6d 6f 76 65 20 61 6e 79 |ive. Re|move any|
|000005d0| 74 68 69 6e 67 20 62 65 | 66 6f 72 65 20 74 68 69 |thing be|fore thi|
|000005e0| 73 20 6c 69 6e 65 2c 20 | 74 68 65 6e 20 75 6e 70 |s line, |then unp|
|000005f0| 61 63 6b 0a 23 20 69 74 | 20 62 79 20 73 61 76 69 |ack.# it| by savi|
|00000600| 6e 67 20 69 74 20 69 6e | 74 6f 20 61 20 66 69 6c |ng it in|to a fil|
|00000610| 65 20 61 6e 64 20 74 79 | 70 69 6e 67 20 22 73 68 |e and ty|ping "sh|
|00000620| 20 66 69 6c 65 22 2e 20 | 20 54 6f 20 6f 76 65 72 | file". | To over|
|00000630| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 0a 23 |write ex|isting.#|
|00000640| 20 66 69 6c 65 73 2c 20 | 74 79 70 65 20 22 73 68 | files, |type "sh|
|00000650| 20 66 69 6c 65 20 2d 63 | 22 2e 20 20 59 6f 75 20 | file -c|". You |
|00000660| 63 61 6e 20 61 6c 73 6f | 20 66 65 65 64 20 74 68 |can also| feed th|
|00000670| 69 73 20 61 73 20 73 74 | 61 6e 64 61 72 64 20 69 |is as st|andard i|
|00000680| 6e 70 75 74 20 76 69 61 | 0a 23 20 75 6e 73 68 61 |nput via|.# unsha|
|00000690| 72 2c 20 6f 72 20 62 79 | 20 74 79 70 69 6e 67 20 |r, or by| typing |
|000006a0| 22 73 68 20 3c 66 69 6c | 65 22 2c 20 65 2e 67 2e |"sh <fil|e", e.g.|
|000006b0| 2e 20 20 49 66 20 74 68 | 69 73 20 61 72 63 68 69 |. If th|is archi|
|000006c0| 76 65 20 69 73 20 63 6f | 6d 70 6c 65 74 65 2c 20 |ve is co|mplete, |
|000006d0| 79 6f 75 0a 23 20 77 69 | 6c 6c 20 73 65 65 20 74 |you.# wi|ll see t|
|000006e0| 68 65 20 66 6f 6c 6c 6f | 77 69 6e 67 20 6d 65 73 |he follo|wing mes|
|000006f0| 73 61 67 65 20 61 74 20 | 74 68 65 20 65 6e 64 3a |sage at |the end:|
|00000700| 0a 23 09 09 22 45 6e 64 | 20 6f 66 20 61 72 63 68 |.#.."End| of arch|
|00000710| 69 76 65 20 31 20 28 6f | 66 20 31 29 2e 22 0a 23 |ive 1 (o|f 1).".#|
|00000720| 20 43 6f 6e 74 65 6e 74 | 73 3a 20 20 4d 41 4e 49 | Content|s: MANI|
|00000730| 46 45 53 54 20 4d 61 6b | 65 66 69 6c 65 20 52 45 |FEST Mak|efile RE|
|00000740| 41 44 4d 45 20 64 6f 2d | 74 65 73 74 2e 73 68 20 |ADME do-|test.sh |
|00000750| 6c 6f 63 6b 2d 66 69 6c | 65 2e 63 0a 23 20 20 20 |lock-fil|e.c.# |
|00000760| 6c 6f 63 6b 2d 66 69 6c | 65 2e 68 20 6c 6f 63 6b |lock-fil|e.h lock|
|00000770| 2d 66 69 6c 65 2e 6d 61 | 6e 20 70 61 74 63 68 6c |-file.ma|n patchl|
|00000780| 65 76 65 6c 2e 68 20 74 | 65 73 74 2d 6c 6f 63 6b |evel.h t|est-lock|
|00000790| 2e 63 0a 23 20 57 72 61 | 70 70 65 64 20 62 79 20 |.c.# Wra|pped by |
|000007a0| 6d 69 6b 65 40 6d 69 6c | 68 6f 77 34 20 6f 6e 20 |mike@mil|how4 on |
|000007b0| 54 68 75 20 4a 61 6e 20 | 32 34 20 31 37 3a 30 37 |Thu Jan |24 17:07|
|000007c0| 3a 33 38 20 31 39 39 31 | 0a 50 41 54 48 3d 2f 62 |:38 1991|.PATH=/b|
|000007d0| 69 6e 3a 2f 75 73 72 2f | 62 69 6e 3a 2f 75 73 72 |in:/usr/|bin:/usr|
|000007e0| 2f 75 63 62 20 3b 20 65 | 78 70 6f 72 74 20 50 41 |/ucb ; e|xport PA|
|000007f0| 54 48 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 4d |TH.if te|st -f 'M|
|00000800| 41 4e 49 46 45 53 54 27 | 20 2d 61 20 22 24 7b 31 |ANIFEST'| -a "${1|
|00000810| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00000820| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00000830| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber|
|00000840| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|00000850| 22 27 4d 41 4e 49 46 45 | 53 54 27 5c 22 0a 65 6c |"'MANIFE|ST'\".el|
|00000860| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|00000870| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 4d 41 4e 49 |tracting| \"'MANI|
|00000880| 46 45 53 54 27 5c 22 20 | 5c 28 33 39 33 20 63 68 |FEST'\" |\(393 ch|
|00000890| 61 72 61 63 74 65 72 73 | 5c 29 0a 73 65 64 20 22 |aracters|\).sed "|
|000008a0| 73 2f 5e 58 2f 2f 22 20 | 3e 27 4d 41 4e 49 46 45 |s/^X//" |>'MANIFE|
|000008b0| 53 54 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |ST' <<'E|ND_OF_FI|
|000008c0| 4c 45 27 0a 58 20 20 20 | 46 69 6c 65 20 4e 61 6d |LE'.X |File Nam|
|000008d0| 65 09 09 41 72 63 68 69 | 76 65 20 23 09 44 65 73 |e..Archi|ve #.Des|
|000008e0| 63 72 69 70 74 69 6f 6e | 0a 58 2d 2d 2d 2d 2d 2d |cription|.X------|
|000008f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000920| 2d 2d 2d 2d 2d 0a 58 20 | 4d 41 4e 49 46 45 53 54 |-----.X |MANIFEST|
|00000930| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000940| 20 20 20 31 09 54 68 69 | 73 20 73 68 69 70 70 69 | 1.Thi|s shippi|
|00000950| 6e 67 20 6c 69 73 74 0a | 58 20 4d 61 6b 65 66 69 |ng list.|X Makefi|
|00000960| 6c 65 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |le | |
|00000970| 20 20 20 20 20 31 09 0a | 58 20 52 45 41 44 4d 45 | 1..|X README|
|00000980| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000990| 20 20 20 20 20 31 09 0a | 58 20 64 6f 2d 74 65 73 | 1..|X do-tes|
|000009a0| 74 2e 73 68 20 20 20 20 | 20 20 20 20 20 20 20 20 |t.sh | |
|000009b0| 20 20 20 20 20 31 09 0a | 58 20 6c 6f 63 6b 2d 66 | 1..|X lock-f|
|000009c0| 69 6c 65 2e 63 20 20 20 | 20 20 20 20 20 20 20 20 |ile.c | |
|000009d0| 20 20 20 20 20 31 09 0a | 58 20 6c 6f 63 6b 2d 66 | 1..|X lock-f|
|000009e0| 69 6c 65 2e 68 20 20 20 | 20 20 20 20 20 20 20 20 |ile.h | |
|000009f0| 20 20 20 20 20 31 09 0a | 58 20 6c 6f 63 6b 2d 66 | 1..|X lock-f|
|00000a00| 69 6c 65 2e 6d 61 6e 20 | 20 20 20 20 20 20 20 20 |ile.man | |
|00000a10| 20 20 20 20 20 31 09 0a | 58 20 70 61 74 63 68 6c | 1..|X patchl|
|00000a20| 65 76 65 6c 2e 68 20 20 | 20 20 20 20 20 20 20 20 |evel.h | |
|00000a30| 20 20 20 20 20 31 09 0a | 58 20 74 65 73 74 2d 6c | 1..|X test-l|
|00000a40| 6f 63 6b 2e 63 20 20 20 | 20 20 20 20 20 20 20 20 |ock.c | |
|00000a50| 20 20 20 20 20 31 09 0a | 45 4e 44 5f 4f 46 5f 46 | 1..|END_OF_F|
|00000a60| 49 4c 45 0a 69 66 20 74 | 65 73 74 20 33 39 33 20 |ILE.if t|est 393 |
|00000a70| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 27 4d 41 4e |-ne `wc |-c <'MAN|
|00000a80| 49 46 45 53 54 27 60 3b | 20 74 68 65 6e 0a 20 20 |IFEST'`;| then. |
|00000a90| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 27 | echo s|har: \"'|
|00000aa0| 4d 41 4e 49 46 45 53 54 | 27 5c 22 20 75 6e 70 61 |MANIFEST|'\" unpa|
|00000ab0| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00000ac0| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00000ad0| 66 20 27 4d 41 4e 49 46 | 45 53 54 27 0a 66 69 0a |f 'MANIF|EST'.fi.|
|00000ae0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 4d 61 6b 65 |if test |-f 'Make|
|00000af0| 66 69 6c 65 27 20 2d 61 | 20 22 24 7b 31 7d 22 20 |file' -a| "${1}" |
|00000b00| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|00000b10| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|00000b20| 6c 20 6e 6f 74 20 63 6c | 6f 62 62 65 72 20 65 78 |l not cl|obber ex|
|00000b30| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 27 4d |isting f|ile \"'M|
|00000b40| 61 6b 65 66 69 6c 65 27 | 5c 22 0a 65 6c 73 65 0a |akefile'|\".else.|
|00000b50| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|00000b60| 63 74 69 6e 67 20 5c 22 | 27 4d 61 6b 65 66 69 6c |cting \"|'Makefil|
|00000b70| 65 27 5c 22 20 5c 28 31 | 35 31 33 20 63 68 61 72 |e'\" \(1|513 char|
|00000b80| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00000b90| 5e 58 2f 2f 22 20 3e 27 | 4d 61 6b 65 66 69 6c 65 |^X//" >'|Makefile|
|00000ba0| 27 20 3c 3c 27 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |' <<'END|_OF_FILE|
|00000bb0| 27 0a 58 43 46 4c 41 47 | 53 09 3d 09 2d 67 0a 58 |'.XCFLAG|S.=.-g.X|
|00000bc0| 23 20 43 46 4c 41 47 53 | 09 3d 09 2d 4f 0a 58 0a |# CFLAGS|.=.-O.X.|
|00000bd0| 58 53 52 43 53 09 3d 09 | 74 65 73 74 2d 6c 6f 63 |XSRCS.=.|test-loc|
|00000be0| 6b 2e 63 20 6c 6f 63 6b | 2d 66 69 6c 65 2e 63 0a |k.c lock|-file.c.|
|00000bf0| 58 4f 42 4a 53 09 3d 09 | 24 28 53 52 43 53 3a 2e |XOBJS.=.|$(SRCS:.|
|00000c00| 63 3d 2e 6f 29 0a 58 48 | 44 52 53 09 3d 09 6c 6f |c=.o).XH|DRS.=.lo|
|00000c10| 63 6b 2d 66 69 6c 65 2e | 68 20 70 61 74 63 68 6c |ck-file.|h patchl|
|00000c20| 65 76 65 6c 2e 68 0a 58 | 4d 41 4e 09 3d 09 6c 6f |evel.h.X|MAN.=.lo|
|00000c30| 63 6b 2d 66 69 6c 65 2e | 6d 61 6e 0a 58 0a 58 49 |ck-file.|man.X.XI|
|00000c40| 4e 43 4c 55 44 45 5f 44 | 49 52 09 3d 09 2f 75 73 |NCLUDE_D|IR.=./us|
|00000c50| 72 2f 6c 6f 63 61 6c 2f | 69 6e 63 6c 75 64 65 0a |r/local/|include.|
|00000c60| 58 4d 41 4e 5f 44 49 52 | 09 09 3d 09 2f 75 73 72 |XMAN_DIR|..=./usr|
|00000c70| 2f 6d 61 6e 2f 6d 61 6e | 31 0a 58 4d 41 4e 5f 53 |/man/man|1.XMAN_S|
|00000c80| 55 46 46 49 58 09 3d 09 | 31 0a 58 0a 58 61 6c 6c |UFFIX.=.|1.X.Xall|
|00000c90| 20 3a 20 66 63 6e 74 6c | 5f 72 61 77 20 66 63 6e | : fcntl|_raw fcn|
|00000ca0| 74 6c 5f 62 75 66 20 5c | 0a 58 09 66 6c 6f 63 6b |tl_buf \|.X.flock|
|00000cb0| 5f 72 61 77 20 66 6c 6f | 63 6b 5f 62 75 66 20 5c |_raw flo|ck_buf \|
|00000cc0| 0a 58 09 6c 6f 63 6b 66 | 5f 72 61 77 20 6c 6f 63 |.X.lockf|_raw loc|
|00000cd0| 6b 66 5f 62 75 66 20 5c | 0a 58 09 6e 6f 6c 6f 63 |kf_buf \|.X.noloc|
|00000ce0| 6b 5f 72 61 77 20 6e 6f | 6c 6f 63 6b 5f 62 75 66 |k_raw no|lock_buf|
|00000cf0| 0a 58 0a 58 66 63 6e 74 | 6c 5f 72 61 77 20 3a 20 |.X.Xfcnt|l_raw : |
|00000d00| 24 28 53 52 43 53 29 20 | 24 28 48 44 52 53 29 0a |$(SRCS) |$(HDRS).|
|00000d10| 58 09 24 28 43 43 29 20 | 24 28 43 46 4c 41 47 53 |X.$(CC) |$(CFLAGS|
|00000d20| 29 20 2d 44 46 43 4e 54 | 4c 5f 53 54 59 4c 45 20 |) -DFCNT|L_STYLE |
|00000d30| 24 28 53 52 43 53 29 20 | 2d 6f 20 66 63 6e 74 6c |$(SRCS) |-o fcntl|
|00000d40| 5f 72 61 77 0a 58 09 72 | 6d 20 2d 66 20 24 28 4f |_raw.X.r|m -f $(O|
|00000d50| 42 4a 53 29 0a 58 0a 58 | 66 6c 6f 63 6b 5f 72 61 |BJS).X.X|flock_ra|
|00000d60| 77 20 3a 20 24 28 53 52 | 43 53 29 20 24 28 48 44 |w : $(SR|CS) $(HD|
|00000d70| 52 53 29 0a 58 09 24 28 | 43 43 29 20 24 28 43 46 |RS).X.$(|CC) $(CF|
|00000d80| 4c 41 47 53 29 20 2d 44 | 46 4c 4f 43 4b 5f 53 54 |LAGS) -D|FLOCK_ST|
|00000d90| 59 4c 45 20 24 28 53 52 | 43 53 29 20 2d 6f 20 66 |YLE $(SR|CS) -o f|
|00000da0| 6c 6f 63 6b 5f 72 61 77 | 0a 58 09 72 6d 20 2d 66 |lock_raw|.X.rm -f|
|00000db0| 20 24 28 4f 42 4a 53 29 | 0a 58 0a 58 6c 6f 63 6b | $(OBJS)|.X.Xlock|
|00000dc0| 66 5f 72 61 77 20 3a 20 | 24 28 53 52 43 53 29 20 |f_raw : |$(SRCS) |
|00000dd0| 24 28 48 44 52 53 29 0a | 58 09 24 28 43 43 29 20 |$(HDRS).|X.$(CC) |
|00000de0| 24 28 43 46 4c 41 47 53 | 29 20 2d 44 4c 4f 43 4b |$(CFLAGS|) -DLOCK|
|00000df0| 46 5f 53 54 59 4c 45 20 | 24 28 53 52 43 53 29 20 |F_STYLE |$(SRCS) |
|00000e00| 2d 6f 20 6c 6f 63 6b 66 | 5f 72 61 77 0a 58 09 72 |-o lockf|_raw.X.r|
|00000e10| 6d 20 2d 66 20 24 28 4f | 42 4a 53 29 0a 58 0a 58 |m -f $(O|BJS).X.X|
|00000e20| 6e 6f 6c 6f 63 6b 5f 72 | 61 77 20 3a 20 24 28 53 |nolock_r|aw : $(S|
|00000e30| 52 43 53 29 20 24 28 48 | 44 52 53 29 0a 58 09 24 |RCS) $(H|DRS).X.$|
|00000e40| 28 43 43 29 20 24 28 43 | 46 4c 41 47 53 29 20 74 |(CC) $(C|FLAGS) t|
|00000e50| 65 73 74 2d 6c 6f 63 6b | 2e 63 20 2d 6f 20 6e 6f |est-lock|.c -o no|
|00000e60| 6c 6f 63 6b 5f 72 61 77 | 0a 58 09 72 6d 20 2d 66 |lock_raw|.X.rm -f|
|00000e70| 20 24 28 4f 42 4a 53 29 | 0a 58 0a 58 66 63 6e 74 | $(OBJS)|.X.Xfcnt|
|00000e80| 6c 5f 62 75 66 20 3a 20 | 24 28 53 52 43 53 29 20 |l_buf : |$(SRCS) |
|00000e90| 24 28 48 44 52 53 29 0a | 58 09 24 28 43 43 29 20 |$(HDRS).|X.$(CC) |
|00000ea0| 24 28 43 46 4c 41 47 53 | 29 20 2d 44 46 43 4e 54 |$(CFLAGS|) -DFCNT|
|00000eb0| 4c 5f 53 54 59 4c 45 20 | 2d 44 55 53 45 5f 42 55 |L_STYLE |-DUSE_BU|
|00000ec0| 46 46 45 52 45 44 20 24 | 28 53 52 43 53 29 20 2d |FFERED $|(SRCS) -|
|00000ed0| 6f 20 66 63 6e 74 6c 5f | 62 75 66 0a 58 09 72 6d |o fcntl_|buf.X.rm|
|00000ee0| 20 2d 66 20 24 28 4f 42 | 4a 53 29 0a 58 0a 58 66 | -f $(OB|JS).X.Xf|
|00000ef0| 6c 6f 63 6b 5f 62 75 66 | 20 3a 20 24 28 53 52 43 |lock_buf| : $(SRC|
|00000f00| 53 29 20 24 28 48 44 52 | 53 29 0a 58 09 24 28 43 |S) $(HDR|S).X.$(C|
|00000f10| 43 29 20 24 28 43 46 4c | 41 47 53 29 20 2d 44 46 |C) $(CFL|AGS) -DF|
|00000f20| 4c 4f 43 4b 5f 53 54 59 | 4c 45 20 2d 44 55 53 45 |LOCK_STY|LE -DUSE|
|00000f30| 5f 42 55 46 46 45 52 45 | 44 20 24 28 53 52 43 53 |_BUFFERE|D $(SRCS|
|00000f40| 29 20 2d 6f 20 66 6c 6f | 63 6b 5f 62 75 66 0a 58 |) -o flo|ck_buf.X|
|00000f50| 09 72 6d 20 2d 66 20 24 | 28 4f 42 4a 53 29 0a 58 |.rm -f $|(OBJS).X|
|00000f60| 0a 58 6c 6f 63 6b 66 5f | 62 75 66 20 3a 20 24 28 |.Xlockf_|buf : $(|
|00000f70| 53 52 43 53 29 20 24 28 | 48 44 52 53 29 0a 58 09 |SRCS) $(|HDRS).X.|
|00000f80| 24 28 43 43 29 20 24 28 | 43 46 4c 41 47 53 29 20 |$(CC) $(|CFLAGS) |
|00000f90| 2d 44 4c 4f 43 4b 46 5f | 53 54 59 4c 45 20 2d 44 |-DLOCKF_|STYLE -D|
|00000fa0| 55 53 45 5f 42 55 46 46 | 45 52 45 44 20 24 28 53 |USE_BUFF|ERED $(S|
|00000fb0| 52 43 53 29 20 2d 6f 20 | 6c 6f 63 6b 66 5f 62 75 |RCS) -o |lockf_bu|
|00000fc0| 66 0a 58 09 72 6d 20 2d | 66 20 24 28 4f 42 4a 53 |f.X.rm -|f $(OBJS|
|00000fd0| 29 0a 58 0a 58 6e 6f 6c | 6f 63 6b 5f 62 75 66 20 |).X.Xnol|ock_buf |
|00000fe0| 3a 20 24 28 53 52 43 53 | 29 20 24 28 48 44 52 53 |: $(SRCS|) $(HDRS|
|00000ff0| 29 0a 58 09 24 28 43 43 | 29 20 24 28 43 46 4c 41 |).X.$(CC|) $(CFLA|
|00001000| 47 53 29 20 2d 44 55 53 | 45 5f 42 55 46 46 45 52 |GS) -DUS|E_BUFFER|
|00001010| 45 44 20 74 65 73 74 2d | 6c 6f 63 6b 2e 63 20 2d |ED test-|lock.c -|
|00001020| 6f 20 6e 6f 6c 6f 63 6b | 5f 62 75 66 0a 58 09 72 |o nolock|_buf.X.r|
|00001030| 6d 20 2d 66 20 24 28 4f | 42 4a 53 29 0a 58 0a 58 |m -f $(O|BJS).X.X|
|00001040| 69 6e 73 74 61 6c 6c 20 | 3a 0a 58 09 63 70 20 66 |install |:.X.cp f|
|00001050| 69 6c 65 2d 6c 6f 63 6b | 2e 68 20 24 28 49 4e 43 |ile-lock|.h $(INC|
|00001060| 4c 55 44 45 5f 44 49 52 | 29 0a 58 09 63 70 20 66 |LUDE_DIR|).X.cp f|
|00001070| 69 6c 65 2d 6c 6f 63 6b | 2e 6d 61 6e 20 24 28 4d |ile-lock|.man $(M|
|00001080| 41 4e 5f 44 49 52 29 2f | 66 69 6c 65 2d 6c 6f 63 |AN_DIR)/|file-loc|
|00001090| 6b 2e 24 28 4d 41 4e 5f | 53 55 46 46 49 58 29 0a |k.$(MAN_|SUFFIX).|
|000010a0| 58 09 65 63 68 6f 20 22 | 69 6e 73 74 61 6c 6c 20 |X.echo "|install |
|000010b0| 66 69 6c 65 2d 6c 6f 63 | 6b 2e 6f 20 69 6e 20 79 |file-loc|k.o in y|
|000010c0| 6f 75 72 20 6c 6f 63 61 | 6c 20 6c 69 62 72 61 72 |our loca|l librar|
|000010d0| 79 22 0a 58 0a 58 63 6c | 65 61 6e 20 3a 0a 58 09 |y".X.Xcl|ean :.X.|
|000010e0| 72 6d 20 2d 66 20 09 66 | 63 6e 74 6c 5f 72 61 77 |rm -f .f|cntl_raw|
|000010f0| 20 66 63 6e 74 6c 5f 62 | 75 66 20 5c 0a 58 09 09 | fcntl_b|uf \.X..|
|00001100| 66 6c 6f 63 6b 5f 72 61 | 77 20 66 6c 6f 63 6b 5f |flock_ra|w flock_|
|00001110| 62 75 66 20 5c 0a 58 09 | 09 6c 6f 63 6b 66 5f 72 |buf \.X.|.lockf_r|
|00001120| 61 77 20 6c 6f 63 6b 66 | 5f 62 75 66 20 5c 0a 58 |aw lockf|_buf \.X|
|00001130| 09 09 6e 6f 6c 6f 63 6b | 5f 72 61 77 20 6e 6f 6c |..nolock|_raw nol|
|00001140| 6f 63 6b 5f 62 75 66 20 | 5c 0a 58 09 09 24 28 4f |ock_buf |\.X..$(O|
|00001150| 42 4a 53 29 0a 58 0a 58 | 76 65 72 79 63 6c 65 61 |BJS).X.X|veryclea|
|00001160| 6e 20 3a 0a 58 09 72 6d | 20 2d 66 20 74 65 73 74 |n :.X.rm| -f test|
|00001170| 2d 74 6d 70 2a 20 74 65 | 73 74 2e 6c 6f 67 20 74 |-tmp* te|st.log t|
|00001180| 65 73 74 2e 6c 6f 67 2d | 0a 58 09 6d 61 6b 65 20 |est.log-|.X.make |
|00001190| 63 6c 65 61 6e 0a 58 0a | 58 6b 69 74 20 3a 0a 58 |clean.X.|Xkit :.X|
|000011a0| 09 6d 61 6b 65 6b 69 74 | 20 2d 6d 20 52 45 41 44 |.makekit| -m READ|
|000011b0| 4d 45 20 4d 61 6b 65 66 | 69 6c 65 20 24 28 53 52 |ME Makef|ile $(SR|
|000011c0| 43 53 29 20 24 28 48 44 | 52 53 29 20 64 6f 2d 74 |CS) $(HD|RS) do-t|
|000011d0| 65 73 74 2e 73 68 20 24 | 28 4d 41 4e 29 0a 45 4e |est.sh $|(MAN).EN|
|000011e0| 44 5f 4f 46 5f 46 49 4c | 45 0a 69 66 20 74 65 73 |D_OF_FIL|E.if tes|
|000011f0| 74 20 31 35 31 33 20 2d | 6e 65 20 60 77 63 20 2d |t 1513 -|ne `wc -|
|00001200| 63 20 3c 27 4d 61 6b 65 | 66 69 6c 65 27 60 3b 20 |c <'Make|file'`; |
|00001210| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|00001220| 61 72 3a 20 5c 22 27 4d | 61 6b 65 66 69 6c 65 27 |ar: \"'M|akefile'|
|00001230| 5c 22 20 75 6e 70 61 63 | 6b 65 64 20 77 69 74 68 |\" unpac|ked with|
|00001240| 20 77 72 6f 6e 67 20 73 | 69 7a 65 21 0a 66 69 0a | wrong s|ize!.fi.|
|00001250| 23 20 65 6e 64 20 6f 66 | 20 27 4d 61 6b 65 66 69 |# end of| 'Makefi|
|00001260| 6c 65 27 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |le'.fi.i|f test -|
|00001270| 66 20 27 52 45 41 44 4d | 45 27 20 2d 61 20 22 24 |f 'READM|E' -a "$|
|00001280| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|00001290| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|000012a0| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 63 6c 6f 62 62 |: Will n|ot clobb|
|000012b0| 65 72 20 65 78 69 73 74 | 69 6e 67 20 66 69 6c 65 |er exist|ing file|
|000012c0| 20 5c 22 27 52 45 41 44 | 4d 45 27 5c 22 0a 65 6c | \"'READ|ME'\".el|
|000012d0| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|000012e0| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 52 45 41 44 |tracting| \"'READ|
|000012f0| 4d 45 27 5c 22 20 5c 28 | 31 31 38 38 20 63 68 61 |ME'\" \(|1188 cha|
|00001300| 72 61 63 74 65 72 73 5c | 29 0a 73 65 64 20 22 73 |racters\|).sed "s|
|00001310| 2f 5e 58 2f 2f 22 20 3e | 27 52 45 41 44 4d 45 27 |/^X//" >|'README'|
|00001320| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00001330| 0a 58 49 20 77 72 6f 74 | 65 20 74 68 69 73 20 62 |.XI wrot|e this b|
|00001340| 65 63 61 75 73 65 20 49 | 27 6d 20 73 69 63 6b 20 |ecause I|'m sick |
|00001350| 6f 66 20 64 65 61 6c 69 | 6e 67 20 77 69 74 68 20 |of deali|ng with |
|00001360| 64 69 66 66 65 72 65 6e | 74 20 6c 6f 63 6b 69 6e |differen|t lockin|
|00001370| 67 0a 58 73 79 6e 74 61 | 78 20 61 6e 64 20 6c 6f |g.Xsynta|x and lo|
|00001380| 63 6b 69 6e 67 20 73 65 | 6d 61 6e 74 69 63 73 20 |cking se|mantics |
|00001390| 64 65 70 65 6e 64 69 6e | 67 20 6f 6e 20 74 68 65 |dependin|g on the|
|000013a0| 20 6d 61 63 68 69 6e 65 | 20 74 68 65 20 63 6f 64 | machine| the cod|
|000013b0| 65 20 69 73 0a 58 72 75 | 6e 6e 69 6e 67 20 6f 6e |e is.Xru|nning on|
|000013c0| 2e 20 20 42 54 57 2c 20 | 74 68 69 73 20 73 68 6f |. BTW, |this sho|
|000013d0| 75 6c 64 20 62 65 20 63 | 6f 6e 73 69 64 65 72 65 |uld be c|onsidere|
|000013e0| 64 20 61 6e 20 41 6c 70 | 68 61 20 72 65 6c 65 61 |d an Alp|ha relea|
|000013f0| 73 65 2e 0a 58 0a 58 54 | 68 65 73 65 20 61 72 65 |se..X.XT|hese are|
|00001400| 20 63 6f 6e 76 65 6e 69 | 65 6e 63 65 20 72 6f 75 | conveni|ence rou|
|00001410| 74 69 6e 65 73 20 77 68 | 69 63 68 20 69 6d 70 6c |tines wh|ich impl|
|00001420| 65 6d 65 6e 74 20 66 69 | 6c 65 20 6c 6f 63 6b 69 |ement fi|le locki|
|00001430| 6e 67 20 69 6e 20 73 74 | 61 6e 64 61 72 64 0a 58 |ng in st|andard.X|
|00001440| 77 61 79 73 20 72 65 67 | 61 72 64 6c 65 73 73 20 |ways reg|ardless |
|00001450| 6f 66 20 74 68 65 20 6d | 65 74 68 6f 64 20 73 65 |of the m|ethod se|
|00001460| 6c 65 63 74 65 64 20 77 | 69 74 68 69 6e 20 74 68 |lected w|ithin th|
|00001470| 65 20 70 61 72 74 69 63 | 75 6c 61 72 20 6f 70 65 |e partic|ular ope|
|00001480| 72 61 74 69 6e 67 0a 58 | 73 79 73 74 65 6d 2e 20 |rating.X|system. |
|00001490| 20 43 75 72 72 65 6e 74 | 6c 79 20 60 73 75 70 70 | Current|ly `supp|
|000014a0| 6f 72 74 65 64 27 20 61 | 72 65 20 66 63 6e 74 6c |orted' a|re fcntl|
|000014b0| 28 29 2c 20 6c 6f 63 6b | 66 28 29 2c 20 61 6e 64 |(), lock|f(), and|
|000014c0| 20 66 6c 6f 63 6b 28 29 | 20 73 74 79 6c 65 0a 58 | flock()| style.X|
|000014d0| 6c 6f 63 6b 69 6e 67 2e | 20 20 54 68 65 20 63 6f |locking.| The co|
|000014e0| 64 65 20 68 61 73 20 62 | 65 65 6e 20 64 65 76 65 |de has b|een deve|
|000014f0| 6c 6f 70 65 64 20 61 6e | 64 20 60 74 65 73 74 65 |loped an|d `teste|
|00001500| 64 27 20 6f 6e 20 61 20 | 53 75 6e 0a 58 53 50 41 |d' on a |Sun.XSPA|
|00001510| 52 43 73 74 61 74 69 6f | 6e 20 31 20 75 6e 64 65 |RCstatio|n 1 unde|
|00001520| 72 20 53 75 6e 4f 53 20 | 34 2e 31 2e 20 20 49 74 |r SunOS |4.1. It|
|00001530| 20 68 61 73 20 61 6c 73 | 6f 20 62 65 65 6e 20 60 | has als|o been `|
|00001540| 74 65 73 74 65 64 27 20 | 75 6e 64 65 72 20 53 43 |tested' |under SC|
|00001550| 4f 0a 58 58 65 6e 69 78 | 20 32 2e 33 2e 32 20 61 |O.XXenix| 2.3.2 a|
|00001560| 6e 64 20 60 70 61 73 73 | 65 73 27 2c 20 65 78 63 |nd `pass|es', exc|
|00001570| 65 70 74 20 74 68 61 74 | 20 6c 6f 63 6b 66 28 29 |ept that| lockf()|
|00001580| 20 73 74 79 6c 65 20 6c | 6f 63 6b 69 6e 67 20 73 | style l|ocking s|
|00001590| 65 74 73 20 65 72 72 6e | 6f 0a 58 74 6f 20 45 41 |ets errn|o.Xto EA|
|000015a0| 47 41 49 4e 20 72 61 74 | 68 65 72 20 74 68 61 6e |GAIN rat|her than|
|000015b0| 20 45 41 43 43 45 53 2c | 20 61 73 20 69 74 20 64 | EACCES,| as it d|
|000015c0| 6f 65 73 20 6f 6e 20 74 | 68 65 20 53 75 6e 2e 20 |oes on t|he Sun. |
|000015d0| 20 49 20 68 61 76 65 6e | 27 74 0a 58 60 66 69 78 | I haven|'t.X`fix|
|000015e0| 65 64 27 20 69 74 20 62 | 65 63 61 75 73 65 20 49 |ed' it b|ecause I|
|000015f0| 20 74 68 69 6e 6b 20 74 | 68 61 74 20 53 43 4f 27 | think t|hat SCO'|
|00001600| 73 20 65 72 72 6e 6f 20 | 76 61 6c 75 65 20 69 73 |s errno |value is|
|00001610| 20 77 72 6f 6e 67 20 61 | 6e 64 20 49 20 66 65 65 | wrong a|nd I fee|
|00001620| 6c 0a 58 6c 69 6b 65 20 | 62 65 69 6e 67 20 70 65 |l.Xlike |being pe|
|00001630| 72 76 65 72 73 65 20 74 | 6f 64 61 79 2e 0a 58 0a |rverse t|oday..X.|
|00001640| 58 54 68 65 20 72 6f 75 | 74 69 6e 65 20 60 74 65 |XThe rou|tine `te|
|00001650| 73 74 2d 6c 6f 63 6b 2e | 63 27 20 69 73 20 61 20 |st-lock.|c' is a |
|00001660| 68 61 6c 66 2d 61 73 73 | 65 64 20 74 65 73 74 20 |half-ass|ed test |
|00001670| 64 72 69 76 65 72 2e 20 | 20 60 64 6f 2d 74 65 73 |driver. | `do-tes|
|00001680| 74 2e 73 68 27 0a 58 63 | 61 75 73 65 73 20 61 20 |t.sh'.Xc|auses a |
|00001690| 76 61 72 69 65 74 79 20 | 6f 66 20 74 65 73 74 20 |variety |of test |
|000016a0| 74 6f 20 62 65 20 70 65 | 72 66 6f 72 6d 65 64 20 |to be pe|rformed |
|000016b0| 2d 20 74 68 65 20 72 65 | 73 75 6c 74 73 20 61 72 |- the re|sults ar|
|000016c0| 65 20 73 61 76 65 64 20 | 69 6e 0a 58 74 65 73 74 |e saved |in.Xtest|
|000016d0| 2e 6c 6f 67 2e 0a 58 0a | 58 49 66 20 61 6e 79 6f |.log..X.|XIf anyo|
|000016e0| 6e 65 20 69 73 20 69 6e | 74 65 72 65 73 74 65 64 |ne is in|terested|
|000016f0| 20 69 6e 20 62 75 69 6c | 64 69 6e 67 20 75 70 20 | in buil|ding up |
|00001700| 74 68 65 73 65 20 72 6f | 75 74 69 6e 65 73 20 69 |these ro|utines i|
|00001710| 6e 74 6f 20 73 6f 6d 65 | 74 68 69 6e 67 0a 58 73 |nto some|thing.Xs|
|00001720| 6f 6c 69 64 20 66 6f 72 | 20 74 68 65 20 70 75 72 |olid for| the pur|
|00001730| 70 6f 73 65 20 6f 66 20 | 70 6f 72 74 69 6e 67 2c |pose of |porting,|
|00001740| 20 73 65 6e 64 20 6d 65 | 20 64 69 66 66 73 2e 20 | send me| diffs. |
|00001750| 20 49 66 20 74 68 65 20 | 69 6e 74 65 72 65 73 74 | If the |interest|
|00001760| 20 69 73 0a 58 77 69 64 | 65 20 65 6e 6f 75 67 68 | is.Xwid|e enough|
|00001770| 20 49 20 77 69 6c 6c 20 | 61 74 74 65 6d 70 74 20 | I will |attempt |
|00001780| 74 6f 20 63 6f 6f 72 64 | 69 6e 61 74 65 20 72 65 |to coord|inate re|
|00001790| 76 69 73 69 6f 6e 73 20 | 61 6e 64 20 77 69 6c 6c |visions |and will|
|000017a0| 20 70 75 62 6c 69 73 68 | 0a 58 74 68 72 6f 75 67 | publish|.Xthroug|
|000017b0| 68 20 63 6f 6d 70 2e 73 | 6f 75 72 63 65 73 2e 6d |h comp.s|ources.m|
|000017c0| 69 73 63 2e 0a 58 0a 58 | 4d 69 6b 65 20 48 6f 77 |isc..X.X|Mike How|
|000017d0| 61 72 64 0a 58 68 6f 77 | 25 6d 69 6c 68 6f 77 31 |ard.Xhow|%milhow1|
|000017e0| 40 75 75 6e 65 74 2e 75 | 75 2e 6e 65 74 0a 45 4e |@uunet.u|u.net.EN|
|000017f0| 44 5f 4f 46 5f 46 49 4c | 45 0a 69 66 20 74 65 73 |D_OF_FIL|E.if tes|
|00001800| 74 20 31 31 38 38 20 2d | 6e 65 20 60 77 63 20 2d |t 1188 -|ne `wc -|
|00001810| 63 20 3c 27 52 45 41 44 | 4d 45 27 60 3b 20 74 68 |c <'READ|ME'`; th|
|00001820| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|00001830| 3a 20 5c 22 27 52 45 41 | 44 4d 45 27 5c 22 20 75 |: \"'REA|DME'\" u|
|00001840| 6e 70 61 63 6b 65 64 20 | 77 69 74 68 20 77 72 6f |npacked |with wro|
|00001850| 6e 67 20 73 69 7a 65 21 | 0a 66 69 0a 23 20 65 6e |ng size!|.fi.# en|
|00001860| 64 20 6f 66 20 27 52 45 | 41 44 4d 45 27 0a 66 69 |d of 'RE|ADME'.fi|
|00001870| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 64 6f 2d |.if test| -f 'do-|
|00001880| 74 65 73 74 2e 73 68 27 | 20 2d 61 20 22 24 7b 31 |test.sh'| -a "${1|
|00001890| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|000018a0| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|000018b0| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber|
|000018c0| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|000018d0| 22 27 64 6f 2d 74 65 73 | 74 2e 73 68 27 5c 22 0a |"'do-tes|t.sh'\".|
|000018e0| 65 6c 73 65 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |else.ech|o shar: |
|000018f0| 45 78 74 72 61 63 74 69 | 6e 67 20 5c 22 27 64 6f |Extracti|ng \"'do|
|00001900| 2d 74 65 73 74 2e 73 68 | 27 5c 22 20 5c 28 31 31 |-test.sh|'\" \(11|
|00001910| 37 36 20 63 68 61 72 61 | 63 74 65 72 73 5c 29 0a |76 chara|cters\).|
|00001920| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 27 64 |sed "s/^|X//" >'d|
|00001930| 6f 2d 74 65 73 74 2e 73 | 68 27 20 3c 3c 27 45 4e |o-test.s|h' <<'EN|
|00001940| 44 5f 4f 46 5f 46 49 4c | 45 27 0a 58 23 21 2f 62 |D_OF_FIL|E'.X#!/b|
|00001950| 69 6e 2f 73 68 0a 58 23 | 20 73 68 20 64 6f 2d 74 |in/sh.X#| sh do-t|
|00001960| 65 73 74 2e 73 68 20 5b | 6d 69 6e 2d 63 6f 72 72 |est.sh [|min-corr|
|00001970| 75 70 74 69 6f 6e 73 28 | 35 30 29 20 5b 69 6e 69 |uptions(|50) [ini|
|00001980| 74 69 61 6c 2d 72 65 70 | 73 28 35 30 29 20 5b 69 |tial-rep|s(50) [i|
|00001990| 6e 63 28 64 65 66 20 74 | 6f 20 32 35 29 5d 5d 5d |nc(def t|o 25)]]]|
|000019a0| 0a 58 0a 58 69 66 20 5b | 20 22 24 31 22 20 3d 20 |.X.Xif [| "$1" = |
|000019b0| 22 2d 68 22 20 5d 20 3b | 20 74 68 65 6e 0a 58 20 |"-h" ] ;| then.X |
|000019c0| 20 65 63 68 6f 20 22 73 | 68 20 64 6f 2d 74 65 73 | echo "s|h do-tes|
|000019d0| 74 2e 73 68 20 5b 6d 69 | 6e 2d 63 6f 72 72 75 70 |t.sh [mi|n-corrup|
|000019e0| 74 69 6f 6e 73 28 35 30 | 29 20 5b 69 6e 69 74 69 |tions(50|) [initi|
|000019f0| 61 6c 2d 72 65 70 73 28 | 35 30 29 20 5b 69 6e 63 |al-reps(|50) [inc|
|00001a00| 28 64 65 66 20 74 6f 20 | 32 35 29 5d 5d 5d 22 0a |(def to |25)]]]".|
|00001a10| 58 20 20 65 78 69 74 0a | 58 66 69 0a 58 23 20 66 |X exit.|Xfi.X# f|
|00001a20| 69 6e 64 20 61 6e 20 61 | 70 70 72 6f 70 72 69 61 |ind an a|ppropria|
|00001a30| 74 65 20 72 65 70 20 63 | 6f 75 6e 74 0a 58 0a 58 |te rep c|ount.X.X|
|00001a40| 4d 49 4e 3d 24 7b 31 3a | 2d 35 30 7d 0a 58 52 45 |MIN=${1:|-50}.XRE|
|00001a50| 50 3d 24 7b 32 3a 2d 35 | 30 7d 0a 58 49 4e 43 3d |P=${2:-5|0}.XINC=|
|00001a60| 24 7b 33 3a 2d 32 35 7d | 0a 58 74 72 61 70 20 22 |${3:-25}|.Xtrap "|
|00001a70| 72 6d 20 2f 74 6d 70 2f | 74 2d 24 24 20 3b 20 65 |rm /tmp/|t-$$ ; e|
|00001a80| 78 69 74 20 30 22 20 30 | 0a 58 74 72 61 70 20 22 |xit 0" 0|.Xtrap "|
|00001a90| 72 6d 20 2f 74 6d 70 2f | 74 2d 24 24 20 3b 20 65 |rm /tmp/|t-$$ ; e|
|00001aa0| 78 69 74 20 31 22 20 31 | 20 32 20 33 20 31 35 0a |xit 1" 1| 2 3 15.|
|00001ab0| 58 0a 58 69 66 20 5b 20 | 2d 73 20 74 65 73 74 2e |X.Xif [ |-s test.|
|00001ac0| 6c 6f 67 20 5d 20 3b 20 | 74 68 65 6e 0a 58 20 20 |log ] ; |then.X |
|00001ad0| 65 63 68 6f 20 22 62 61 | 63 6b 69 6e 67 20 75 70 |echo "ba|cking up|
|00001ae0| 20 70 72 65 76 69 6f 75 | 73 20 74 65 73 74 2e 6c | previou|s test.l|
|00001af0| 6f 67 20 74 6f 20 74 65 | 73 74 2e 6c 6f 67 2d 22 |og to te|st.log-"|
|00001b00| 0a 58 20 20 6d 76 20 74 | 65 73 74 2e 6c 6f 67 20 |.X mv t|est.log |
|00001b10| 74 65 73 74 2e 6c 6f 67 | 2d 0a 58 66 69 0a 58 0a |test.log|-.Xfi.X.|
|00001b20| 58 65 63 68 6f 20 22 64 | 65 74 61 69 6c 20 6f 75 |Xecho "d|etail ou|
|00001b30| 74 70 75 74 20 73 61 76 | 65 64 20 69 6e 20 74 65 |tput sav|ed in te|
|00001b40| 73 74 2e 6c 6f 67 22 0a | 58 65 63 68 6f 20 22 63 |st.log".|Xecho "c|
|00001b50| 6f 6d 70 75 74 69 6e 67 | 20 6d 69 6e 20 72 65 70 |omputing| min rep|
|00001b60| 73 20 69 6e 20 6f 72 64 | 65 72 20 74 6f 20 67 65 |s in ord|er to ge|
|00001b70| 74 20 24 4d 49 4e 20 6d | 69 78 65 64 20 6f 75 74 |t $MIN m|ixed out|
|00001b80| 70 75 74 73 22 0a 58 77 | 68 69 6c 65 20 74 72 75 |puts".Xw|hile tru|
|00001b90| 65 20 3b 20 64 6f 0a 58 | 20 20 65 63 68 6f 20 22 |e ; do.X| echo "|
|00001ba0| 74 72 79 69 6e 67 20 6e | 6f 6c 6f 63 6b 5f 72 61 |trying n|olock_ra|
|00001bb0| 77 20 77 69 74 68 20 24 | 52 45 50 20 72 65 70 73 |w with $|REP reps|
|00001bc0| 22 0a 58 20 20 6e 6f 6c | 6f 63 6b 5f 72 61 77 20 |".X nol|ock_raw |
|00001bd0| 24 52 45 50 20 7c 20 74 | 65 65 20 74 65 73 74 2e |$REP | t|ee test.|
|00001be0| 6c 6f 67 20 7c 0a 58 20 | 20 61 77 6b 20 27 0a 58 |log |.X | awk '.X|
|00001bf0| 20 20 24 30 20 7e 20 2f | 63 6f 72 72 75 70 74 20 | $0 ~ /|corrupt |
|00001c00| 73 65 71 75 65 6e 63 65 | 73 20 66 6f 75 6e 64 24 |sequence|s found$|
|00001c10| 2f 20 7b 20 63 6f 72 72 | 75 70 74 20 3d 20 24 32 |/ { corr|upt = $2|
|00001c20| 20 7d 0a 58 20 20 45 4e | 44 20 7b 20 70 72 69 6e | }.X EN|D { prin|
|00001c30| 74 20 63 6f 72 72 75 70 | 74 20 7d 0a 58 20 20 27 |t corrup|t }.X '|
|00001c40| 20 2d 20 3e 2f 74 6d 70 | 2f 74 2d 24 24 0a 58 20 | - >/tmp|/t-$$.X |
|00001c50| 20 43 4f 55 4e 54 3d 60 | 63 61 74 20 2f 74 6d 70 | COUNT=`|cat /tmp|
|00001c60| 2f 74 2d 24 24 60 0a 58 | 20 20 69 66 20 5b 20 24 |/t-$$`.X| if [ $|
|00001c70| 43 4f 55 4e 54 20 2d 6c | 74 20 24 4d 49 4e 20 5d |COUNT -l|t $MIN ]|
|00001c80| 20 3b 20 74 68 65 6e 0a | 58 20 20 20 20 52 45 50 | ; then.|X REP|
|00001c90| 3d 60 65 78 70 72 20 24 | 52 45 50 20 2b 20 24 49 |=`expr $|REP + $I|
|00001ca0| 4e 43 60 0a 58 20 20 65 | 6c 73 65 0a 58 20 20 20 |NC`.X e|lse.X |
|00001cb0| 20 62 72 65 61 6b 3b 0a | 58 20 20 66 69 0a 58 64 | break;.|X fi.Xd|
|00001cc0| 6f 6e 65 0a 58 0a 58 65 | 63 68 6f 20 22 24 52 45 |one.X.Xe|cho "$RE|
|00001cd0| 50 20 72 65 70 65 74 69 | 6f 6e 73 20 73 61 74 69 |P repeti|ons sati|
|00001ce0| 73 66 79 20 63 72 69 74 | 65 72 69 6f 6e 22 0a 58 |sfy crit|erion".X|
|00001cf0| 6d 76 20 74 65 73 74 2d | 74 6d 70 20 74 65 73 74 |mv test-|tmp test|
|00001d00| 2d 74 6d 70 2e 6e 6f 6c | 6f 63 6b 5f 72 61 77 0a |-tmp.nol|ock_raw.|
|00001d10| 58 0a 58 66 6f 72 20 78 | 20 69 6e 20 6e 6f 6c 6f |X.Xfor x| in nolo|
|00001d20| 63 6b 5f 62 75 66 20 5c | 0a 58 20 20 66 63 6e 74 |ck_buf \|.X fcnt|
|00001d30| 6c 5f 72 61 77 20 66 63 | 6e 74 6c 5f 62 75 66 20 |l_raw fc|ntl_buf |
|00001d40| 5c 0a 58 20 20 66 6c 6f | 63 6b 5f 72 61 77 20 66 |\.X flo|ck_raw f|
|00001d50| 6c 6f 63 6b 5f 62 75 66 | 20 5c 0a 58 20 20 6c 6f |lock_buf| \.X lo|
|00001d60| 63 6b 66 5f 72 61 77 20 | 6c 6f 63 6b 66 5f 62 75 |ckf_raw |lockf_bu|
|00001d70| 66 0a 58 64 6f 0a 58 20 | 69 66 20 5b 20 2d 78 20 |f.Xdo.X |if [ -x |
|00001d80| 24 78 20 5d 20 3b 20 74 | 68 65 6e 0a 58 20 20 20 |$x ] ; t|hen.X |
|00001d90| 65 63 68 6f 20 22 74 65 | 73 74 69 6e 67 20 24 78 |echo "te|sting $x|
|00001da0| 22 0a 58 20 20 20 65 63 | 68 6f 20 22 22 20 3e 3e |".X ec|ho "" >>|
|00001db0| 74 65 73 74 2e 6c 6f 67 | 0a 58 20 20 20 65 63 68 |test.log|.X ech|
|00001dc0| 6f 20 22 74 65 73 74 69 | 6e 67 20 24 78 22 20 3e |o "testi|ng $x" >|
|00001dd0| 3e 74 65 73 74 2e 6c 6f | 67 0a 58 20 20 20 24 78 |>test.lo|g.X $x|
|00001de0| 20 24 52 45 50 20 3e 3e | 74 65 73 74 2e 6c 6f 67 | $REP >>|test.log|
|00001df0| 0a 58 20 20 20 6d 76 20 | 74 65 73 74 2d 74 6d 70 |.X mv |test-tmp|
|00001e00| 20 74 65 73 74 2d 74 6d | 70 2e 24 78 0a 58 20 66 | test-tm|p.$x.X f|
|00001e10| 69 0a 58 64 6f 6e 65 0a | 45 4e 44 5f 4f 46 5f 46 |i.Xdone.|END_OF_F|
|00001e20| 49 4c 45 0a 69 66 20 74 | 65 73 74 20 31 31 37 36 |ILE.if t|est 1176|
|00001e30| 20 2d 6e 65 20 60 77 63 | 20 2d 63 20 3c 27 64 6f | -ne `wc| -c <'do|
|00001e40| 2d 74 65 73 74 2e 73 68 | 27 60 3b 20 74 68 65 6e |-test.sh|'`; then|
|00001e50| 0a 20 20 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |. ech|o shar: |
|00001e60| 5c 22 27 64 6f 2d 74 65 | 73 74 2e 73 68 27 5c 22 |\"'do-te|st.sh'\"|
|00001e70| 20 75 6e 70 61 63 6b 65 | 64 20 77 69 74 68 20 77 | unpacke|d with w|
|00001e80| 72 6f 6e 67 20 73 69 7a | 65 21 0a 66 69 0a 23 20 |rong siz|e!.fi.# |
|00001e90| 65 6e 64 20 6f 66 20 27 | 64 6f 2d 74 65 73 74 2e |end of '|do-test.|
|00001ea0| 73 68 27 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |sh'.fi.i|f test -|
|00001eb0| 66 20 27 6c 6f 63 6b 2d | 66 69 6c 65 2e 63 27 20 |f 'lock-|file.c' |
|00001ec0| 2d 61 20 22 24 7b 31 7d | 22 20 21 3d 20 22 2d 63 |-a "${1}|" != "-c|
|00001ed0| 22 20 3b 20 74 68 65 6e | 20 0a 20 20 65 63 68 6f |" ; then| . echo|
|00001ee0| 20 73 68 61 72 3a 20 57 | 69 6c 6c 20 6e 6f 74 20 | shar: W|ill not |
|00001ef0| 63 6c 6f 62 62 65 72 20 | 65 78 69 73 74 69 6e 67 |clobber |existing|
|00001f00| 20 66 69 6c 65 20 5c 22 | 27 6c 6f 63 6b 2d 66 69 | file \"|'lock-fi|
|00001f10| 6c 65 2e 63 27 5c 22 0a | 65 6c 73 65 0a 65 63 68 |le.c'\".|else.ech|
|00001f20| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|00001f30| 6e 67 20 5c 22 27 6c 6f | 63 6b 2d 66 69 6c 65 2e |ng \"'lo|ck-file.|
|00001f40| 63 27 5c 22 20 5c 28 31 | 31 36 34 36 20 63 68 61 |c'\" \(1|1646 cha|
|00001f50| 72 61 63 74 65 72 73 5c | 29 0a 73 65 64 20 22 73 |racters\|).sed "s|
|00001f60| 2f 5e 58 2f 2f 22 20 3e | 27 6c 6f 63 6b 2d 66 69 |/^X//" >|'lock-fi|
|00001f70| 6c 65 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |le.c' <<|'END_OF_|
|00001f80| 46 49 4c 45 27 0a 58 2f | 2a 20 40 28 23 29 6c 6f |FILE'.X/|* @(#)lo|
|00001f90| 63 6b 2d 66 69 6c 65 2e | 63 09 31 2e 32 20 39 31 |ck-file.|c.1.2 91|
|00001fa0| 2f 30 31 2f 32 34 20 2a | 2f 0a 58 2f 2a 20 63 6f |/01/24 *|/.X/* co|
|00001fb0| 70 79 72 69 67 68 74 20 | 31 39 39 31 2c 20 4d 69 |pyright |1991, Mi|
|00001fc0| 6b 65 20 48 6f 77 61 72 | 64 20 26 20 4d 69 6c 6c |ke Howar|d & Mill|
|00001fd0| 65 72 2f 48 6f 77 61 72 | 64 20 49 6e 76 65 73 74 |er/Howar|d Invest|
|00001fe0| 6d 65 6e 74 73 2c 20 49 | 6e 63 2e 0a 58 20 20 20 |ments, I|nc..X |
|00001ff0| 61 6c 6c 20 72 69 67 68 | 74 73 20 72 65 73 65 72 |all righ|ts reser|
|00002000| 76 65 64 20 2a 2f 0a 58 | 0a 58 2f 2a 0a 58 20 20 |ved */.X|.X/*.X |
|00002010| 74 68 65 73 65 20 61 72 | 65 20 63 6f 6e 76 65 6e |these ar|e conven|
|00002020| 69 65 6e 63 65 20 72 6f | 75 74 69 6e 65 73 20 77 |ience ro|utines w|
|00002030| 68 69 63 68 20 69 6d 70 | 6c 65 6d 65 6e 74 20 66 |hich imp|lement f|
|00002040| 69 6c 65 20 6c 6f 63 6b | 69 6e 67 20 69 6e 20 73 |ile lock|ing in s|
|00002050| 74 61 6e 64 61 72 64 0a | 58 20 20 77 61 79 73 20 |tandard.|X ways |
|00002060| 72 65 67 61 72 64 6c 65 | 73 73 20 6f 66 20 74 68 |regardle|ss of th|
|00002070| 65 20 6d 65 74 68 6f 64 | 20 73 65 6c 65 63 74 65 |e method| selecte|
|00002080| 64 20 77 69 74 68 69 6e | 20 74 68 65 20 70 61 72 |d within| the par|
|00002090| 74 69 63 75 6c 61 72 20 | 6f 70 65 72 61 74 69 6e |ticular |operatin|
|000020a0| 67 0a 58 20 20 73 79 73 | 74 65 6d 2e 0a 58 0a 58 |g.X sys|tem..X.X|
|000020b0| 20 20 4e 6f 74 65 3a 20 | 66 6f 72 20 72 65 63 6f | Note: |for reco|
|000020c0| 72 64 20 6c 6f 63 6b 73 | 2c 20 74 68 65 20 63 75 |rd locks|, the cu|
|000020d0| 72 72 65 6e 74 20 66 69 | 6c 65 20 70 6f 73 69 74 |rrent fi|le posit|
|000020e0| 69 6f 6e 20 69 73 20 63 | 68 61 6e 67 65 64 20 74 |ion is c|hanged t|
|000020f0| 6f 20 74 68 65 0a 58 20 | 20 62 65 67 69 6e 6e 69 |o the.X | beginni|
|00002100| 6e 67 20 6f 66 20 74 68 | 65 20 6c 6f 63 6b 65 64 |ng of th|e locked|
|00002110| 20 72 65 67 69 6f 6e 2e | 20 20 66 6f 72 20 77 68 | region.| for wh|
|00002120| 6f 6c 65 20 66 69 6c 65 | 20 6c 6f 63 6b 73 2c 20 |ole file| locks, |
|00002130| 74 68 65 20 63 75 72 72 | 65 6e 74 20 66 69 6c 65 |the curr|ent file|
|00002140| 0a 58 20 20 70 6f 73 69 | 74 69 6f 6e 20 69 73 20 |.X posi|tion is |
|00002150| 6e 6f 74 20 63 68 61 6e | 67 65 64 2e 0a 58 0a 58 |not chan|ged..X.X|
|00002160| 20 20 4e 6f 74 65 3a 20 | 74 68 65 73 65 20 72 6f | Note: |these ro|
|00002170| 75 74 69 6e 65 73 20 64 | 6f 20 6e 6f 74 20 77 6f |utines d|o not wo|
|00002180| 72 6b 20 6f 6e 20 62 75 | 66 66 65 72 65 64 20 66 |rk on bu|ffered f|
|00002190| 69 6c 65 73 2e 0a 58 0a | 58 20 20 49 6e 20 61 6c |iles..X.|X In al|
|000021a0| 6c 20 63 61 73 65 73 2c | 20 74 68 65 20 74 68 72 |l cases,| the thr|
|000021b0| 65 65 20 70 61 72 61 6d | 65 74 65 72 73 20 61 72 |ee param|eters ar|
|000021c0| 65 3a 0a 58 20 20 66 64 | 20 2d 20 69 6e 74 20 2d |e:.X fd| - int -|
|000021d0| 20 66 69 6c 65 20 64 65 | 73 63 72 69 70 74 6f 72 | file de|scriptor|
|000021e0| 0a 58 20 20 6f 66 66 73 | 65 74 20 2d 20 6f 66 66 |.X offs|et - off|
|000021f0| 5f 74 20 2d 20 6f 66 66 | 73 65 74 20 66 72 6f 6d |_t - off|set from|
|00002200| 20 74 68 65 20 62 65 67 | 69 6e 6e 69 6e 67 20 6f | the beg|inning o|
|00002210| 66 20 66 69 6c 65 20 74 | 6f 20 62 65 67 69 6e 20 |f file t|o begin |
|00002220| 6c 6f 63 6b 69 6e 67 0a | 58 20 20 20 20 20 20 20 |locking.|X |
|00002230| 20 20 20 20 20 20 20 20 | 20 20 20 20 72 65 67 69 | | regi|
|00002240| 6f 6e 2e 0a 58 20 20 6c | 65 6e 20 2d 20 6f 66 66 |on..X l|en - off|
|00002250| 5f 74 20 2d 20 6c 65 6e | 67 74 68 20 6f 66 20 6c |_t - len|gth of l|
|00002260| 6f 63 6b 65 64 20 72 65 | 67 69 6f 6e 2e 0a 58 0a |ocked re|gion..X.|
|00002270| 58 20 20 6f 66 66 73 65 | 74 20 3d 3d 20 30 2c 20 |X offse|t == 0, |
|00002280| 6c 65 6e 20 3d 3d 20 30 | 20 6c 6f 63 6b 73 20 65 |len == 0| locks e|
|00002290| 6e 74 69 72 65 20 66 69 | 6c 65 2e 0a 58 0a 58 20 |ntire fi|le..X.X |
|000022a0| 20 54 68 65 20 66 75 6e | 63 74 69 6f 6e 73 20 64 | The fun|ctions d|
|000022b0| 6f 20 77 68 61 74 20 74 | 68 65 79 20 61 70 70 65 |o what t|hey appe|
|000022c0| 61 72 20 74 6f 20 64 6f | 3a 0a 58 20 20 20 20 69 |ar to do|:.X i|
|000022d0| 6e 74 20 6c 6f 63 6b 5f | 72 65 63 6f 72 64 5f 73 |nt lock_|record_s|
|000022e0| 68 61 72 65 64 5f 77 61 | 69 74 28 66 64 2c 20 6f |hared_wa|it(fd, o|
|000022f0| 66 66 73 65 74 2c 20 6c | 65 6e 29 0a 58 20 20 20 |ffset, l|en).X |
|00002300| 20 69 6e 74 20 6c 6f 63 | 6b 5f 72 65 63 6f 72 64 | int loc|k_record|
|00002310| 5f 65 78 63 6c 75 73 69 | 76 65 5f 77 61 69 74 28 |_exclusi|ve_wait(|
|00002320| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 6c 65 6e 29 |fd, offs|et, len)|
|00002330| 0a 58 20 20 20 20 69 6e | 74 20 6c 6f 63 6b 5f 72 |.X in|t lock_r|
|00002340| 65 63 6f 72 64 5f 73 68 | 61 72 65 64 5f 6e 6f 77 |ecord_sh|ared_now|
|00002350| 61 69 74 28 66 64 2c 20 | 6f 66 66 73 65 74 2c 20 |ait(fd, |offset, |
|00002360| 6c 65 6e 29 0a 58 20 20 | 20 20 69 6e 74 20 6c 6f |len).X | int lo|
|00002370| 63 6b 5f 72 65 63 6f 72 | 64 5f 65 78 63 6c 75 73 |ck_recor|d_exclus|
|00002380| 69 76 65 5f 6e 6f 77 61 | 69 74 28 66 64 2c 20 6f |ive_nowa|it(fd, o|
|00002390| 66 66 73 65 74 2c 20 6c | 65 6e 29 0a 58 20 20 20 |ffset, l|en).X |
|000023a0| 20 69 6e 74 20 75 6e 6c | 6f 63 6b 5f 72 65 63 6f | int unl|ock_reco|
|000023b0| 72 64 28 66 64 2c 20 6f | 66 66 73 65 74 2c 20 6c |rd(fd, o|ffset, l|
|000023c0| 65 6e 29 0a 58 20 20 20 | 20 69 6e 74 20 6c 6f 63 |en).X | int loc|
|000023d0| 6b 5f 66 69 6c 65 5f 73 | 68 61 72 65 64 5f 77 61 |k_file_s|hared_wa|
|000023e0| 69 74 28 66 64 29 0a 58 | 20 20 20 20 69 6e 74 20 |it(fd).X| int |
|000023f0| 6c 6f 63 6b 5f 66 69 6c | 65 5f 65 78 63 6c 75 73 |lock_fil|e_exclus|
|00002400| 69 76 65 5f 77 61 69 74 | 28 66 64 29 0a 58 20 20 |ive_wait|(fd).X |
|00002410| 20 20 69 6e 74 20 6c 6f | 63 6b 5f 66 69 6c 65 5f | int lo|ck_file_|
|00002420| 73 68 61 72 65 64 5f 6e | 6f 77 61 69 74 28 66 64 |shared_n|owait(fd|
|00002430| 29 0a 58 20 20 20 20 69 | 6e 74 20 6c 6f 63 6b 5f |).X i|nt lock_|
|00002440| 66 69 6c 65 5f 65 78 63 | 6c 75 73 69 76 65 5f 6e |file_exc|lusive_n|
|00002450| 6f 77 61 69 74 28 66 64 | 29 0a 58 20 20 20 20 69 |owait(fd|).X i|
|00002460| 6e 74 20 75 6e 6c 6f 63 | 6b 5f 66 69 6c 65 28 66 |nt unloc|k_file(f|
|00002470| 64 29 0a 58 0a 58 20 20 | 41 6c 6c 20 66 75 6e 63 |d).X.X |All func|
|00002480| 74 69 6f 6e 73 20 72 65 | 74 75 72 6e 20 30 20 69 |tions re|turn 0 i|
|00002490| 66 20 73 75 63 63 65 73 | 73 66 75 6c 2c 20 2d 31 |f succes|sful, -1|
|000024a0| 20 69 66 20 74 68 65 20 | 72 65 71 75 65 73 74 65 | if the |requeste|
|000024b0| 64 20 6c 6f 63 6b 20 77 | 6f 75 6c 64 0a 58 20 20 |d lock w|ould.X |
|000024c0| 62 6c 6f 63 6b 2c 20 61 | 6e 64 2d 32 20 6f 6e 20 |block, a|nd-2 on |
|000024d0| 66 61 69 6c 75 72 65 2e | 20 20 54 68 65 79 20 73 |failure.| They s|
|000024e0| 65 74 20 20 74 68 65 20 | 65 78 74 65 72 6e 20 69 |et the |extern i|
|000024f0| 6e 74 20 6c 6f 63 6b 5f | 65 72 72 6e 6f 20 61 73 |nt lock_|errno as|
|00002500| 20 66 6f 6c 6c 6f 77 73 | 3a 0a 58 20 20 72 65 74 | follows|:.X ret|
|00002510| 75 72 6e 20 20 6c 6f 63 | 6b 5f 65 72 72 6e 6f 20 |urn loc|k_errno |
|00002520| 20 20 65 78 70 6c 61 6e | 61 74 69 6f 6e 0a 58 20 | explan|ation.X |
|00002530| 20 20 20 20 30 20 20 20 | 20 4c 43 4b 5f 4f 4b 20 | 0 | LCK_OK |
|00002540| 20 20 20 20 20 20 72 65 | 71 75 65 73 74 65 64 20 | re|quested |
|00002550| 6c 6f 63 6b 20 69 6d 70 | 6c 65 6d 65 6e 74 65 64 |lock imp|lemented|
|00002560| 0a 58 0a 58 20 20 20 20 | 2d 31 20 20 20 20 4c 43 |.X.X |-1 LC|
|00002570| 4b 5f 42 4c 4f 43 4b 20 | 20 20 20 74 68 65 20 72 |K_BLOCK | the r|
|00002580| 65 71 75 65 73 74 65 64 | 20 6c 6f 63 6b 20 77 61 |equested| lock wa|
|00002590| 73 20 62 6c 6f 63 6b 65 | 64 0a 58 0a 58 20 20 20 |s blocke|d.X.X |
|000025a0| 20 2d 32 20 20 20 20 4c | 43 4b 5f 42 41 44 46 44 | -2 L|CK_BADFD|
|000025b0| 20 20 20 20 66 64 20 69 | 73 20 6e 6f 74 20 61 20 | fd i|s not a |
|000025c0| 76 61 6c 69 64 20 66 69 | 6c 65 20 64 65 73 63 72 |valid fi|le descr|
|000025d0| 69 70 74 6f 72 0a 58 20 | 20 20 20 2d 32 20 20 20 |iptor.X | -2 |
|000025e0| 20 4c 43 4b 5f 44 45 41 | 44 4c 4f 43 4b 20 61 20 | LCK_DEA|DLOCK a |
|000025f0| 64 65 61 64 6c 6f 63 6b | 20 77 61 73 20 64 65 74 |deadlock| was det|
|00002600| 65 63 74 65 64 0a 58 20 | 20 20 20 2d 32 20 20 20 |ected.X | -2 |
|00002610| 20 4c 43 4b 5f 49 4e 54 | 52 20 20 20 20 20 61 6e | LCK_INT|R an|
|00002620| 20 69 6e 74 65 72 72 75 | 70 74 20 6f 63 63 75 72 | interru|pt occur|
|00002630| 72 65 64 20 77 68 69 63 | 68 20 61 62 6f 72 74 65 |red whic|h aborte|
|00002640| 64 20 74 68 65 20 73 79 | 73 74 65 6d 20 63 61 6c |d the sy|stem cal|
|00002650| 6c 0a 58 20 20 20 20 2d | 32 20 20 20 20 4c 43 4b |l.X -|2 LCK|
|00002660| 5f 4f 54 48 45 52 20 20 | 20 20 73 6f 6d 65 20 6f |_OTHER | some o|
|00002670| 74 68 65 72 20 65 72 72 | 6f 72 20 2d 20 65 72 72 |ther err|or - err|
|00002680| 6e 6f 20 6d 61 79 20 67 | 69 76 65 20 6d 6f 72 65 |no may g|ive more|
|00002690| 20 69 6e 66 6f 72 6d 61 | 74 69 6f 6e 0a 58 20 20 | informa|tion.X |
|000026a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000026b0| 20 20 20 20 20 69 66 20 | 79 6f 75 20 6b 6e 6f 77 | if |you know|
|000026c0| 20 68 6f 77 20 74 6f 20 | 69 6e 74 65 72 70 72 65 | how to |interpre|
|000026d0| 74 20 69 74 0a 58 0a 58 | 20 20 54 68 65 20 65 78 |t it.X.X| The ex|
|000026e0| 74 65 6e 74 20 6f 66 20 | 73 75 70 70 6f 72 74 20 |tent of |support |
|000026f0| 64 65 70 65 6e 64 73 20 | 6f 6e 20 74 68 65 20 73 |depends |on the s|
|00002700| 79 73 74 65 6d 20 63 61 | 6c 6c 20 75 73 65 64 20 |ystem ca|ll used |
|00002710| 74 6f 20 69 6d 70 6c 65 | 6d 65 6e 74 0a 58 20 20 |to imple|ment.X |
|00002720| 74 68 65 20 61 63 74 75 | 61 6c 20 6c 6f 63 6b 73 |the actu|al locks|
|00002730| 2e 20 20 54 68 65 20 69 | 6e 74 20 6c 6f 63 6b 5f |. The i|nt lock_|
|00002740| 73 75 70 70 6f 72 74 20 | 63 6f 6e 74 61 69 6e 73 |support |contains|
|00002750| 20 74 68 65 20 61 70 70 | 72 6f 70 72 69 61 74 65 | the app|ropriate|
|00002760| 20 62 69 74 77 69 73 65 | 0a 58 20 20 4f 52 20 6f | bitwise|.X OR o|
|00002770| 66 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |f the fo|llowing |
|00002780| 64 65 66 69 6e 65 73 3a | 0a 58 20 20 20 20 4c 43 |defines:|.X LC|
|00002790| 4b 5f 52 45 43 4f 52 44 | 20 20 20 20 20 20 31 0a |K_RECORD| 1.|
|000027a0| 58 20 20 20 20 4c 43 4b | 5f 53 48 41 52 45 44 20 |X LCK|_SHARED |
|000027b0| 20 20 20 20 20 32 0a 58 | 20 20 20 20 4c 43 4b 5f | 2.X| LCK_|
|000027c0| 45 58 43 4c 55 53 49 56 | 45 20 20 20 34 0a 58 20 |EXCLUSIV|E 4.X |
|000027d0| 20 20 20 4c 43 4b 5f 4e | 4f 5f 42 4c 4f 43 4b 20 | LCK_N|O_BLOCK |
|000027e0| 20 20 20 38 0a 58 0a 58 | 20 20 54 68 65 20 63 68 | 8.X.X| The ch|
|000027f0| 61 72 61 63 74 65 72 20 | 70 6f 69 6e 74 65 72 20 |aracter |pointer |
|00002800| 6c 6f 63 6b 69 6e 67 5f | 73 74 79 6c 65 20 63 6f |locking_|style co|
|00002810| 6e 74 61 69 6e 73 20 61 | 20 75 73 65 72 20 72 65 |ntains a| user re|
|00002820| 61 64 61 62 6c 65 20 6d | 65 73 73 61 67 65 0a 58 |adable m|essage.X|
|00002830| 20 20 73 70 65 63 69 66 | 79 69 6e 67 20 74 68 65 | specif|ying the|
|00002840| 20 75 6e 64 65 72 6c 79 | 69 6e 67 20 6c 6f 63 6b | underly|ing lock|
|00002850| 69 6e 67 20 6d 65 63 68 | 61 6e 69 73 6d 2e 0a 58 |ing mech|anism..X|
|00002860| 0a 58 20 20 4e 6f 74 20 | 61 6c 6c 20 66 75 6e 63 |.X Not |all func|
|00002870| 74 69 6f 6e 73 20 61 72 | 65 20 61 76 61 69 6c 61 |tions ar|e availa|
|00002880| 62 6c 65 20 75 6e 64 65 | 72 20 61 6c 6c 20 55 4e |ble unde|r all UN|
|00002890| 49 58 20 66 69 6c 65 20 | 6c 6f 63 6b 69 6e 67 20 |IX file |locking |
|000028a0| 73 63 68 65 6d 65 73 2e | 0a 58 20 20 46 6f 72 20 |schemes.|.X For |
|000028b0| 65 78 61 6d 70 6c 65 2c | 20 66 6c 6f 63 6b 20 73 |example,| flock s|
|000028c0| 74 79 6c 65 20 6c 6f 63 | 6b 69 6e 67 20 6f 6e 6c |tyle loc|king onl|
|000028d0| 79 20 6c 6f 63 6b 73 20 | 65 6e 74 69 72 65 20 66 |y locks |entire f|
|000028e0| 69 6c 65 73 2e 20 20 6c | 6f 63 6b 66 20 73 74 79 |iles. l|ockf sty|
|000028f0| 6c 65 0a 58 20 20 6c 6f | 63 6b 69 6e 67 20 64 6f |le.X lo|cking do|
|00002900| 65 73 20 6e 6f 74 20 73 | 75 70 70 6f 72 74 20 73 |es not s|upport s|
|00002910| 68 61 72 65 64 20 6c 6f | 63 6b 73 2e 20 20 49 66 |hared lo|cks. If|
|00002920| 20 61 20 72 65 71 75 65 | 73 74 65 64 20 66 65 61 | a reque|sted fea|
|00002930| 74 75 72 65 20 69 73 20 | 6e 6f 74 0a 58 20 20 73 |ture is |not.X s|
|00002940| 75 70 70 6f 72 74 65 64 | 2c 20 74 68 65 20 6c 65 |upported|, the le|
|00002950| 61 73 74 20 72 65 73 74 | 72 69 63 74 69 76 65 20 |ast rest|rictive |
|00002960| 66 65 61 74 75 72 65 20 | 77 68 69 63 68 20 64 6f |feature |which do|
|00002970| 65 73 20 67 69 76 65 73 | 20 61 74 20 6c 65 61 73 |es gives| at leas|
|00002980| 74 20 74 68 65 0a 58 20 | 20 72 65 71 75 65 73 74 |t the.X | request|
|00002990| 65 64 20 70 72 6f 74 65 | 63 74 69 6f 6e 20 69 73 |ed prote|ction is|
|000029a0| 20 75 73 65 64 2e 0a 58 | 0a 58 2a 2f 0a 58 2f 2a | used..X|.X*/.X/*|
|000029b0| 0a 58 61 20 63 6f 6e 76 | 65 6e 69 65 6e 74 20 74 |.Xa conv|enient t|
|000029c0| 65 6d 70 6c 61 74 65 0a | 58 69 6e 74 20 6c 6f 63 |emplate.|Xint loc|
|000029d0| 6b 5f 72 65 63 6f 72 64 | 5f 73 68 61 72 65 64 5f |k_record|_shared_|
|000029e0| 77 61 69 74 28 66 64 2c | 20 6f 66 66 73 65 74 2c |wait(fd,| offset,|
|000029f0| 20 6c 65 6e 29 0a 58 69 | 6e 74 20 66 64 3b 0a 58 | len).Xi|nt fd;.X|
|00002a00| 6f 66 66 5f 74 20 6f 66 | 66 73 65 74 3b 0a 58 6f |off_t of|fset;.Xo|
|00002a10| 66 66 5f 74 20 6c 65 6e | 3b 0a 58 7b 0a 58 7d 0a |ff_t len|;.X{.X}.|
|00002a20| 58 0a 58 69 6e 74 20 6c | 6f 63 6b 5f 72 65 63 6f |X.Xint l|ock_reco|
|00002a30| 72 64 5f 65 78 63 6c 75 | 73 69 76 65 5f 77 61 69 |rd_exclu|sive_wai|
|00002a40| 74 28 66 64 2c 20 6f 66 | 66 73 65 74 2c 20 6c 65 |t(fd, of|fset, le|
|00002a50| 6e 29 0a 58 69 6e 74 20 | 66 64 3b 0a 58 6f 66 66 |n).Xint |fd;.Xoff|
|00002a60| 5f 74 20 6f 66 66 73 65 | 74 3b 0a 58 6f 66 66 5f |_t offse|t;.Xoff_|
|00002a70| 74 20 6c 65 6e 3b 0a 58 | 7b 0a 58 7d 0a 58 0a 58 |t len;.X|{.X}.X.X|
|00002a80| 69 6e 74 20 6c 6f 63 6b | 5f 72 65 63 6f 72 64 5f |int lock|_record_|
|00002a90| 73 68 61 72 65 64 5f 6e | 6f 77 61 69 74 28 66 64 |shared_n|owait(fd|
|00002aa0| 2c 20 6f 66 66 73 65 74 | 2c 20 6c 65 6e 29 0a 58 |, offset|, len).X|
|00002ab0| 69 6e 74 20 66 64 3b 0a | 58 6f 66 66 5f 74 20 6f |int fd;.|Xoff_t o|
|00002ac0| 66 66 73 65 74 3b 0a 58 | 6f 66 66 5f 74 20 6c 65 |ffset;.X|off_t le|
|00002ad0| 6e 3b 0a 58 7b 0a 58 7d | 0a 58 0a 58 69 6e 74 20 |n;.X{.X}|.X.Xint |
|00002ae0| 6c 6f 63 6b 5f 72 65 63 | 6f 72 64 5f 65 78 63 6c |lock_rec|ord_excl|
|00002af0| 75 73 69 76 65 5f 6e 6f | 77 61 69 74 28 66 64 2c |usive_no|wait(fd,|
|00002b00| 20 6f 66 66 73 65 74 2c | 20 6c 65 6e 29 0a 58 69 | offset,| len).Xi|
|00002b10| 6e 74 20 66 64 3b 0a 58 | 6f 66 66 5f 74 20 6f 66 |nt fd;.X|off_t of|
|00002b20| 66 73 65 74 3b 0a 58 6f | 66 66 5f 74 20 6c 65 6e |fset;.Xo|ff_t len|
|00002b30| 3b 0a 58 7b 0a 58 7d 0a | 58 0a 58 69 6e 74 20 75 |;.X{.X}.|X.Xint u|
|00002b40| 6e 6c 6f 63 6b 5f 72 65 | 63 6f 72 64 28 66 64 2c |nlock_re|cord(fd,|
|00002b50| 20 6f 66 66 73 65 74 2c | 20 6c 65 6e 29 0a 58 69 | offset,| len).Xi|
|00002b60| 6e 74 20 66 64 3b 0a 58 | 6f 66 66 5f 74 20 6f 66 |nt fd;.X|off_t of|
|00002b70| 66 73 65 74 3b 0a 58 6f | 66 66 5f 74 20 6c 65 6e |fset;.Xo|ff_t len|
|00002b80| 3b 0a 58 7b 0a 58 7d 0a | 58 0a 58 69 6e 74 20 6c |;.X{.X}.|X.Xint l|
|00002b90| 6f 63 6b 5f 66 69 6c 65 | 5f 73 68 61 72 65 64 5f |ock_file|_shared_|
|00002ba0| 77 61 69 74 28 66 64 29 | 0a 58 69 6e 74 20 66 64 |wait(fd)|.Xint fd|
|00002bb0| 3b 0a 58 7b 0a 58 7d 0a | 58 0a 58 69 6e 74 20 6c |;.X{.X}.|X.Xint l|
|00002bc0| 6f 63 6b 5f 66 69 6c 65 | 5f 65 78 63 6c 75 73 69 |ock_file|_exclusi|
|00002bd0| 76 65 5f 77 61 69 74 28 | 66 64 29 0a 58 69 6e 74 |ve_wait(|fd).Xint|
|00002be0| 20 66 64 3b 0a 58 7b 0a | 58 7d 0a 58 0a 58 69 6e | fd;.X{.|X}.X.Xin|
|00002bf0| 74 20 6c 6f 63 6b 5f 66 | 69 6c 65 5f 73 68 61 72 |t lock_f|ile_shar|
|00002c00| 65 64 5f 6e 6f 77 61 69 | 74 28 66 64 29 0a 58 69 |ed_nowai|t(fd).Xi|
|00002c10| 6e 74 20 66 64 3b 0a 58 | 7b 0a 58 7d 0a 58 0a 58 |nt fd;.X|{.X}.X.X|
|00002c20| 69 6e 74 20 6c 6f 63 6b | 5f 66 69 6c 65 5f 65 78 |int lock|_file_ex|
|00002c30| 63 6c 75 73 69 76 65 5f | 6e 6f 77 61 69 74 28 66 |clusive_|nowait(f|
|00002c40| 64 29 0a 58 69 6e 74 20 | 66 64 3b 0a 58 7b 0a 58 |d).Xint |fd;.X{.X|
|00002c50| 7d 0a 58 0a 58 69 6e 74 | 20 75 6e 6c 6f 63 6b 5f |}.X.Xint| unlock_|
|00002c60| 66 69 6c 65 28 66 64 29 | 0a 58 69 6e 74 20 66 64 |file(fd)|.Xint fd|
|00002c70| 3b 0a 58 7b 0a 58 7d 0a | 58 2a 2f 0a 58 0a 58 0a |;.X{.X}.|X*/.X.X.|
|00002c80| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 74 |X#includ|e <sys/t|
|00002c90| 79 70 65 73 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |ypes.h>.|X#includ|
|00002ca0| 65 20 3c 65 72 72 6e 6f | 2e 68 3e 0a 58 65 78 74 |e <errno|.h>.Xext|
|00002cb0| 65 72 6e 20 69 6e 74 20 | 65 72 72 6e 6f 3b 0a 58 |ern int |errno;.X|
|00002cc0| 69 6e 74 20 6c 6f 63 6b | 5f 65 72 72 6e 6f 3b 0a |int lock|_errno;.|
|00002cd0| 58 23 69 6e 63 6c 75 64 | 65 20 22 6c 6f 63 6b 2d |X#includ|e "lock-|
|00002ce0| 66 69 6c 65 2e 68 22 0a | 58 23 69 6e 63 6c 75 64 |file.h".|X#includ|
|00002cf0| 65 20 22 70 61 74 63 68 | 6c 65 76 65 6c 2e 68 22 |e "patch|level.h"|
|00002d00| 0a 58 0a 58 73 74 61 74 | 69 63 20 70 61 74 63 68 |.X.Xstat|ic patch|
|00002d10| 6c 65 76 65 6c 20 3d 20 | 50 41 54 43 48 4c 45 56 |level = |PATCHLEV|
|00002d20| 45 4c 3b 0a 58 0a 58 2f | 2a 20 23 64 65 66 69 6e |EL;.X.X/|* #defin|
|00002d30| 65 20 46 43 4e 54 4c 5f | 53 54 59 4c 45 20 2f 2a |e FCNTL_|STYLE /*|
|00002d40| 20 2a 2f 0a 58 2f 2a 20 | 23 64 65 66 69 6e 65 20 | */.X/* |#define |
|00002d50| 46 4c 4f 43 4b 5f 53 54 | 59 4c 45 20 2f 2a 20 2a |FLOCK_ST|YLE /* *|
|00002d60| 2f 0a 58 2f 2a 20 23 64 | 65 66 69 6e 65 20 4c 4f |/.X/* #d|efine LO|
|00002d70| 43 4b 46 5f 53 54 59 4c | 45 20 2f 2a 20 2a 2f 0a |CKF_STYL|E /* */.|
|00002d80| 58 0a 58 2f 2a 20 64 65 | 66 61 75 6c 74 20 73 74 |X.X/* de|fault st|
|00002d90| 79 6c 65 20 69 73 20 46 | 43 4e 54 4c 5f 53 54 59 |yle is F|CNTL_STY|
|00002da0| 4c 45 20 2a 2f 0a 58 23 | 69 66 6e 64 65 66 20 46 |LE */.X#|ifndef F|
|00002db0| 43 4e 54 4c 5f 53 54 59 | 4c 45 0a 58 23 69 66 6e |CNTL_STY|LE.X#ifn|
|00002dc0| 64 65 66 20 46 4c 4f 43 | 4b 5f 53 54 59 4c 45 0a |def FLOC|K_STYLE.|
|00002dd0| 58 23 69 66 6e 64 65 66 | 20 4c 4f 43 4b 46 5f 53 |X#ifndef| LOCKF_S|
|00002de0| 54 59 4c 45 0a 58 23 20 | 64 65 66 69 6e 65 20 46 |TYLE.X# |define F|
|00002df0| 43 4e 54 4c 5f 53 54 59 | 4c 45 0a 58 23 65 6e 64 |CNTL_STY|LE.X#end|
|00002e00| 69 66 0a 58 23 65 6e 64 | 69 66 0a 58 23 65 6e 64 |if.X#end|if.X#end|
|00002e10| 69 66 0a 58 0a 58 23 69 | 66 64 65 66 20 46 43 4e |if.X.X#i|fdef FCN|
|00002e20| 54 4c 5f 53 54 59 4c 45 | 0a 58 23 69 6e 63 6c 75 |TL_STYLE|.X#inclu|
|00002e30| 64 65 20 3c 66 63 6e 74 | 6c 2e 68 3e 0a 58 0a 58 |de <fcnt|l.h>.X.X|
|00002e40| 69 6e 74 20 6c 6f 63 6b | 5f 73 75 70 70 6f 72 74 |int lock|_support|
|00002e50| 20 3d 20 4c 43 4b 5f 52 | 45 43 4f 52 44 20 7c 20 | = LCK_R|ECORD | |
|00002e60| 4c 43 4b 5f 53 48 41 52 | 45 44 20 7c 20 4c 43 4b |LCK_SHAR|ED | LCK|
|00002e70| 5f 45 58 43 4c 55 53 49 | 56 45 20 7c 20 4c 43 4b |_EXCLUSI|VE | LCK|
|00002e80| 5f 4e 4f 5f 42 4c 4f 43 | 4b 3b 0a 58 73 74 61 74 |_NO_BLOC|K;.Xstat|
|00002e90| 69 63 20 73 74 72 75 63 | 74 20 66 6c 6f 63 6b 20 |ic struc|t flock |
|00002ea0| 66 6c 6f 63 6b 3b 0a 58 | 73 74 61 74 69 63 20 69 |flock;.X|static i|
|00002eb0| 6e 74 20 64 6f 5f 66 63 | 6e 74 6c 5f 6c 6f 63 6b |nt do_fc|ntl_lock|
|00002ec0| 28 29 3b 0a 58 0a 58 63 | 68 61 72 20 2a 6c 6f 63 |();.X.Xc|har *loc|
|00002ed0| 6b 69 6e 67 5f 73 74 79 | 6c 65 20 3d 20 22 66 63 |king_sty|le = "fc|
|00002ee0| 6e 74 6c 20 73 74 79 6c | 65 20 66 69 6c 65 20 6c |ntl styl|e file l|
|00002ef0| 6f 63 6b 69 6e 67 22 3b | 0a 58 0a 58 69 6e 74 20 |ocking";|.X.Xint |
|00002f00| 6c 6f 63 6b 5f 72 65 63 | 6f 72 64 5f 73 68 61 72 |lock_rec|ord_shar|
|00002f10| 65 64 5f 77 61 69 74 28 | 66 64 2c 20 6f 66 66 73 |ed_wait(|fd, offs|
|00002f20| 65 74 2c 20 6c 65 6e 29 | 0a 58 69 6e 74 20 66 64 |et, len)|.Xint fd|
|00002f30| 3b 0a 58 6f 66 66 5f 74 | 20 6f 66 66 73 65 74 3b |;.Xoff_t| offset;|
|00002f40| 0a 58 6f 66 66 5f 74 20 | 6c 65 6e 3b 0a 58 7b 0a |.Xoff_t |len;.X{.|
|00002f50| 58 20 20 69 66 20 28 6c | 65 6e 20 3c 20 30 29 20 |X if (l|en < 0) |
|00002f60| 7b 0a 58 20 20 20 20 6f | 66 66 73 65 74 20 2b 3d |{.X o|ffset +=|
|00002f70| 20 6c 65 6e 3b 0a 58 20 | 20 20 20 6c 65 6e 20 3d | len;.X | len =|
|00002f80| 20 2d 6c 65 6e 3b 0a 58 | 20 20 7d 0a 58 20 20 69 | -len;.X| }.X i|
|00002f90| 66 20 28 6c 73 65 65 6b | 28 66 64 2c 20 6f 66 66 |f (lseek|(fd, off|
|00002fa0| 73 65 74 2c 20 30 29 20 | 3c 20 30 29 20 7b 0a 58 |set, 0) |< 0) {.X|
|00002fb0| 20 20 20 20 6c 6f 63 6b | 5f 65 72 72 6e 6f 20 3d | lock|_errno =|
|00002fc0| 20 65 72 72 6e 6f 20 3d | 3d 20 45 42 41 44 46 20 | errno =|= EBADF |
|00002fd0| 3f 20 4c 43 4b 5f 42 41 | 44 46 44 20 3a 20 4c 43 |? LCK_BA|DFD : LC|
|00002fe0| 4b 5f 4f 54 48 45 52 3b | 0a 58 20 20 20 20 72 65 |K_OTHER;|.X re|
|00002ff0| 74 75 72 6e 20 2d 32 3b | 0a 58 20 20 7d 0a 58 20 |turn -2;|.X }.X |
|00003000| 20 72 65 74 75 72 6e 20 | 64 6f 5f 66 63 6e 74 6c | return |do_fcntl|
|00003010| 5f 6c 6f 63 6b 28 66 64 | 2c 20 6f 66 66 73 65 74 |_lock(fd|, offset|
|00003020| 2c 20 6c 65 6e 2c 20 46 | 5f 52 44 4c 43 4b 2c 20 |, len, F|_RDLCK, |
|00003030| 46 5f 53 45 54 4c 4b 57 | 29 3b 0a 58 7d 0a 58 0a |F_SETLKW|);.X}.X.|
|00003040| 58 69 6e 74 20 6c 6f 63 | 6b 5f 72 65 63 6f 72 64 |Xint loc|k_record|
|00003050| 5f 65 78 63 6c 75 73 69 | 76 65 5f 77 61 69 74 28 |_exclusi|ve_wait(|
|00003060| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 6c 65 6e 29 |fd, offs|et, len)|
|00003070| 0a 58 69 6e 74 20 66 64 | 3b 0a 58 6f 66 66 5f 74 |.Xint fd|;.Xoff_t|
|00003080| 20 6f 66 66 73 65 74 3b | 0a 58 6f 66 66 5f 74 20 | offset;|.Xoff_t |
|00003090| 6c 65 6e 3b 0a 58 7b 0a | 58 20 20 69 66 20 28 6c |len;.X{.|X if (l|
|000030a0| 65 6e 20 3c 20 30 29 20 | 7b 0a 58 20 20 20 20 6f |en < 0) |{.X o|
|000030b0| 66 66 73 65 74 20 2b 3d | 20 6c 65 6e 3b 0a 58 20 |ffset +=| len;.X |
|000030c0| 20 20 20 6c 65 6e 20 3d | 20 2d 6c 65 6e 3b 0a 58 | len =| -len;.X|
|000030d0| 20 20 7d 0a 58 20 20 69 | 66 20 28 6c 73 65 65 6b | }.X i|f (lseek|
|000030e0| 28 66 64 2c 20 6f 66 66 | 73 65 74 2c 20 30 29 20 |(fd, off|set, 0) |
|000030f0| 3c 20 30 29 20 7b 0a 58 | 20 20 20 20 6c 6f 63 6b |< 0) {.X| lock|
|00003100| 5f 65 72 72 6e 6f 20 3d | 20 65 72 72 6e 6f 20 3d |_errno =| errno =|
|00003110| 3d 20 45 42 41 44 46 20 | 3f 20 4c 43 4b 5f 42 41 |= EBADF |? LCK_BA|
|00003120| 44 46 44 20 3a 20 4c 43 | 4b 5f 4f 54 48 45 52 3b |DFD : LC|K_OTHER;|
|00003130| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 2d 32 3b |.X re|turn -2;|
|00003140| 0a 58 20 20 7d 0a 58 20 | 20 72 65 74 75 72 6e 20 |.X }.X | return |
|00003150| 64 6f 5f 66 63 6e 74 6c | 5f 6c 6f 63 6b 28 66 64 |do_fcntl|_lock(fd|
|00003160| 2c 20 6f 66 66 73 65 74 | 2c 20 6c 65 6e 2c 20 46 |, offset|, len, F|
|00003170| 5f 57 52 4c 43 4b 2c 20 | 46 5f 53 45 54 4c 4b 57 |_WRLCK, |F_SETLKW|
|00003180| 29 3b 0a 58 7d 0a 58 0a | 58 69 6e 74 20 6c 6f 63 |);.X}.X.|Xint loc|
|00003190| 6b 5f 72 65 63 6f 72 64 | 5f 73 68 61 72 65 64 5f |k_record|_shared_|
|000031a0| 6e 6f 77 61 69 74 28 66 | 64 2c 20 6f 66 66 73 65 |nowait(f|d, offse|
|000031b0| 74 2c 20 6c 65 6e 29 0a | 58 69 6e 74 20 66 64 3b |t, len).|Xint fd;|
|000031c0| 0a 58 6f 66 66 5f 74 20 | 6f 66 66 73 65 74 3b 0a |.Xoff_t |offset;.|
|000031d0| 58 6f 66 66 5f 74 20 6c | 65 6e 3b 0a 58 7b 0a 58 |Xoff_t l|en;.X{.X|
|000031e0| 20 20 69 66 20 28 6c 65 | 6e 20 3c 20 30 29 20 7b | if (le|n < 0) {|
|000031f0| 0a 58 20 20 20 20 6f 66 | 66 73 65 74 20 2b 3d 20 |.X of|fset += |
|00003200| 6c 65 6e 3b 0a 58 20 20 | 20 20 6c 65 6e 20 3d 20 |len;.X | len = |
|00003210| 2d 6c 65 6e 3b 0a 58 20 | 20 7d 0a 58 20 20 69 66 |-len;.X | }.X if|
|00003220| 20 28 6c 73 65 65 6b 28 | 66 64 2c 20 6f 66 66 73 | (lseek(|fd, offs|
|00003230| 65 74 2c 20 30 29 20 3c | 20 30 29 20 7b 0a 58 20 |et, 0) <| 0) {.X |
|00003240| 20 20 20 6c 6f 63 6b 5f | 65 72 72 6e 6f 20 3d 20 | lock_|errno = |
|00003250| 65 72 72 6e 6f 20 3d 3d | 20 45 42 41 44 46 20 3f |errno ==| EBADF ?|
|00003260| 20 4c 43 4b 5f 42 41 44 | 46 44 20 3a 20 4c 43 4b | LCK_BAD|FD : LCK|
|00003270| 5f 4f 54 48 45 52 3b 0a | 58 20 20 20 20 72 65 74 |_OTHER;.|X ret|
|00003280| 75 72 6e 20 2d 32 3b 0a | 58 20 20 7d 0a 58 20 20 |urn -2;.|X }.X |
|00003290| 72 65 74 75 72 6e 20 64 | 6f 5f 66 63 6e 74 6c 5f |return d|o_fcntl_|
|000032a0| 6c 6f 63 6b 28 66 64 2c | 20 6f 66 66 73 65 74 2c |lock(fd,| offset,|
|000032b0| 20 6c 65 6e 2c 20 46 5f | 52 44 4c 43 4b 2c 20 46 | len, F_|RDLCK, F|
|000032c0| 5f 53 45 54 4c 4b 29 3b | 0a 58 7d 0a 58 0a 58 69 |_SETLK);|.X}.X.Xi|
|000032d0| 6e 74 20 6c 6f 63 6b 5f | 72 65 63 6f 72 64 5f 65 |nt lock_|record_e|
|000032e0| 78 63 6c 75 73 69 76 65 | 5f 6e 6f 77 61 69 74 28 |xclusive|_nowait(|
|000032f0| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 6c 65 6e 29 |fd, offs|et, len)|
|00003300| 0a 58 69 6e 74 20 66 64 | 3b 0a 58 6f 66 66 5f 74 |.Xint fd|;.Xoff_t|
|00003310| 20 6f 66 66 73 65 74 3b | 0a 58 6f 66 66 5f 74 20 | offset;|.Xoff_t |
|00003320| 6c 65 6e 3b 0a 58 7b 0a | 58 20 20 69 66 20 28 6c |len;.X{.|X if (l|
|00003330| 65 6e 20 3c 20 30 29 20 | 7b 0a 58 20 20 20 20 6f |en < 0) |{.X o|
|00003340| 66 66 73 65 74 20 2b 3d | 20 6c 65 6e 3b 0a 58 20 |ffset +=| len;.X |
|00003350| 20 20 20 6c 65 6e 20 3d | 20 2d 6c 65 6e 3b 0a 58 | len =| -len;.X|
|00003360| 20 20 7d 0a 58 20 20 69 | 66 20 28 6c 73 65 65 6b | }.X i|f (lseek|
|00003370| 28 66 64 2c 20 6f 66 66 | 73 65 74 2c 20 30 29 20 |(fd, off|set, 0) |
|00003380| 3c 20 30 29 20 7b 0a 58 | 20 20 20 20 6c 6f 63 6b |< 0) {.X| lock|
|00003390| 5f 65 72 72 6e 6f 20 3d | 20 65 72 72 6e 6f 20 3d |_errno =| errno =|
|000033a0| 3d 20 45 42 41 44 46 20 | 3f 20 4c 43 4b 5f 42 41 |= EBADF |? LCK_BA|
|000033b0| 44 46 44 20 3a 20 4c 43 | 4b 5f 4f 54 48 45 52 3b |DFD : LC|K_OTHER;|
|000033c0| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 2d 32 3b |.X re|turn -2;|
|000033d0| 0a 58 20 20 7d 0a 58 20 | 20 72 65 74 75 72 6e 20 |.X }.X | return |
|000033e0| 64 6f 5f 66 63 6e 74 6c | 5f 6c 6f 63 6b 28 66 64 |do_fcntl|_lock(fd|
|000033f0| 2c 20 6f 66 66 73 65 74 | 2c 20 6c 65 6e 2c 20 46 |, offset|, len, F|
|00003400| 5f 57 52 4c 43 4b 2c 20 | 46 5f 53 45 54 4c 4b 29 |_WRLCK, |F_SETLK)|
|00003410| 3b 0a 58 7d 0a 58 0a 58 | 69 6e 74 20 75 6e 6c 6f |;.X}.X.X|int unlo|
|00003420| 63 6b 5f 72 65 63 6f 72 | 64 28 66 64 2c 20 6f 66 |ck_recor|d(fd, of|
|00003430| 66 73 65 74 2c 20 6c 65 | 6e 29 0a 58 69 6e 74 20 |fset, le|n).Xint |
|00003440| 66 64 3b 0a 58 6f 66 66 | 5f 74 20 6f 66 66 73 65 |fd;.Xoff|_t offse|
|00003450| 74 3b 0a 58 6f 66 66 5f | 74 20 6c 65 6e 3b 0a 58 |t;.Xoff_|t len;.X|
|00003460| 7b 0a 58 20 20 69 66 20 | 28 6c 65 6e 20 3c 20 30 |{.X if |(len < 0|
|00003470| 29 20 7b 0a 58 20 20 20 | 20 6f 66 66 73 65 74 20 |) {.X | offset |
|00003480| 2b 3d 20 6c 65 6e 3b 0a | 58 20 20 20 20 6c 65 6e |+= len;.|X len|
|00003490| 20 3d 20 2d 6c 65 6e 3b | 0a 58 20 20 7d 0a 58 20 | = -len;|.X }.X |
|000034a0| 20 69 66 20 28 6c 73 65 | 65 6b 28 66 64 2c 20 6f | if (lse|ek(fd, o|
|000034b0| 66 66 73 65 74 2c 20 30 | 29 20 3c 20 30 29 20 7b |ffset, 0|) < 0) {|
|000034c0| 0a 58 20 20 20 20 6c 6f | 63 6b 5f 65 72 72 6e 6f |.X lo|ck_errno|
|000034d0| 20 3d 20 65 72 72 6e 6f | 20 3d 3d 20 45 42 41 44 | = errno| == EBAD|
|000034e0| 46 20 3f 20 4c 43 4b 5f | 42 41 44 46 44 20 3a 20 |F ? LCK_|BADFD : |
|000034f0| 4c 43 4b 5f 4f 54 48 45 | 52 3b 0a 58 20 20 20 20 |LCK_OTHE|R;.X |
|00003500| 72 65 74 75 72 6e 20 2d | 32 3b 0a 58 20 20 7d 0a |return -|2;.X }.|
|00003510| 58 20 20 72 65 74 75 72 | 6e 20 64 6f 5f 66 63 6e |X retur|n do_fcn|
|00003520| 74 6c 5f 6c 6f 63 6b 28 | 66 64 2c 20 6f 66 66 73 |tl_lock(|fd, offs|
|00003530| 65 74 2c 20 6c 65 6e 2c | 20 46 5f 55 4e 4c 43 4b |et, len,| F_UNLCK|
|00003540| 2c 20 46 5f 53 45 54 4c | 4b 29 3b 0a 58 7d 0a 58 |, F_SETL|K);.X}.X|
|00003550| 0a 58 69 6e 74 20 6c 6f | 63 6b 5f 66 69 6c 65 5f |.Xint lo|ck_file_|
|00003560| 73 68 61 72 65 64 5f 77 | 61 69 74 28 66 64 29 0a |shared_w|ait(fd).|
|00003570| 58 69 6e 74 20 66 64 3b | 0a 58 7b 0a 58 20 20 72 |Xint fd;|.X{.X r|
|00003580| 65 74 75 72 6e 20 64 6f | 5f 66 63 6e 74 6c 5f 6c |eturn do|_fcntl_l|
|00003590| 6f 63 6b 28 66 64 2c 20 | 30 4c 2c 20 30 4c 2c 20 |ock(fd, |0L, 0L, |
|000035a0| 46 5f 52 44 4c 43 4b 2c | 20 46 5f 53 45 54 4c 4b |F_RDLCK,| F_SETLK|
|000035b0| 57 29 3b 0a 58 7d 0a 58 | 0a 58 69 6e 74 20 6c 6f |W);.X}.X|.Xint lo|
|000035c0| 63 6b 5f 66 69 6c 65 5f | 65 78 63 6c 75 73 69 76 |ck_file_|exclusiv|
|000035d0| 65 5f 77 61 69 74 28 66 | 64 29 0a 58 69 6e 74 20 |e_wait(f|d).Xint |
|000035e0| 66 64 3b 0a 58 7b 0a 58 | 20 20 72 65 74 75 72 6e |fd;.X{.X| return|
|000035f0| 20 64 6f 5f 66 63 6e 74 | 6c 5f 6c 6f 63 6b 28 66 | do_fcnt|l_lock(f|
|00003600| 64 2c 20 30 4c 2c 20 30 | 4c 2c 20 46 5f 57 52 4c |d, 0L, 0|L, F_WRL|
|00003610| 43 4b 2c 20 46 5f 53 45 | 54 4c 4b 57 29 3b 0a 58 |CK, F_SE|TLKW);.X|
|00003620| 7d 0a 58 0a 58 69 6e 74 | 20 6c 6f 63 6b 5f 66 69 |}.X.Xint| lock_fi|
|00003630| 6c 65 5f 73 68 61 72 65 | 64 5f 6e 6f 77 61 69 74 |le_share|d_nowait|
|00003640| 28 66 64 29 0a 58 69 6e | 74 20 66 64 3b 0a 58 7b |(fd).Xin|t fd;.X{|
|00003650| 0a 58 20 20 72 65 74 75 | 72 6e 20 64 6f 5f 66 63 |.X retu|rn do_fc|
|00003660| 6e 74 6c 5f 6c 6f 63 6b | 28 66 64 2c 20 30 4c 2c |ntl_lock|(fd, 0L,|
|00003670| 20 30 4c 2c 20 46 5f 52 | 44 4c 43 4b 2c 20 46 5f | 0L, F_R|DLCK, F_|
|00003680| 53 45 54 4c 4b 29 3b 0a | 58 7d 0a 58 0a 58 69 6e |SETLK);.|X}.X.Xin|
|00003690| 74 20 6c 6f 63 6b 5f 66 | 69 6c 65 5f 65 78 63 6c |t lock_f|ile_excl|
|000036a0| 75 73 69 76 65 5f 6e 6f | 77 61 69 74 28 66 64 29 |usive_no|wait(fd)|
|000036b0| 0a 58 69 6e 74 20 66 64 | 3b 0a 58 7b 0a 58 20 20 |.Xint fd|;.X{.X |
|000036c0| 72 65 74 75 72 6e 20 64 | 6f 5f 66 63 6e 74 6c 5f |return d|o_fcntl_|
|000036d0| 6c 6f 63 6b 28 66 64 2c | 20 30 4c 2c 20 30 4c 2c |lock(fd,| 0L, 0L,|
|000036e0| 20 46 5f 57 52 4c 43 4b | 2c 20 46 5f 53 45 54 4c | F_WRLCK|, F_SETL|
|000036f0| 4b 29 3b 0a 58 7d 0a 58 | 0a 58 69 6e 74 20 75 6e |K);.X}.X|.Xint un|
|00003700| 6c 6f 63 6b 5f 66 69 6c | 65 28 66 64 29 0a 58 69 |lock_fil|e(fd).Xi|
|00003710| 6e 74 20 66 64 3b 0a 58 | 7b 0a 58 20 20 72 65 74 |nt fd;.X|{.X ret|
|00003720| 75 72 6e 20 64 6f 5f 66 | 63 6e 74 6c 5f 6c 6f 63 |urn do_f|cntl_loc|
|00003730| 6b 28 66 64 2c 20 30 4c | 2c 20 30 4c 2c 20 46 5f |k(fd, 0L|, 0L, F_|
|00003740| 55 4e 4c 43 4b 2c 20 46 | 5f 53 45 54 4c 4b 29 3b |UNLCK, F|_SETLK);|
|00003750| 0a 58 7d 0a 58 0a 58 73 | 74 61 74 69 63 20 69 6e |.X}.X.Xs|tatic in|
|00003760| 74 20 64 6f 5f 66 63 6e | 74 6c 5f 6c 6f 63 6b 28 |t do_fcn|tl_lock(|
|00003770| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 6c 65 6e 2c |fd, offs|et, len,|
|00003780| 20 6c 6f 63 6b 5f 63 6d | 64 2c 20 73 65 74 5f 63 | lock_cm|d, set_c|
|00003790| 6d 64 29 0a 58 69 6e 74 | 20 66 64 3b 0a 58 6f 66 |md).Xint| fd;.Xof|
|000037a0| 66 5f 74 20 6f 66 66 73 | 65 74 3b 0a 58 6f 66 66 |f_t offs|et;.Xoff|
|000037b0| 5f 74 20 6c 65 6e 3b 0a | 58 69 6e 74 20 6c 6f 63 |_t len;.|Xint loc|
|000037c0| 6b 5f 63 6d 64 3b 0a 58 | 69 6e 74 20 73 65 74 5f |k_cmd;.X|int set_|
|000037d0| 63 6d 64 3b 0a 58 7b 0a | 58 20 20 66 6c 6f 63 6b |cmd;.X{.|X flock|
|000037e0| 2e 6c 5f 74 79 70 65 20 | 3d 20 6c 6f 63 6b 5f 63 |.l_type |= lock_c|
|000037f0| 6d 64 3b 0a 58 20 20 66 | 6c 6f 63 6b 2e 6c 5f 77 |md;.X f|lock.l_w|
|00003800| 68 65 6e 63 65 20 3d 20 | 30 3b 0a 58 20 20 66 6c |hence = |0;.X fl|
|00003810| 6f 63 6b 2e 6c 5f 73 74 | 61 72 74 20 3d 20 6f 66 |ock.l_st|art = of|
|00003820| 66 73 65 74 3b 0a 58 20 | 20 66 6c 6f 63 6b 2e 6c |fset;.X | flock.l|
|00003830| 5f 6c 65 6e 20 3d 20 6c | 65 6e 3b 0a 58 20 20 69 |_len = l|en;.X i|
|00003840| 66 20 28 66 63 6e 74 6c | 28 66 64 2c 20 73 65 74 |f (fcntl|(fd, set|
|00003850| 5f 63 6d 64 2c 20 26 66 | 6c 6f 63 6b 29 29 20 7b |_cmd, &f|lock)) {|
|00003860| 0a 58 20 20 20 20 73 77 | 69 74 63 68 20 28 65 72 |.X sw|itch (er|
|00003870| 72 6e 6f 29 20 7b 0a 58 | 20 20 20 20 63 61 73 65 |rno) {.X| case|
|00003880| 20 45 41 43 43 45 53 3a | 0a 58 20 20 20 20 63 61 | EACCES:|.X ca|
|00003890| 73 65 20 45 41 47 41 49 | 4e 3a 0a 58 20 20 20 20 |se EAGAI|N:.X |
|000038a0| 20 20 6c 6f 63 6b 5f 65 | 72 72 6e 6f 20 3d 20 4c | lock_e|rrno = L|
|000038b0| 43 4b 5f 42 4c 4f 43 4b | 3b 0a 58 20 20 20 20 20 |CK_BLOCK|;.X |
|000038c0| 20 72 65 74 75 72 6e 20 | 2d 31 3b 0a 58 20 20 20 | return |-1;.X |
|000038d0| 20 63 61 73 65 20 45 42 | 41 44 46 3a 0a 58 20 20 | case EB|ADF:.X |
|000038e0| 20 20 20 20 6c 6f 63 6b | 5f 65 72 72 6e 6f 20 3d | lock|_errno =|
|000038f0| 20 4c 43 4b 5f 42 41 44 | 46 44 3b 0a 58 20 20 20 | LCK_BAD|FD;.X |
|00003900| 20 20 20 72 65 74 75 72 | 6e 20 2d 32 3b 0a 58 20 | retur|n -2;.X |
|00003910| 20 20 20 63 61 73 65 20 | 45 44 45 41 44 4c 4b 3a | case |EDEADLK:|
|00003920| 0a 58 20 20 20 20 20 20 | 6c 6f 63 6b 5f 65 72 72 |.X |lock_err|
|00003930| 6e 6f 20 3d 20 4c 43 4b | 5f 44 45 41 44 4c 4f 43 |no = LCK|_DEADLOC|
|00003940| 4b 3b 0a 58 20 20 20 20 | 20 20 72 65 74 75 72 6e |K;.X | return|
|00003950| 20 2d 32 3b 0a 58 20 20 | 20 20 63 61 73 65 20 45 | -2;.X | case E|
|00003960| 49 4e 54 52 3a 0a 58 20 | 20 20 20 20 20 6c 6f 63 |INTR:.X | loc|
|00003970| 6b 5f 65 72 72 6e 6f 20 | 3d 20 4c 43 4b 5f 49 4e |k_errno |= LCK_IN|
|00003980| 54 52 3b 0a 58 20 20 20 | 20 20 20 72 65 74 75 72 |TR;.X | retur|
|00003990| 6e 20 2d 32 3b 0a 58 20 | 20 20 20 64 65 66 61 75 |n -2;.X | defau|
|000039a0| 6c 74 3a 0a 58 20 20 20 | 20 20 20 6c 6f 63 6b 5f |lt:.X | lock_|
|000039b0| 65 72 72 6e 6f 20 3d 20 | 4c 43 4b 5f 4f 54 48 45 |errno = |LCK_OTHE|
|000039c0| 52 3b 0a 58 20 20 20 20 | 20 20 72 65 74 75 72 6e |R;.X | return|
|000039d0| 20 2d 32 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 7d | -2;.X | }.X }|
|000039e0| 0a 58 0a 58 20 20 6c 6f | 63 6b 5f 65 72 72 6e 6f |.X.X lo|ck_errno|
|000039f0| 20 3d 20 4c 43 4b 5f 4f | 4b 3b 0a 58 20 20 72 65 | = LCK_O|K;.X re|
|00003a00| 74 75 72 6e 20 30 3b 0a | 58 7d 0a 58 23 65 6e 64 |turn 0;.|X}.X#end|
|00003a10| 69 66 0a 58 0a 58 23 69 | 66 64 65 66 20 46 4c 4f |if.X.X#i|fdef FLO|
|00003a20| 43 4b 5f 53 54 59 4c 45 | 0a 58 2f 2a 20 57 41 52 |CK_STYLE|.X/* WAR|
|00003a30| 4e 49 4e 47 3a 20 74 68 | 69 73 20 64 6f 65 73 20 |NING: th|is does |
|00003a40| 6e 6f 74 20 63 6f 72 72 | 65 63 74 6c 79 20 68 61 |not corr|ectly ha|
|00003a50| 6e 64 6c 65 20 74 68 65 | 20 63 61 73 65 20 77 68 |ndle the| case wh|
|00003a60| 65 72 65 20 6d 6f 72 65 | 20 74 68 61 6e 0a 58 20 |ere more| than.X |
|00003a70| 20 20 6f 6e 65 20 6c 6f | 63 6b 20 69 73 20 61 70 | one lo|ck is ap|
|00003a80| 70 6c 69 65 64 20 74 6f | 20 61 20 66 69 6c 65 20 |plied to| a file |
|00003a90| 28 6f 72 20 73 65 67 6d | 65 6e 74 73 20 6f 66 20 |(or segm|ents of |
|00003aa0| 61 20 66 69 6c 65 29 20 | 62 79 20 61 20 73 69 6e |a file) |by a sin|
|00003ab0| 67 6c 65 0a 58 20 20 20 | 70 72 6f 63 65 73 73 20 |gle.X |process |
|00003ac0| 61 6e 64 20 74 68 65 6e | 20 72 65 6c 65 61 73 65 |and then| release|
|00003ad0| 64 20 60 61 20 6c 69 74 | 74 6c 65 20 61 74 20 61 |d `a lit|tle at a|
|00003ae0| 20 74 69 6d 65 27 2e 20 | 20 54 68 65 20 66 69 78 | time'. | The fix|
|00003af0| 20 69 73 20 73 74 72 61 | 69 67 68 74 0a 58 20 20 | is stra|ight.X |
|00003b00| 20 66 6f 72 77 61 72 64 | 3a 20 62 75 69 6c 64 20 | forward|: build |
|00003b10| 61 20 6c 69 73 74 20 6f | 66 20 6c 6f 63 6b 20 63 |a list o|f lock c|
|00003b20| 6f 75 6e 74 20 72 65 63 | 6f 72 64 73 20 69 6e 64 |ount rec|ords ind|
|00003b30| 65 78 65 64 20 62 79 20 | 66 64 27 73 20 61 6e 64 |exed by |fd's and|
|00003b40| 0a 58 20 20 20 64 65 63 | 72 65 6d 65 6e 74 20 77 |.X dec|rement w|
|00003b50| 68 65 6e 20 61 6e 20 75 | 6e 6c 6f 63 6b 20 69 73 |hen an u|nlock is|
|00003b60| 20 72 65 71 75 65 73 74 | 65 64 2e 20 20 42 75 74 | request|ed. But|
|00003b70| 20 74 68 69 73 20 64 6f | 65 73 6e 27 74 20 77 6f | this do|esn't wo|
|00003b80| 72 6b 20 65 69 74 68 65 | 72 0a 58 20 20 20 69 6e |rk eithe|r.X in|
|00003b90| 20 74 68 65 20 63 61 73 | 65 20 74 68 61 74 20 61 | the cas|e that a|
|00003ba0| 20 66 69 6c 65 20 69 73 | 20 64 75 70 27 65 64 20 | file is| dup'ed |
|00003bb0| 6f 72 20 72 65 6f 70 65 | 6e 6e 65 64 2e 20 20 53 |or reope|nned. S|
|00003bc0| 6f 20 49 20 68 61 76 65 | 20 6e 6f 74 20 62 6f 74 |o I have| not bot|
|00003bd0| 68 65 72 65 64 0a 58 20 | 20 20 74 6f 20 27 64 6f |hered.X | to 'do|
|00003be0| 20 69 74 20 72 69 67 68 | 74 27 2c 20 69 6e 61 73 | it righ|t', inas|
|00003bf0| 6d 75 63 68 20 61 73 20 | 27 72 69 67 68 74 27 20 |much as |'right' |
|00003c00| 69 73 6e 27 74 2e 0a 58 | 2a 2f 0a 58 0a 58 23 69 |isn't..X|*/.X.X#i|
|00003c10| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 66 69 6c 65 |nclude <|sys/file|
|00003c20| 2e 68 3e 0a 58 0a 58 63 | 68 61 72 20 2a 6c 6f 63 |.h>.X.Xc|har *loc|
|00003c30| 6b 69 6e 67 5f 73 74 79 | 6c 65 20 3d 20 22 66 6c |king_sty|le = "fl|
|00003c40| 6f 63 6b 20 73 74 79 6c | 65 20 66 69 6c 65 20 6c |ock styl|e file l|
|00003c50| 6f 63 6b 69 6e 67 22 3b | 0a 58 69 6e 74 20 6c 6f |ocking";|.Xint lo|
|00003c60| 63 6b 5f 73 75 70 70 6f | 72 74 20 3d 20 4c 43 4b |ck_suppo|rt = LCK|
|00003c70| 5f 53 48 41 52 45 44 20 | 7c 20 4c 43 4b 5f 45 58 |_SHARED || LCK_EX|
|00003c80| 43 4c 55 53 49 56 45 20 | 7c 20 4c 43 4b 5f 4e 4f |CLUSIVE || LCK_NO|
|00003c90| 5f 42 4c 4f 43 4b 3b 0a | 58 73 74 61 74 69 63 20 |_BLOCK;.|Xstatic |
|00003ca0| 69 6e 74 20 64 6f 5f 66 | 6c 6f 63 6b 28 29 3b 0a |int do_f|lock();.|
|00003cb0| 58 0a 58 69 6e 74 20 6c | 6f 63 6b 5f 72 65 63 6f |X.Xint l|ock_reco|
|00003cc0| 72 64 5f 73 68 61 72 65 | 64 5f 77 61 69 74 28 66 |rd_share|d_wait(f|
|00003cd0| 64 2c 20 6f 66 66 73 65 | 74 2c 20 6c 65 6e 29 0a |d, offse|t, len).|
|00003ce0| 58 69 6e 74 20 66 64 3b | 0a 58 6f 66 66 5f 74 20 |Xint fd;|.Xoff_t |
|00003cf0| 6f 66 66 73 65 74 3b 0a | 58 6f 66 66 5f 74 20 6c |offset;.|Xoff_t l|
|00003d00| 65 6e 3b 0a 58 7b 0a 58 | 20 20 69 66 20 28 6c 65 |en;.X{.X| if (le|
|00003d10| 6e 20 3c 20 30 29 20 7b | 0a 58 20 20 20 20 6f 66 |n < 0) {|.X of|
|00003d20| 66 73 65 74 20 2b 3d 20 | 6c 65 6e 3b 0a 58 20 20 |fset += |len;.X |
|00003d30| 20 20 6c 65 6e 20 3d 20 | 2d 6c 65 6e 3b 0a 58 20 | len = |-len;.X |
|00003d40| 20 7d 0a 58 0a 58 20 20 | 69 66 20 28 6c 73 65 65 | }.X.X |if (lsee|
|00003d50| 6b 28 66 64 2c 20 6f 66 | 66 73 65 74 2c 20 30 29 |k(fd, of|fset, 0)|
|00003d60| 20 3c 20 30 29 20 7b 0a | 58 20 20 20 20 6c 6f 63 | < 0) {.|X loc|
|00003d70| 6b 5f 65 72 72 6e 6f 20 | 3d 20 65 72 72 6e 6f 20 |k_errno |= errno |
|00003d80| 3d 3d 20 45 42 41 44 46 | 20 3f 20 4c 43 4b 5f 42 |== EBADF| ? LCK_B|
|00003d90| 41 44 46 44 20 3a 20 4c | 43 4b 5f 4f 54 48 45 52 |ADFD : L|CK_OTHER|
|00003da0| 3b 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 2d 32 |;.X r|eturn -2|
|00003db0| 3b 0a 58 20 20 7d 0a 58 | 20 20 72 65 74 75 72 6e |;.X }.X| return|
|00003dc0| 20 64 6f 5f 66 6c 6f 63 | 6b 28 66 64 2c 20 4c 4f | do_floc|k(fd, LO|
|00003dd0| 43 4b 5f 53 48 29 3b 0a | 58 7d 0a 58 0a 58 69 6e |CK_SH);.|X}.X.Xin|
|00003de0| 74 20 6c 6f 63 6b 5f 72 | 65 63 6f 72 64 5f 65 78 |t lock_r|ecord_ex|
|00003df0| 63 6c 75 73 69 76 65 5f | 77 61 69 74 28 66 64 2c |clusive_|wait(fd,|
|00003e00| 20 6f 66 66 73 65 74 2c | 20 6c 65 6e 29 0a 58 69 | offset,| len).Xi|
|00003e10| 6e 74 20 66 64 3b 0a 58 | 6f 66 66 5f 74 20 6f 66 |nt fd;.X|off_t of|
|00003e20| 66 73 65 74 3b 0a 58 6f | 66 66 5f 74 20 6c 65 6e |fset;.Xo|ff_t len|
|00003e30| 3b 0a 58 7b 0a 58 20 20 | 69 66 20 28 6c 65 6e 20 |;.X{.X |if (len |
|00003e40| 3c 20 30 29 20 7b 0a 58 | 20 20 20 20 6f 66 66 73 |< 0) {.X| offs|
|00003e50| 65 74 20 2b 3d 20 6c 65 | 6e 3b 0a 58 20 20 20 20 |et += le|n;.X |
|00003e60| 6c 65 6e 20 3d 20 2d 6c | 65 6e 3b 0a 58 20 20 7d |len = -l|en;.X }|
|00003e70| 0a 58 0a 58 20 20 69 66 | 20 28 6c 73 65 65 6b 28 |.X.X if| (lseek(|
|00003e80| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 30 29 20 3c |fd, offs|et, 0) <|
|00003e90| 20 30 29 20 7b 0a 58 20 | 20 20 20 6c 6f 63 6b 5f | 0) {.X | lock_|
|00003ea0| 65 72 72 6e 6f 20 3d 20 | 65 72 72 6e 6f 20 3d 3d |errno = |errno ==|
|00003eb0| 20 45 42 41 44 46 20 3f | 20 4c 43 4b 5f 42 41 44 | EBADF ?| LCK_BAD|
|00003ec0| 46 44 20 3a 20 4c 43 4b | 5f 4f 54 48 45 52 3b 0a |FD : LCK|_OTHER;.|
|00003ed0| 58 20 20 20 20 72 65 74 | 75 72 6e 20 2d 32 3b 0a |X ret|urn -2;.|
|00003ee0| 58 20 20 7d 0a 58 20 20 | 72 65 74 75 72 6e 20 64 |X }.X |return d|
|00003ef0| 6f 5f 66 6c 6f 63 6b 28 | 66 64 2c 20 4c 4f 43 4b |o_flock(|fd, LOCK|
|00003f00| 5f 45 58 29 3b 0a 58 7d | 0a 58 0a 58 69 6e 74 20 |_EX);.X}|.X.Xint |
|00003f10| 6c 6f 63 6b 5f 72 65 63 | 6f 72 64 5f 73 68 61 72 |lock_rec|ord_shar|
|00003f20| 65 64 5f 6e 6f 77 61 69 | 74 28 66 64 2c 20 6f 66 |ed_nowai|t(fd, of|
|00003f30| 66 73 65 74 2c 20 6c 65 | 6e 29 0a 58 69 6e 74 20 |fset, le|n).Xint |
|00003f40| 66 64 3b 0a 58 6f 66 66 | 5f 74 20 6f 66 66 73 65 |fd;.Xoff|_t offse|
|00003f50| 74 3b 0a 58 6f 66 66 5f | 74 20 6c 65 6e 3b 0a 58 |t;.Xoff_|t len;.X|
|00003f60| 7b 0a 58 20 20 69 66 20 | 28 6c 65 6e 20 3c 20 30 |{.X if |(len < 0|
|00003f70| 29 20 7b 0a 58 20 20 20 | 20 6f 66 66 73 65 74 20 |) {.X | offset |
|00003f80| 2b 3d 20 6c 65 6e 3b 0a | 58 20 20 20 20 6c 65 6e |+= len;.|X len|
|00003f90| 20 3d 20 2d 6c 65 6e 3b | 0a 58 20 20 7d 0a 58 0a | = -len;|.X }.X.|
|00003fa0| 58 20 20 69 66 20 28 6c | 73 65 65 6b 28 66 64 2c |X if (l|seek(fd,|
|00003fb0| 20 6f 66 66 73 65 74 2c | 20 30 29 20 3c 20 30 29 | offset,| 0) < 0)|
|00003fc0| 20 7b 0a 58 20 20 20 20 | 6c 6f 63 6b 5f 65 72 72 | {.X |lock_err|
|00003fd0| 6e 6f 20 3d 20 65 72 72 | 6e 6f 20 3d 3d 20 45 42 |no = err|no == EB|
|00003fe0| 41 44 46 20 3f 20 4c 43 | 4b 5f 42 41 44 46 44 20 |ADF ? LC|K_BADFD |
|00003ff0| 3a 20 4c 43 4b 5f 4f 54 | 48 45 52 3b 0a 58 20 20 |: LCK_OT|HER;.X |
|00004000| 20 20 72 65 74 75 72 6e | 20 2d 32 3b 0a 58 20 20 | return| -2;.X |
|00004010| 7d 0a 58 20 20 72 65 74 | 75 72 6e 20 64 6f 5f 66 |}.X ret|urn do_f|
|00004020| 6c 6f 63 6b 28 66 64 2c | 20 4c 4f 43 4b 5f 53 48 |lock(fd,| LOCK_SH|
|00004030| 20 7c 20 4c 4f 43 4b 5f | 4e 42 29 3b 0a 58 7d 0a | | LOCK_|NB);.X}.|
|00004040| 58 0a 58 69 6e 74 20 6c | 6f 63 6b 5f 72 65 63 6f |X.Xint l|ock_reco|
|00004050| 72 64 5f 65 78 63 6c 75 | 73 69 76 65 5f 6e 6f 77 |rd_exclu|sive_now|
|00004060| 61 69 74 28 66 64 2c 20 | 6f 66 66 73 65 74 2c 20 |ait(fd, |offset, |
|00004070| 6c 65 6e 29 0a 58 69 6e | 74 20 66 64 3b 0a 58 6f |len).Xin|t fd;.Xo|
|00004080| 66 66 5f 74 20 6f 66 66 | 73 65 74 3b 0a 58 6f 66 |ff_t off|set;.Xof|
|00004090| 66 5f 74 20 6c 65 6e 3b | 0a 58 7b 0a 58 20 20 69 |f_t len;|.X{.X i|
|000040a0| 66 20 28 6c 65 6e 20 3c | 20 30 29 20 7b 0a 58 20 |f (len <| 0) {.X |
|000040b0| 20 20 20 6f 66 66 73 65 | 74 20 2b 3d 20 6c 65 6e | offse|t += len|
|000040c0| 3b 0a 58 20 20 20 20 6c | 65 6e 20 3d 20 2d 6c 65 |;.X l|en = -le|
|000040d0| 6e 3b 0a 58 20 20 7d 0a | 58 0a 58 20 20 69 66 20 |n;.X }.|X.X if |
|000040e0| 28 6c 73 65 65 6b 28 66 | 64 2c 20 6f 66 66 73 65 |(lseek(f|d, offse|
|000040f0| 74 2c 20 30 29 20 3c 20 | 30 29 20 7b 0a 58 20 20 |t, 0) < |0) {.X |
|00004100| 20 20 6c 6f 63 6b 5f 65 | 72 72 6e 6f 20 3d 20 65 | lock_e|rrno = e|
|00004110| 72 72 6e 6f 20 3d 3d 20 | 45 42 41 44 46 20 3f 20 |rrno == |EBADF ? |
|00004120| 4c 43 4b 5f 42 41 44 46 | 44 20 3a 20 4c 43 4b 5f |LCK_BADF|D : LCK_|
|00004130| 4f 54 48 45 52 3b 0a 58 | 20 20 20 20 72 65 74 75 |OTHER;.X| retu|
|00004140| 72 6e 20 2d 32 3b 0a 58 | 20 20 7d 0a 58 20 20 72 |rn -2;.X| }.X r|
|00004150| 65 74 75 72 6e 20 64 6f | 5f 66 6c 6f 63 6b 28 66 |eturn do|_flock(f|
|00004160| 64 2c 20 4c 4f 43 4b 5f | 45 58 20 7c 20 4c 4f 43 |d, LOCK_|EX | LOC|
|00004170| 4b 5f 4e 42 29 3b 0a 58 | 7d 0a 58 0a 58 69 6e 74 |K_NB);.X|}.X.Xint|
|00004180| 20 75 6e 6c 6f 63 6b 5f | 72 65 63 6f 72 64 28 66 | unlock_|record(f|
|00004190| 64 2c 20 6f 66 66 73 65 | 74 2c 20 6c 65 6e 29 0a |d, offse|t, len).|
|000041a0| 58 69 6e 74 20 66 64 3b | 0a 58 6f 66 66 5f 74 20 |Xint fd;|.Xoff_t |
|000041b0| 6f 66 66 73 65 74 3b 0a | 58 6f 66 66 5f 74 20 6c |offset;.|Xoff_t l|
|000041c0| 65 6e 3b 0a 58 7b 0a 58 | 20 20 72 65 74 75 72 6e |en;.X{.X| return|
|000041d0| 20 64 6f 5f 66 6c 6f 63 | 6b 28 66 64 2c 20 4c 4f | do_floc|k(fd, LO|
|000041e0| 43 4b 5f 55 4e 29 3b 0a | 58 7d 0a 58 0a 58 69 6e |CK_UN);.|X}.X.Xin|
|000041f0| 74 20 6c 6f 63 6b 5f 66 | 69 6c 65 5f 73 68 61 72 |t lock_f|ile_shar|
|00004200| 65 64 5f 77 61 69 74 28 | 66 64 29 0a 58 69 6e 74 |ed_wait(|fd).Xint|
|00004210| 20 66 64 3b 0a 58 7b 0a | 58 20 20 72 65 74 75 72 | fd;.X{.|X retur|
|00004220| 6e 20 64 6f 5f 66 6c 6f | 63 6b 28 66 64 2c 20 4c |n do_flo|ck(fd, L|
|00004230| 4f 43 4b 5f 53 48 29 3b | 0a 58 7d 0a 58 0a 58 69 |OCK_SH);|.X}.X.Xi|
|00004240| 6e 74 20 6c 6f 63 6b 5f | 66 69 6c 65 5f 65 78 63 |nt lock_|file_exc|
|00004250| 6c 75 73 69 76 65 5f 77 | 61 69 74 28 66 64 29 0a |lusive_w|ait(fd).|
|00004260| 58 69 6e 74 20 66 64 3b | 0a 58 7b 0a 58 20 20 72 |Xint fd;|.X{.X r|
|00004270| 65 74 75 72 6e 20 64 6f | 5f 66 6c 6f 63 6b 28 66 |eturn do|_flock(f|
|00004280| 64 2c 20 4c 4f 43 4b 5f | 45 58 29 3b 0a 58 7d 0a |d, LOCK_|EX);.X}.|
|00004290| 58 0a 58 69 6e 74 20 6c | 6f 63 6b 5f 66 69 6c 65 |X.Xint l|ock_file|
|000042a0| 5f 73 68 61 72 65 64 5f | 6e 6f 77 61 69 74 28 66 |_shared_|nowait(f|
|000042b0| 64 29 0a 58 69 6e 74 20 | 66 64 3b 0a 58 7b 0a 58 |d).Xint |fd;.X{.X|
|000042c0| 20 20 72 65 74 75 72 6e | 20 64 6f 5f 66 6c 6f 63 | return| do_floc|
|000042d0| 6b 28 66 64 2c 20 4c 4f | 43 4b 5f 53 48 20 7c 20 |k(fd, LO|CK_SH | |
|000042e0| 4c 4f 43 4b 5f 4e 42 29 | 3b 0a 58 7d 0a 58 0a 58 |LOCK_NB)|;.X}.X.X|
|000042f0| 69 6e 74 20 6c 6f 63 6b | 5f 66 69 6c 65 5f 65 78 |int lock|_file_ex|
|00004300| 63 6c 75 73 69 76 65 5f | 6e 6f 77 61 69 74 28 66 |clusive_|nowait(f|
|00004310| 64 29 0a 58 69 6e 74 20 | 66 64 3b 0a 58 7b 0a 58 |d).Xint |fd;.X{.X|
|00004320| 20 20 72 65 74 75 72 6e | 20 64 6f 5f 66 6c 6f 63 | return| do_floc|
|00004330| 6b 28 66 64 2c 20 4c 4f | 43 4b 5f 45 58 20 7c 20 |k(fd, LO|CK_EX | |
|00004340| 4c 4f 43 4b 5f 4e 42 29 | 3b 0a 58 7d 0a 58 0a 58 |LOCK_NB)|;.X}.X.X|
|00004350| 69 6e 74 20 75 6e 6c 6f | 63 6b 5f 66 69 6c 65 28 |int unlo|ck_file(|
|00004360| 66 64 29 0a 58 69 6e 74 | 20 66 64 3b 0a 58 7b 0a |fd).Xint| fd;.X{.|
|00004370| 58 20 20 72 65 74 75 72 | 6e 20 64 6f 5f 66 6c 6f |X retur|n do_flo|
|00004380| 63 6b 28 66 64 2c 20 4c | 4f 43 4b 5f 55 4e 29 3b |ck(fd, L|OCK_UN);|
|00004390| 0a 58 7d 0a 58 0a 58 73 | 74 61 74 69 63 20 69 6e |.X}.X.Xs|tatic in|
|000043a0| 74 20 64 6f 5f 66 6c 6f | 63 6b 28 66 64 2c 20 6f |t do_flo|ck(fd, o|
|000043b0| 70 65 72 61 74 69 6f 6e | 29 0a 58 69 6e 74 20 66 |peration|).Xint f|
|000043c0| 64 3b 0a 58 69 6e 74 20 | 6f 70 65 72 61 74 69 6f |d;.Xint |operatio|
|000043d0| 6e 3b 0a 58 7b 0a 58 20 | 20 69 66 20 28 66 6c 6f |n;.X{.X | if (flo|
|000043e0| 63 6b 28 66 64 2c 20 6f | 70 65 72 61 74 69 6f 6e |ck(fd, o|peration|
|000043f0| 29 29 20 7b 0a 58 20 20 | 20 20 73 77 69 74 63 68 |)) {.X | switch|
|00004400| 20 28 65 72 72 6e 6f 29 | 20 7b 0a 58 20 20 20 20 | (errno)| {.X |
|00004410| 63 61 73 65 20 45 57 4f | 55 4c 44 42 4c 4f 43 4b |case EWO|ULDBLOCK|
|00004420| 3a 0a 58 20 20 20 20 20 | 20 6c 6f 63 6b 5f 65 72 |:.X | lock_er|
|00004430| 72 6e 6f 20 3d 20 4c 43 | 4b 5f 42 4c 4f 43 4b 3b |rno = LC|K_BLOCK;|
|00004440| 0a 58 20 20 20 20 20 20 | 72 65 74 75 72 6e 20 2d |.X |return -|
|00004450| 31 3b 0a 58 20 20 20 20 | 63 61 73 65 20 45 42 41 |1;.X |case EBA|
|00004460| 44 46 3a 0a 58 20 20 20 | 20 20 20 6c 6f 63 6b 5f |DF:.X | lock_|
|00004470| 65 72 72 6e 6f 20 3d 20 | 4c 43 4b 5f 42 41 44 46 |errno = |LCK_BADF|
|00004480| 44 3b 0a 58 20 20 20 20 | 20 20 72 65 74 75 72 6e |D;.X | return|
|00004490| 20 2d 32 3b 0a 58 20 20 | 20 20 63 61 73 65 20 45 | -2;.X | case E|
|000044a0| 44 45 41 44 4c 4b 3a 0a | 58 20 20 20 20 20 20 6c |DEADLK:.|X l|
|000044b0| 6f 63 6b 5f 65 72 72 6e | 6f 20 3d 20 4c 43 4b 5f |ock_errn|o = LCK_|
|000044c0| 44 45 41 44 4c 4f 43 4b | 3b 0a 58 20 20 20 20 20 |DEADLOCK|;.X |
|000044d0| 20 72 65 74 75 72 6e 20 | 2d 32 3b 0a 58 20 20 20 | return |-2;.X |
|000044e0| 20 63 61 73 65 20 45 49 | 4e 54 52 3a 0a 58 20 20 | case EI|NTR:.X |
|000044f0| 20 20 20 20 6c 6f 63 6b | 5f 65 72 72 6e 6f 20 3d | lock|_errno =|
|00004500| 20 4c 43 4b 5f 49 4e 54 | 52 3b 0a 58 20 20 20 20 | LCK_INT|R;.X |
|00004510| 20 20 72 65 74 75 72 6e | 20 2d 32 3b 0a 58 20 20 | return| -2;.X |
|00004520| 20 20 64 65 66 61 75 6c | 74 3a 0a 58 20 20 20 20 | defaul|t:.X |
|00004530| 20 20 6c 6f 63 6b 5f 65 | 72 72 6e 6f 20 3d 20 4c | lock_e|rrno = L|
|00004540| 43 4b 5f 4f 54 48 45 52 | 3b 0a 58 20 20 20 20 20 |CK_OTHER|;.X |
|00004550| 20 72 65 74 75 72 6e 20 | 2d 32 3b 0a 58 20 20 20 | return |-2;.X |
|00004560| 20 7d 0a 58 20 20 7d 0a | 58 0a 58 20 20 6c 6f 63 | }.X }.|X.X loc|
|00004570| 6b 5f 65 72 72 6e 6f 20 | 3d 20 4c 43 4b 5f 4f 4b |k_errno |= LCK_OK|
|00004580| 3b 0a 58 20 20 72 65 74 | 75 72 6e 20 30 3b 0a 58 |;.X ret|urn 0;.X|
|00004590| 7d 0a 58 23 65 6e 64 69 | 66 0a 58 0a 58 23 69 66 |}.X#endi|f.X.X#if|
|000045a0| 64 65 66 20 4c 4f 43 4b | 46 5f 53 54 59 4c 45 0a |def LOCK|F_STYLE.|
|000045b0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 75 6e 69 73 74 |X#includ|e <unist|
|000045c0| 64 2e 68 3e 0a 58 23 69 | 66 6e 64 65 66 20 6c 73 |d.h>.X#i|fndef ls|
|000045d0| 65 65 6b 0a 58 6c 6f 6e | 67 20 6c 73 65 65 6b 28 |eek.Xlon|g lseek(|
|000045e0| 29 3b 0a 58 23 65 6e 64 | 69 66 0a 58 0a 58 63 68 |);.X#end|if.X.Xch|
|000045f0| 61 72 20 2a 6c 6f 63 6b | 69 6e 67 5f 73 74 79 6c |ar *lock|ing_styl|
|00004600| 65 20 3d 20 22 6c 6f 63 | 6b 66 20 73 74 79 6c 65 |e = "loc|kf style|
|00004610| 20 66 69 6c 65 20 6c 6f | 63 6b 69 6e 67 22 3b 0a | file lo|cking";.|
|00004620| 58 69 6e 74 20 6c 6f 63 | 6b 5f 73 75 70 70 6f 72 |Xint loc|k_suppor|
|00004630| 74 20 3d 20 4c 43 4b 5f | 52 45 43 4f 52 44 20 7c |t = LCK_|RECORD ||
|00004640| 20 4c 43 4b 5f 45 58 43 | 4c 55 53 49 56 45 20 7c | LCK_EXC|LUSIVE ||
|00004650| 20 4c 43 4b 5f 4e 4f 5f | 42 4c 4f 43 4b 3b 0a 58 | LCK_NO_|BLOCK;.X|
|00004660| 73 74 61 74 69 63 20 69 | 6e 74 20 64 6f 5f 6c 6f |static i|nt do_lo|
|00004670| 63 6b 66 28 29 3b 0a 58 | 0a 58 69 6e 74 20 6c 6f |ckf();.X|.Xint lo|
|00004680| 63 6b 5f 72 65 63 6f 72 | 64 5f 73 68 61 72 65 64 |ck_recor|d_shared|
|00004690| 5f 77 61 69 74 28 66 64 | 2c 20 6f 66 66 73 65 74 |_wait(fd|, offset|
|000046a0| 2c 20 6c 65 6e 29 0a 58 | 69 6e 74 20 66 64 3b 0a |, len).X|int fd;.|
|000046b0| 58 6f 66 66 5f 74 20 6f | 66 66 73 65 74 3b 0a 58 |Xoff_t o|ffset;.X|
|000046c0| 6f 66 66 5f 74 20 6c 65 | 6e 3b 0a 58 7b 0a 58 20 |off_t le|n;.X{.X |
|000046d0| 20 72 65 74 75 72 6e 20 | 64 6f 5f 6c 6f 63 6b 66 | return |do_lockf|
|000046e0| 28 66 64 2c 20 46 5f 4c | 4f 43 4b 2c 20 6f 66 66 |(fd, F_L|OCK, off|
|000046f0| 73 65 74 2c 20 6c 65 6e | 2c 20 30 29 3b 0a 58 7d |set, len|, 0);.X}|
|00004700| 0a 58 0a 58 69 6e 74 20 | 6c 6f 63 6b 5f 72 65 63 |.X.Xint |lock_rec|
|00004710| 6f 72 64 5f 65 78 63 6c | 75 73 69 76 65 5f 77 61 |ord_excl|usive_wa|
|00004720| 69 74 28 66 64 2c 20 6f | 66 66 73 65 74 2c 20 6c |it(fd, o|ffset, l|
|00004730| 65 6e 29 0a 58 69 6e 74 | 20 66 64 3b 0a 58 6f 66 |en).Xint| fd;.Xof|
|00004740| 66 5f 74 20 6f 66 66 73 | 65 74 3b 0a 58 6f 66 66 |f_t offs|et;.Xoff|
|00004750| 5f 74 20 6c 65 6e 3b 0a | 58 7b 0a 58 20 20 72 65 |_t len;.|X{.X re|
|00004760| 74 75 72 6e 20 64 6f 5f | 6c 6f 63 6b 66 28 66 64 |turn do_|lockf(fd|
|00004770| 2c 20 46 5f 4c 4f 43 4b | 2c 20 6f 66 66 73 65 74 |, F_LOCK|, offset|
|00004780| 2c 20 6c 65 6e 2c 20 30 | 29 3b 0a 58 7d 0a 58 0a |, len, 0|);.X}.X.|
|00004790| 58 69 6e 74 20 6c 6f 63 | 6b 5f 72 65 63 6f 72 64 |Xint loc|k_record|
|000047a0| 5f 73 68 61 72 65 64 5f | 6e 6f 77 61 69 74 28 66 |_shared_|nowait(f|
|000047b0| 64 2c 20 6f 66 66 73 65 | 74 2c 20 6c 65 6e 29 0a |d, offse|t, len).|
|000047c0| 58 69 6e 74 20 66 64 3b | 0a 58 6f 66 66 5f 74 20 |Xint fd;|.Xoff_t |
|000047d0| 6f 66 66 73 65 74 3b 0a | 58 6f 66 66 5f 74 20 6c |offset;.|Xoff_t l|
|000047e0| 65 6e 3b 0a 58 7b 0a 58 | 20 20 72 65 74 75 72 6e |en;.X{.X| return|
|000047f0| 20 64 6f 5f 6c 6f 63 6b | 66 28 66 64 2c 20 46 5f | do_lock|f(fd, F_|
|00004800| 54 4c 4f 43 4b 2c 20 6f | 66 66 73 65 74 2c 20 6c |TLOCK, o|ffset, l|
|00004810| 65 6e 2c 20 30 29 3b 0a | 58 7d 0a 58 0a 58 69 6e |en, 0);.|X}.X.Xin|
|00004820| 74 20 6c 6f 63 6b 5f 72 | 65 63 6f 72 64 5f 65 78 |t lock_r|ecord_ex|
|00004830| 63 6c 75 73 69 76 65 5f | 6e 6f 77 61 69 74 28 66 |clusive_|nowait(f|
|00004840| 64 2c 20 6f 66 66 73 65 | 74 2c 20 6c 65 6e 29 0a |d, offse|t, len).|
|00004850| 58 69 6e 74 20 66 64 3b | 0a 58 6f 66 66 5f 74 20 |Xint fd;|.Xoff_t |
|00004860| 6f 66 66 73 65 74 3b 0a | 58 6f 66 66 5f 74 20 6c |offset;.|Xoff_t l|
|00004870| 65 6e 3b 0a 58 7b 0a 58 | 20 20 72 65 74 75 72 6e |en;.X{.X| return|
|00004880| 20 64 6f 5f 6c 6f 63 6b | 66 28 66 64 2c 20 46 5f | do_lock|f(fd, F_|
|00004890| 54 4c 4f 43 4b 2c 20 6f | 66 66 73 65 74 2c 20 6c |TLOCK, o|ffset, l|
|000048a0| 65 6e 2c 20 30 29 3b 0a | 58 7d 0a 58 0a 58 69 6e |en, 0);.|X}.X.Xin|
|000048b0| 74 20 75 6e 6c 6f 63 6b | 5f 72 65 63 6f 72 64 28 |t unlock|_record(|
|000048c0| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 6c 65 6e 29 |fd, offs|et, len)|
|000048d0| 0a 58 69 6e 74 20 66 64 | 3b 0a 58 6f 66 66 5f 74 |.Xint fd|;.Xoff_t|
|000048e0| 20 6f 66 66 73 65 74 3b | 0a 58 6f 66 66 5f 74 20 | offset;|.Xoff_t |
|000048f0| 6c 65 6e 3b 0a 58 7b 0a | 58 20 20 72 65 74 75 72 |len;.X{.|X retur|
|00004900| 6e 20 64 6f 5f 6c 6f 63 | 6b 66 28 66 64 2c 20 46 |n do_loc|kf(fd, F|
|00004910| 5f 55 4c 4f 43 4b 2c 20 | 6f 66 66 73 65 74 2c 20 |_ULOCK, |offset, |
|00004920| 6c 65 6e 2c 20 30 29 3b | 0a 58 7d 0a 58 0a 58 69 |len, 0);|.X}.X.Xi|
|00004930| 6e 74 20 6c 6f 63 6b 5f | 66 69 6c 65 5f 73 68 61 |nt lock_|file_sha|
|00004940| 72 65 64 5f 77 61 69 74 | 28 66 64 29 0a 58 69 6e |red_wait|(fd).Xin|
|00004950| 74 20 66 64 3b 0a 58 7b | 0a 58 20 20 72 65 74 75 |t fd;.X{|.X retu|
|00004960| 72 6e 20 64 6f 5f 6c 6f | 63 6b 66 28 66 64 2c 20 |rn do_lo|ckf(fd, |
|00004970| 46 5f 4c 4f 43 4b 2c 20 | 30 4c 2c 20 30 4c 2c 20 |F_LOCK, |0L, 0L, |
|00004980| 31 29 3b 0a 58 7d 0a 58 | 0a 58 69 6e 74 20 6c 6f |1);.X}.X|.Xint lo|
|00004990| 63 6b 5f 66 69 6c 65 5f | 65 78 63 6c 75 73 69 76 |ck_file_|exclusiv|
|000049a0| 65 5f 77 61 69 74 28 66 | 64 29 0a 58 69 6e 74 20 |e_wait(f|d).Xint |
|000049b0| 66 64 3b 0a 58 7b 0a 58 | 20 20 72 65 74 75 72 6e |fd;.X{.X| return|
|000049c0| 20 64 6f 5f 6c 6f 63 6b | 66 28 66 64 2c 20 46 5f | do_lock|f(fd, F_|
|000049d0| 4c 4f 43 4b 2c 20 30 4c | 2c 20 30 4c 2c 20 31 29 |LOCK, 0L|, 0L, 1)|
|000049e0| 3b 0a 58 7d 0a 58 0a 58 | 69 6e 74 20 6c 6f 63 6b |;.X}.X.X|int lock|
|000049f0| 5f 66 69 6c 65 5f 73 68 | 61 72 65 64 5f 6e 6f 77 |_file_sh|ared_now|
|00004a00| 61 69 74 28 66 64 29 0a | 58 69 6e 74 20 66 64 3b |ait(fd).|Xint fd;|
|00004a10| 0a 58 7b 0a 58 20 20 72 | 65 74 75 72 6e 20 64 6f |.X{.X r|eturn do|
|00004a20| 5f 6c 6f 63 6b 66 28 66 | 64 2c 20 46 5f 54 4c 4f |_lockf(f|d, F_TLO|
|00004a30| 43 4b 2c 20 30 4c 2c 20 | 30 4c 2c 20 31 29 3b 0a |CK, 0L, |0L, 1);.|
|00004a40| 58 7d 0a 58 0a 58 69 6e | 74 20 6c 6f 63 6b 5f 66 |X}.X.Xin|t lock_f|
|00004a50| 69 6c 65 5f 65 78 63 6c | 75 73 69 76 65 5f 6e 6f |ile_excl|usive_no|
|00004a60| 77 61 69 74 28 66 64 29 | 0a 58 69 6e 74 20 66 64 |wait(fd)|.Xint fd|
|00004a70| 3b 0a 58 7b 0a 58 20 20 | 72 65 74 75 72 6e 20 64 |;.X{.X |return d|
|00004a80| 6f 5f 6c 6f 63 6b 66 28 | 66 64 2c 20 46 5f 54 4c |o_lockf(|fd, F_TL|
|00004a90| 4f 43 4b 2c 20 30 4c 2c | 20 30 4c 2c 20 31 29 3b |OCK, 0L,| 0L, 1);|
|00004aa0| 0a 58 7d 0a 58 0a 58 69 | 6e 74 20 75 6e 6c 6f 63 |.X}.X.Xi|nt unloc|
|00004ab0| 6b 5f 66 69 6c 65 28 66 | 64 29 0a 58 69 6e 74 20 |k_file(f|d).Xint |
|00004ac0| 66 64 3b 0a 58 7b 0a 58 | 20 20 72 65 74 75 72 6e |fd;.X{.X| return|
|00004ad0| 20 64 6f 5f 6c 6f 63 6b | 66 28 66 64 2c 20 46 5f | do_lock|f(fd, F_|
|00004ae0| 55 4c 4f 43 4b 2c 20 30 | 4c 2c 20 30 4c 2c 20 31 |ULOCK, 0|L, 0L, 1|
|00004af0| 29 3b 0a 58 7d 0a 58 0a | 58 73 74 61 74 69 63 20 |);.X}.X.|Xstatic |
|00004b00| 69 6e 74 20 64 6f 5f 6c | 6f 63 6b 66 28 66 64 2c |int do_l|ockf(fd,|
|00004b10| 20 63 6f 6d 6d 61 6e 64 | 2c 20 6f 66 66 73 65 74 | command|, offset|
|00004b20| 2c 20 6c 65 6e 2c 20 6f | 72 69 67 69 6e 61 6c 5f |, len, o|riginal_|
|00004b30| 6f 66 66 73 65 74 5f 66 | 6c 61 67 29 0a 58 69 6e |offset_f|lag).Xin|
|00004b40| 74 20 66 64 3b 0a 58 69 | 6e 74 20 63 6f 6d 6d 61 |t fd;.Xi|nt comma|
|00004b50| 6e 64 3b 0a 58 6f 66 66 | 5f 74 20 6f 66 66 73 65 |nd;.Xoff|_t offse|
|00004b60| 74 3b 0a 58 6f 66 66 5f | 74 20 6c 65 6e 3b 0a 58 |t;.Xoff_|t len;.X|
|00004b70| 69 6e 74 20 6f 72 69 67 | 69 6e 61 6c 5f 6f 66 66 |int orig|inal_off|
|00004b80| 73 65 74 5f 66 6c 61 67 | 3b 0a 58 7b 0a 58 20 20 |set_flag|;.X{.X |
|00004b90| 69 6e 74 20 72 65 74 3b | 0a 58 20 20 6f 66 66 5f |int ret;|.X off_|
|00004ba0| 74 20 6f 72 69 67 69 6e | 61 6c 5f 6f 66 66 73 65 |t origin|al_offse|
|00004bb0| 74 3b 0a 58 20 20 6c 6f | 6e 67 20 6c 73 65 65 6b |t;.X lo|ng lseek|
|00004bc0| 28 29 3b 0a 58 0a 58 20 | 20 69 66 20 28 6f 72 69 |();.X.X | if (ori|
|00004bd0| 67 69 6e 61 6c 5f 6f 66 | 66 73 65 74 5f 66 6c 61 |ginal_of|fset_fla|
|00004be0| 67 29 20 7b 0a 58 20 20 | 20 20 69 66 20 28 28 6f |g) {.X | if ((o|
|00004bf0| 72 69 67 69 6e 61 6c 5f | 6f 66 66 73 65 74 20 3d |riginal_|offset =|
|00004c00| 20 28 6f 66 66 5f 74 29 | 6c 73 65 65 6b 28 66 64 | (off_t)|lseek(fd|
|00004c10| 2c 20 30 4c 2c 20 31 29 | 29 20 3c 20 30 29 0a 58 |, 0L, 1)|) < 0).X|
|00004c20| 20 20 20 20 20 20 6f 72 | 69 67 69 6e 61 6c 5f 6f | or|iginal_o|
|00004c30| 66 66 73 65 74 5f 66 6c | 61 67 20 3d 20 30 3b 0a |ffset_fl|ag = 0;.|
|00004c40| 58 20 20 7d 0a 58 20 20 | 69 66 20 28 6c 65 6e 20 |X }.X |if (len |
|00004c50| 3c 20 30 29 20 7b 0a 58 | 20 20 20 20 6f 66 66 73 |< 0) {.X| offs|
|00004c60| 65 74 20 2b 3d 20 6c 65 | 6e 3b 0a 58 20 20 20 20 |et += le|n;.X |
|00004c70| 6c 65 6e 20 3d 20 2d 6c | 65 6e 3b 0a 58 20 20 7d |len = -l|en;.X }|
|00004c80| 0a 58 20 20 69 66 20 28 | 6c 73 65 65 6b 28 66 64 |.X if (|lseek(fd|
|00004c90| 2c 20 6f 66 66 73 65 74 | 2c 20 30 29 20 3c 20 30 |, offset|, 0) < 0|
|00004ca0| 29 20 7b 0a 58 20 20 20 | 20 6c 6f 63 6b 5f 65 72 |) {.X | lock_er|
|00004cb0| 72 6e 6f 20 3d 20 65 72 | 72 6e 6f 20 3d 3d 20 45 |rno = er|rno == E|
|00004cc0| 42 41 44 46 20 3f 20 4c | 43 4b 5f 42 41 44 46 44 |BADF ? L|CK_BADFD|
|00004cd0| 20 3a 20 4c 43 4b 5f 4f | 54 48 45 52 3b 0a 58 20 | : LCK_O|THER;.X |
|00004ce0| 20 20 20 72 65 74 75 72 | 6e 20 2d 32 3b 0a 58 20 | retur|n -2;.X |
|00004cf0| 20 7d 0a 58 20 20 69 66 | 20 28 6c 6f 63 6b 66 28 | }.X if| (lockf(|
|00004d00| 66 64 2c 20 63 6f 6d 6d | 61 6e 64 2c 20 6c 65 6e |fd, comm|and, len|
|00004d10| 29 29 20 7b 0a 58 20 20 | 20 20 73 77 69 74 63 68 |)) {.X | switch|
|00004d20| 20 28 65 72 72 6e 6f 29 | 20 7b 0a 58 20 20 20 20 | (errno)| {.X |
|00004d30| 63 61 73 65 20 45 41 43 | 43 45 53 3a 0a 58 20 20 |case EAC|CES:.X |
|00004d40| 20 20 20 20 6c 6f 63 6b | 5f 65 72 72 6e 6f 20 3d | lock|_errno =|
|00004d50| 20 4c 43 4b 5f 42 4c 4f | 43 4b 3b 0a 58 20 20 20 | LCK_BLO|CK;.X |
|00004d60| 20 20 20 72 65 74 20 3d | 20 2d 31 3b 0a 58 20 20 | ret =| -1;.X |
|00004d70| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 20 20 20 20 | brea|k;.X |
|00004d80| 63 61 73 65 20 45 42 41 | 44 46 3a 0a 58 20 20 20 |case EBA|DF:.X |
|00004d90| 20 20 20 6c 6f 63 6b 5f | 65 72 72 6e 6f 20 3d 20 | lock_|errno = |
|00004da0| 4c 43 4b 5f 42 41 44 46 | 44 3b 0a 58 20 20 20 20 |LCK_BADF|D;.X |
|00004db0| 20 20 72 65 74 20 3d 20 | 2d 32 3b 0a 58 20 20 20 | ret = |-2;.X |
|00004dc0| 20 20 20 62 72 65 61 6b | 3b 0a 58 20 20 20 20 63 | break|;.X c|
|00004dd0| 61 73 65 20 45 44 45 41 | 44 4c 4b 3a 0a 58 20 20 |ase EDEA|DLK:.X |
|00004de0| 20 20 20 20 6c 6f 63 6b | 5f 65 72 72 6e 6f 20 3d | lock|_errno =|
|00004df0| 20 4c 43 4b 5f 44 45 41 | 44 4c 4f 43 4b 3b 0a 58 | LCK_DEA|DLOCK;.X|
|00004e00| 20 20 20 20 20 20 72 65 | 74 20 3d 20 2d 32 3b 0a | re|t = -2;.|
|00004e10| 58 20 20 20 20 20 20 62 | 72 65 61 6b 3b 0a 58 20 |X b|reak;.X |
|00004e20| 20 20 20 63 61 73 65 20 | 45 49 4e 54 52 3a 0a 58 | case |EINTR:.X|
|00004e30| 20 20 20 20 20 20 6c 6f | 63 6b 5f 65 72 72 6e 6f | lo|ck_errno|
|00004e40| 20 3d 20 4c 43 4b 5f 49 | 4e 54 52 3b 0a 58 20 20 | = LCK_I|NTR;.X |
|00004e50| 20 20 20 20 72 65 74 20 | 3d 20 2d 32 3b 0a 58 20 | ret |= -2;.X |
|00004e60| 20 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 20 20 20 | bre|ak;.X |
|00004e70| 20 64 65 66 61 75 6c 74 | 3a 0a 58 20 20 20 20 20 | default|:.X |
|00004e80| 20 6c 6f 63 6b 5f 65 72 | 72 6e 6f 20 3d 20 4c 43 | lock_er|rno = LC|
|00004e90| 4b 5f 4f 54 48 45 52 3b | 0a 58 20 20 20 20 20 20 |K_OTHER;|.X |
|00004ea0| 72 65 74 20 3d 20 2d 32 | 3b 0a 58 20 20 20 20 20 |ret = -2|;.X |
|00004eb0| 20 62 72 65 61 6b 3b 0a | 58 20 20 20 20 7d 0a 58 | break;.|X }.X|
|00004ec0| 20 20 7d 0a 58 20 20 65 | 6c 73 65 20 7b 0a 58 20 | }.X e|lse {.X |
|00004ed0| 20 20 20 6c 6f 63 6b 5f | 65 72 72 6e 6f 20 3d 20 | lock_|errno = |
|00004ee0| 4c 43 4b 5f 4f 4b 3b 0a | 58 20 20 20 20 72 65 74 |LCK_OK;.|X ret|
|00004ef0| 20 3d 20 30 3b 0a 58 20 | 20 7d 0a 58 20 20 69 66 | = 0;.X | }.X if|
|00004f00| 20 28 6f 72 69 67 69 6e | 61 6c 5f 6f 66 66 73 65 | (origin|al_offse|
|00004f10| 74 5f 66 6c 61 67 29 0a | 58 20 20 20 20 6c 73 65 |t_flag).|X lse|
|00004f20| 65 6b 28 66 64 2c 20 6f | 72 69 67 69 6e 61 6c 5f |ek(fd, o|riginal_|
|00004f30| 6f 66 66 73 65 74 2c 20 | 30 29 3b 0a 58 0a 58 20 |offset, |0);.X.X |
|00004f40| 20 72 65 74 75 72 6e 20 | 72 65 74 3b 0a 58 7d 0a | return |ret;.X}.|
|00004f50| 58 23 65 6e 64 69 66 0a | 45 4e 44 5f 4f 46 5f 46 |X#endif.|END_OF_F|
|00004f60| 49 4c 45 0a 69 66 20 74 | 65 73 74 20 31 31 36 34 |ILE.if t|est 1164|
|00004f70| 36 20 2d 6e 65 20 60 77 | 63 20 2d 63 20 3c 27 6c |6 -ne `w|c -c <'l|
|00004f80| 6f 63 6b 2d 66 69 6c 65 | 2e 63 27 60 3b 20 74 68 |ock-file|.c'`; th|
|00004f90| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|00004fa0| 3a 20 5c 22 27 6c 6f 63 | 6b 2d 66 69 6c 65 2e 63 |: \"'loc|k-file.c|
|00004fb0| 27 5c 22 20 75 6e 70 61 | 63 6b 65 64 20 77 69 74 |'\" unpa|cked wit|
|00004fc0| 68 20 77 72 6f 6e 67 20 | 73 69 7a 65 21 0a 66 69 |h wrong |size!.fi|
|00004fd0| 0a 23 20 65 6e 64 20 6f | 66 20 27 6c 6f 63 6b 2d |.# end o|f 'lock-|
|00004fe0| 66 69 6c 65 2e 63 27 0a | 66 69 0a 69 66 20 74 65 |file.c'.|fi.if te|
|00004ff0| 73 74 20 2d 66 20 27 6c | 6f 63 6b 2d 66 69 6c 65 |st -f 'l|ock-file|
|00005000| 2e 68 27 20 2d 61 20 22 | 24 7b 31 7d 22 20 21 3d |.h' -a "|${1}" !=|
|00005010| 20 22 2d 63 22 20 3b 20 | 74 68 65 6e 20 0a 20 20 | "-c" ; |then . |
|00005020| 65 63 68 6f 20 73 68 61 | 72 3a 20 57 69 6c 6c 20 |echo sha|r: Will |
|00005030| 6e 6f 74 20 63 6c 6f 62 | 62 65 72 20 65 78 69 73 |not clob|ber exis|
|00005040| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 27 6c 6f 63 |ting fil|e \"'loc|
|00005050| 6b 2d 66 69 6c 65 2e 68 | 27 5c 22 0a 65 6c 73 65 |k-file.h|'\".else|
|00005060| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 45 78 74 72 |.echo sh|ar: Extr|
|00005070| 61 63 74 69 6e 67 20 5c | 22 27 6c 6f 63 6b 2d 66 |acting \|"'lock-f|
|00005080| 69 6c 65 2e 68 27 5c 22 | 20 5c 28 31 36 38 37 20 |ile.h'\"| \(1687 |
|00005090| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|000050a0| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 27 6c 6f 63 6b | "s/^X//|" >'lock|
|000050b0| 2d 66 69 6c 65 2e 68 27 | 20 3c 3c 27 45 4e 44 5f |-file.h'| <<'END_|
|000050c0| 4f 46 5f 46 49 4c 45 27 | 0a 58 2f 2a 20 40 28 23 |OF_FILE'|.X/* @(#|
|000050d0| 29 6c 6f 63 6b 2d 66 69 | 6c 65 2e 68 09 31 2e 31 |)lock-fi|le.h.1.1|
|000050e0| 20 39 31 2f 30 31 2f 32 | 34 20 2a 2f 0a 58 2f 2a | 91/01/2|4 */.X/*|
|000050f0| 20 63 6f 70 79 72 69 67 | 68 74 20 28 63 29 20 4d | copyrig|ht (c) M|
|00005100| 69 6b 65 20 48 6f 77 61 | 72 64 20 26 20 4d 69 6c |ike Howa|rd & Mil|
|00005110| 6c 65 72 2f 48 6f 77 61 | 72 64 20 49 6e 76 65 73 |ler/Howa|rd Inves|
|00005120| 74 6d 65 6e 74 73 2c 20 | 49 6e 63 2e 20 31 39 39 |tments, |Inc. 199|
|00005130| 30 2c 0a 58 20 20 20 61 | 6c 6c 20 72 69 67 68 74 |0,.X a|ll right|
|00005140| 73 20 72 65 73 65 76 65 | 64 20 2a 2f 0a 58 0a 58 |s reseve|d */.X.X|
|00005150| 2f 2a 20 6c 6f 63 6b 5f | 65 72 72 6e 6f 20 76 61 |/* lock_|errno va|
|00005160| 6c 75 65 73 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 |lues */.|X#define|
|00005170| 20 4c 43 4b 5f 4f 4b 20 | 20 20 20 20 20 20 30 0a | LCK_OK | 0.|
|00005180| 58 23 64 65 66 69 6e 65 | 20 4c 43 4b 5f 42 4c 4f |X#define| LCK_BLO|
|00005190| 43 4b 20 20 20 20 31 20 | 20 2f 2a 20 74 68 65 20 |CK 1 | /* the |
|000051a0| 72 65 71 75 65 73 74 65 | 64 20 6c 6f 63 6b 20 77 |requeste|d lock w|
|000051b0| 61 73 20 62 6c 6f 63 6b | 65 64 20 2a 2f 0a 58 23 |as block|ed */.X#|
|000051c0| 64 65 66 69 6e 65 20 4c | 43 4b 5f 42 41 44 46 44 |define L|CK_BADFD|
|000051d0| 20 20 20 20 32 20 20 2f | 2a 20 66 64 20 69 73 20 | 2 /|* fd is |
|000051e0| 6e 6f 74 20 61 20 76 61 | 6c 69 64 20 66 69 6c 65 |not a va|lid file|
|000051f0| 20 64 65 73 63 72 69 70 | 74 6f 72 20 2a 2f 0a 58 | descrip|tor */.X|
|00005200| 23 64 65 66 69 6e 65 20 | 4c 43 4b 5f 44 45 41 44 |#define |LCK_DEAD|
|00005210| 4c 4f 43 4b 20 33 20 20 | 2f 2a 20 61 20 64 65 61 |LOCK 3 |/* a dea|
|00005220| 64 6c 6f 63 6b 20 77 61 | 73 20 64 65 74 65 63 74 |dlock wa|s detect|
|00005230| 65 64 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 4c |ed */.X#|define L|
|00005240| 43 4b 5f 49 4e 54 52 20 | 20 20 20 20 34 20 20 2f |CK_INTR | 4 /|
|00005250| 2a 20 61 6e 20 69 6e 74 | 65 72 75 70 74 20 61 62 |* an int|erupt ab|
|00005260| 6f 72 74 65 64 20 73 79 | 73 74 65 6d 20 63 61 6c |orted sy|stem cal|
|00005270| 6c 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 4c 43 |l */.X#d|efine LC|
|00005280| 4b 5f 4f 54 48 45 52 20 | 20 20 20 39 20 20 2f 2a |K_OTHER | 9 /*|
|00005290| 20 73 6f 6d 65 20 6f 74 | 68 65 72 20 65 72 72 6f | some ot|her erro|
|000052a0| 72 20 2d 20 65 72 72 6e | 6f 20 6d 61 79 20 67 69 |r - errn|o may gi|
|000052b0| 76 65 20 6d 6f 72 65 20 | 69 6e 66 6f 72 6d 61 74 |ve more |informat|
|000052c0| 69 6f 6e 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |ion.X | |
|000052d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000052e0| 69 66 20 79 6f 75 20 6b | 6e 6f 77 20 68 6f 77 20 |if you k|now how |
|000052f0| 74 6f 20 69 6e 74 65 72 | 70 72 65 74 20 69 74 20 |to inter|pret it |
|00005300| 2a 2f 0a 58 0a 58 2f 2a | 20 6c 6f 63 6b 5f 73 75 |*/.X.X/*| lock_su|
|00005310| 70 70 6f 72 74 20 76 61 | 6c 75 65 73 20 2a 2f 0a |pport va|lues */.|
|00005320| 58 23 64 65 66 69 6e 65 | 20 4c 43 4b 5f 52 45 43 |X#define| LCK_REC|
|00005330| 4f 52 44 20 20 20 20 20 | 20 31 0a 58 23 64 65 66 |ORD | 1.X#def|
|00005340| 69 6e 65 20 4c 43 4b 5f | 53 48 41 52 45 44 20 20 |ine LCK_|SHARED |
|00005350| 20 20 20 20 32 0a 58 23 | 64 65 66 69 6e 65 20 4c | 2.X#|define L|
|00005360| 43 4b 5f 45 58 43 4c 55 | 53 49 56 45 20 20 20 34 |CK_EXCLU|SIVE 4|
|00005370| 0a 58 23 64 65 66 69 6e | 65 20 4c 43 4b 5f 4e 4f |.X#defin|e LCK_NO|
|00005380| 5f 42 4c 4f 43 4b 20 20 | 20 20 38 0a 58 0a 58 23 |_BLOCK | 8.X.X#|
|00005390| 69 66 6e 64 65 66 20 6c | 6f 63 6b 5f 65 72 72 6e |ifndef l|ock_errn|
|000053a0| 6f 0a 58 65 78 74 65 72 | 6e 20 69 6e 74 20 6c 6f |o.Xexter|n int lo|
|000053b0| 63 6b 5f 65 72 72 6e 6f | 3b 0a 58 65 78 74 65 72 |ck_errno|;.Xexter|
|000053c0| 6e 20 69 6e 74 20 6c 6f | 63 6b 5f 73 75 70 70 6f |n int lo|ck_suppo|
|000053d0| 72 74 3b 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 23 |rt;.X#en|dif.X.X#|
|000053e0| 69 66 6e 64 65 66 20 6f | 66 66 5f 74 0a 58 23 64 |ifndef o|ff_t.X#d|
|000053f0| 65 66 69 6e 65 20 6f 66 | 66 5f 74 20 6c 6f 6e 67 |efine of|f_t long|
|00005400| 0a 58 23 64 65 66 69 6e | 65 20 52 4d 5f 4f 46 46 |.X#defin|e RM_OFF|
|00005410| 5f 54 5f 44 45 46 0a 58 | 23 65 6e 64 69 66 0a 58 |_T_DEF.X|#endif.X|
|00005420| 23 69 66 64 65 66 20 50 | 52 4f 54 4f 54 59 50 45 |#ifdef P|ROTOTYPE|
|00005430| 53 5f 4f 4b 0a 58 69 6e | 74 20 6c 6f 63 6b 5f 72 |S_OK.Xin|t lock_r|
|00005440| 65 63 6f 72 64 5f 73 68 | 61 72 65 64 5f 77 61 69 |ecord_sh|ared_wai|
|00005450| 74 28 69 6e 74 20 66 64 | 2c 20 6f 66 66 5f 74 20 |t(int fd|, off_t |
|00005460| 6f 66 66 73 65 74 2c 20 | 6f 66 66 5f 74 20 6c 65 |offset, |off_t le|
|00005470| 6e 29 3b 0a 58 69 6e 74 | 20 6c 6f 63 6b 5f 72 65 |n);.Xint| lock_re|
|00005480| 63 6f 72 64 5f 65 78 63 | 6c 75 73 69 76 65 5f 77 |cord_exc|lusive_w|
|00005490| 61 69 74 28 69 6e 74 20 | 66 64 2c 20 6f 66 66 5f |ait(int |fd, off_|
|000054a0| 74 20 6f 66 66 73 65 74 | 2c 20 6f 66 66 5f 74 20 |t offset|, off_t |
|000054b0| 6c 65 6e 29 3b 0a 58 69 | 6e 74 20 6c 6f 63 6b 5f |len);.Xi|nt lock_|
|000054c0| 72 65 63 6f 72 64 5f 73 | 68 61 72 65 64 5f 6e 6f |record_s|hared_no|
|000054d0| 77 61 69 74 28 69 6e 74 | 20 66 64 2c 20 6f 66 66 |wait(int| fd, off|
|000054e0| 5f 74 20 6f 66 66 73 65 | 74 2c 20 6f 66 66 5f 74 |_t offse|t, off_t|
|000054f0| 20 6c 65 6e 29 3b 0a 58 | 69 6e 74 20 6c 6f 63 6b | len);.X|int lock|
|00005500| 5f 72 65 63 6f 72 64 5f | 65 78 63 6c 75 73 69 76 |_record_|exclusiv|
|00005510| 65 5f 6e 6f 77 61 69 74 | 28 69 6e 74 20 66 64 2c |e_nowait|(int fd,|
|00005520| 20 6f 66 66 5f 74 20 6f | 66 66 73 65 74 2c 20 6f | off_t o|ffset, o|
|00005530| 66 66 5f 74 20 6c 65 6e | 29 3b 0a 58 69 6e 74 20 |ff_t len|);.Xint |
|00005540| 75 6e 6c 6f 63 6b 5f 72 | 65 63 6f 72 64 28 69 6e |unlock_r|ecord(in|
|00005550| 74 20 66 64 2c 20 6f 66 | 66 5f 74 20 6f 66 66 73 |t fd, of|f_t offs|
|00005560| 65 74 2c 20 6f 66 66 5f | 74 20 6c 65 6e 29 3b 0a |et, off_|t len);.|
|00005570| 58 69 6e 74 20 6c 6f 63 | 6b 5f 66 69 6c 65 5f 73 |Xint loc|k_file_s|
|00005580| 68 61 72 65 64 5f 77 61 | 69 74 28 69 6e 74 20 66 |hared_wa|it(int f|
|00005590| 64 29 3b 0a 58 69 6e 74 | 20 6c 6f 63 6b 5f 66 69 |d);.Xint| lock_fi|
|000055a0| 6c 65 5f 65 78 63 6c 75 | 73 69 76 65 5f 77 61 69 |le_exclu|sive_wai|
|000055b0| 74 28 69 6e 74 20 66 64 | 29 3b 0a 58 69 6e 74 20 |t(int fd|);.Xint |
|000055c0| 6c 6f 63 6b 5f 66 69 6c | 65 5f 73 68 61 72 65 64 |lock_fil|e_shared|
|000055d0| 5f 6e 6f 77 61 69 74 28 | 69 6e 74 20 66 64 29 3b |_nowait(|int fd);|
|000055e0| 0a 58 69 6e 74 20 6c 6f | 63 6b 5f 66 69 6c 65 5f |.Xint lo|ck_file_|
|000055f0| 65 78 63 6c 75 73 69 76 | 65 5f 6e 6f 77 61 69 74 |exclusiv|e_nowait|
|00005600| 28 69 6e 74 20 66 64 29 | 3b 0a 58 69 6e 74 20 75 |(int fd)|;.Xint u|
|00005610| 6e 6c 6f 63 6b 5f 66 69 | 6c 65 28 69 6e 74 20 66 |nlock_fi|le(int f|
|00005620| 64 29 3b 0a 58 23 65 6c | 73 65 0a 58 69 6e 74 20 |d);.X#el|se.Xint |
|00005630| 6c 6f 63 6b 5f 72 65 63 | 6f 72 64 5f 73 68 61 72 |lock_rec|ord_shar|
|00005640| 65 64 5f 77 61 69 74 28 | 29 3b 0a 58 69 6e 74 20 |ed_wait(|);.Xint |
|00005650| 6c 6f 63 6b 5f 72 65 63 | 6f 72 64 5f 65 78 63 6c |lock_rec|ord_excl|
|00005660| 75 73 69 76 65 5f 77 61 | 69 74 28 29 3b 0a 58 69 |usive_wa|it();.Xi|
|00005670| 6e 74 20 6c 6f 63 6b 5f | 72 65 63 6f 72 64 5f 73 |nt lock_|record_s|
|00005680| 68 61 72 65 64 5f 6e 6f | 77 61 69 74 28 29 3b 0a |hared_no|wait();.|
|00005690| 58 69 6e 74 20 6c 6f 63 | 6b 5f 72 65 63 6f 72 64 |Xint loc|k_record|
|000056a0| 5f 65 78 63 6c 75 73 69 | 76 65 5f 6e 6f 77 61 69 |_exclusi|ve_nowai|
|000056b0| 74 28 29 3b 0a 58 69 6e | 74 20 75 6e 6c 6f 63 6b |t();.Xin|t unlock|
|000056c0| 5f 72 65 63 6f 72 64 28 | 29 3b 0a 58 69 6e 74 20 |_record(|);.Xint |
|000056d0| 6c 6f 63 6b 5f 66 69 6c | 65 5f 73 68 61 72 65 64 |lock_fil|e_shared|
|000056e0| 5f 77 61 69 74 28 29 3b | 0a 58 69 6e 74 20 6c 6f |_wait();|.Xint lo|
|000056f0| 63 6b 5f 66 69 6c 65 5f | 65 78 63 6c 75 73 69 76 |ck_file_|exclusiv|
|00005700| 65 5f 77 61 69 74 28 29 | 3b 0a 58 69 6e 74 20 6c |e_wait()|;.Xint l|
|00005710| 6f 63 6b 5f 66 69 6c 65 | 5f 73 68 61 72 65 64 5f |ock_file|_shared_|
|00005720| 6e 6f 77 61 69 74 28 29 | 3b 0a 58 69 6e 74 20 6c |nowait()|;.Xint l|
|00005730| 6f 63 6b 5f 66 69 6c 65 | 5f 65 78 63 6c 75 73 69 |ock_file|_exclusi|
|00005740| 76 65 5f 6e 6f 77 61 69 | 74 28 29 3b 0a 58 69 6e |ve_nowai|t();.Xin|
|00005750| 74 20 75 6e 6c 6f 63 6b | 5f 66 69 6c 65 28 29 3b |t unlock|_file();|
|00005760| 0a 58 23 65 6e 64 69 66 | 0a 58 0a 58 23 69 66 64 |.X#endif|.X.X#ifd|
|00005770| 65 66 20 52 4d 5f 4f 46 | 46 5f 54 5f 44 45 46 0a |ef RM_OF|F_T_DEF.|
|00005780| 58 23 20 75 6e 64 65 66 | 20 6f 66 66 5f 74 0a 58 |X# undef| off_t.X|
|00005790| 23 65 6e 64 69 66 0a 45 | 4e 44 5f 4f 46 5f 46 49 |#endif.E|ND_OF_FI|
|000057a0| 4c 45 0a 69 66 20 74 65 | 73 74 20 31 36 38 37 20 |LE.if te|st 1687 |
|000057b0| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 27 6c 6f 63 |-ne `wc |-c <'loc|
|000057c0| 6b 2d 66 69 6c 65 2e 68 | 27 60 3b 20 74 68 65 6e |k-file.h|'`; then|
|000057d0| 0a 20 20 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |. ech|o shar: |
|000057e0| 5c 22 27 6c 6f 63 6b 2d | 66 69 6c 65 2e 68 27 5c |\"'lock-|file.h'\|
|000057f0| 22 20 75 6e 70 61 63 6b | 65 64 20 77 69 74 68 20 |" unpack|ed with |
|00005800| 77 72 6f 6e 67 20 73 69 | 7a 65 21 0a 66 69 0a 23 |wrong si|ze!.fi.#|
|00005810| 20 65 6e 64 20 6f 66 20 | 27 6c 6f 63 6b 2d 66 69 | end of |'lock-fi|
|00005820| 6c 65 2e 68 27 0a 66 69 | 0a 69 66 20 74 65 73 74 |le.h'.fi|.if test|
|00005830| 20 2d 66 20 27 6c 6f 63 | 6b 2d 66 69 6c 65 2e 6d | -f 'loc|k-file.m|
|00005840| 61 6e 27 20 2d 61 20 22 | 24 7b 31 7d 22 20 21 3d |an' -a "|${1}" !=|
|00005850| 20 22 2d 63 22 20 3b 20 | 74 68 65 6e 20 0a 20 20 | "-c" ; |then . |
|00005860| 65 63 68 6f 20 73 68 61 | 72 3a 20 57 69 6c 6c 20 |echo sha|r: Will |
|00005870| 6e 6f 74 20 63 6c 6f 62 | 62 65 72 20 65 78 69 73 |not clob|ber exis|
|00005880| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 27 6c 6f 63 |ting fil|e \"'loc|
|00005890| 6b 2d 66 69 6c 65 2e 6d | 61 6e 27 5c 22 0a 65 6c |k-file.m|an'\".el|
|000058a0| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|000058b0| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 6c 6f 63 6b |tracting| \"'lock|
|000058c0| 2d 66 69 6c 65 2e 6d 61 | 6e 27 5c 22 20 5c 28 33 |-file.ma|n'\" \(3|
|000058d0| 35 39 39 20 63 68 61 72 | 61 63 74 65 72 73 5c 29 |599 char|acters\)|
|000058e0| 0a 73 65 64 20 22 73 2f | 5e 58 2f 2f 22 20 3e 27 |.sed "s/|^X//" >'|
|000058f0| 6c 6f 63 6b 2d 66 69 6c | 65 2e 6d 61 6e 27 20 3c |lock-fil|e.man' <|
|00005900| 3c 27 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 27 0a 58 |<'END_OF|_FILE'.X|
|00005910| 2e 09 5c 22 09 2d 2a 2d | 20 6e 72 6f 66 66 20 2d |..\".-*-| nroff -|
|00005920| 2a 2d 0a 58 2e 54 48 20 | 4c 4f 43 4b 2d 46 49 4c |*-.X.TH |LOCK-FIL|
|00005930| 45 20 33 20 22 6c 6f 63 | 61 6c 22 0a 58 2e 53 48 |E 3 "loc|al".X.SH|
|00005940| 20 4e 41 4d 45 0a 58 6c | 6f 63 6b 2d 66 69 6c 65 | NAME.Xl|ock-file|
|00005950| 20 5c 2d 20 69 6d 70 6c | 65 6d 65 6e 74 61 74 69 | \- impl|ementati|
|00005960| 6f 6e 20 69 6e 64 65 70 | 65 6e 64 65 6e 74 20 66 |on indep|endent f|
|00005970| 69 6c 65 20 6c 6f 63 6b | 69 6e 67 20 70 72 69 6d |ile lock|ing prim|
|00005980| 69 74 69 76 65 73 0a 58 | 2e 53 48 20 53 59 4e 4f |itives.X|.SH SYNO|
|00005990| 50 53 49 53 0a 58 2e 50 | 50 0a 58 23 69 6e 63 6c |PSIS.X.P|P.X#incl|
|000059a0| 75 64 65 20 3c 6c 6f 63 | 6b 2d 66 69 6c 65 2e 68 |ude <loc|k-file.h|
|000059b0| 3e 0a 58 2e 50 50 0a 58 | 2e 42 20 69 6e 74 20 6c |>.X.PP.X|.B int l|
|000059c0| 6f 63 6b 5f 72 65 63 6f | 72 64 5f 73 68 61 72 65 |ock_reco|rd_share|
|000059d0| 64 5f 77 61 69 74 28 66 | 64 2c 20 6f 66 66 73 65 |d_wait(f|d, offse|
|000059e0| 74 2c 20 6c 65 6e 29 0a | 58 2e 50 50 0a 58 2e 42 |t, len).|X.PP.X.B|
|000059f0| 20 69 6e 74 20 6c 6f 63 | 6b 5f 72 65 63 6f 72 64 | int loc|k_record|
|00005a00| 5f 65 78 63 6c 75 73 69 | 76 65 5f 77 61 69 74 28 |_exclusi|ve_wait(|
|00005a10| 66 64 2c 20 6f 66 66 73 | 65 74 2c 20 6c 65 6e 29 |fd, offs|et, len)|
|00005a20| 0a 58 2e 50 50 0a 58 2e | 42 20 69 6e 74 20 6c 6f |.X.PP.X.|B int lo|
|00005a30| 63 6b 5f 72 65 63 6f 72 | 64 5f 73 68 61 72 65 64 |ck_recor|d_shared|
|00005a40| 5f 6e 6f 77 61 69 74 28 | 66 64 2c 20 6f 66 66 73 |_nowait(|fd, offs|
|00005a50| 65 74 2c 20 6c 65 6e 29 | 0a 58 2e 50 50 0a 58 2e |et, len)|.X.PP.X.|
|00005a60| 42 20 69 6e 74 20 6c 6f | 63 6b 5f 72 65 63 6f 72 |B int lo|ck_recor|
|00005a70| 64 5f 65 78 63 6c 75 73 | 69 76 65 5f 6e 6f 77 61 |d_exclus|ive_nowa|
|00005a80| 69 74 28 66 64 2c 20 6f | 66 66 73 65 74 2c 20 6c |it(fd, o|ffset, l|
|00005a90| 65 6e 29 0a 58 2e 50 50 | 0a 58 2e 42 20 69 6e 74 |en).X.PP|.X.B int|
|00005aa0| 20 75 6e 6c 6f 63 6b 5f | 72 65 63 6f 72 64 28 66 | unlock_|record(f|
|00005ab0| 64 2c 20 6f 66 66 73 65 | 74 2c 20 6c 65 6e 29 0a |d, offse|t, len).|
|00005ac0| 58 2e 50 50 0a 58 2e 42 | 20 69 6e 74 20 6c 6f 63 |X.PP.X.B| int loc|
|00005ad0| 6b 5f 66 69 6c 65 5f 73 | 68 61 72 65 64 5f 77 61 |k_file_s|hared_wa|
|00005ae0| 69 74 28 66 64 29 0a 58 | 2e 50 50 0a 58 2e 42 20 |it(fd).X|.PP.X.B |
|00005af0| 69 6e 74 20 6c 6f 63 6b | 5f 66 69 6c 65 5f 65 78 |int lock|_file_ex|
|00005b00| 63 6c 75 73 69 76 65 5f | 77 61 69 74 28 66 64 29 |clusive_|wait(fd)|
|00005b10| 0a 58 2e 50 50 0a 58 2e | 42 20 69 6e 74 20 6c 6f |.X.PP.X.|B int lo|
|00005b20| 63 6b 5f 66 69 6c 65 5f | 73 68 61 72 65 64 5f 6e |ck_file_|shared_n|
|00005b30| 6f 77 61 69 74 28 66 64 | 29 0a 58 2e 50 50 0a 58 |owait(fd|).X.PP.X|
|00005b40| 2e 42 20 69 6e 74 20 6c | 6f 63 6b 5f 66 69 6c 65 |.B int l|ock_file|
|00005b50| 5f 65 78 63 6c 75 73 69 | 76 65 5f 6e 6f 77 61 69 |_exclusi|ve_nowai|
|00005b60| 74 28 66 64 29 0a 58 2e | 50 50 0a 58 2e 42 20 69 |t(fd).X.|PP.X.B i|
|00005b70| 6e 74 20 75 6e 6c 6f 63 | 6b 5f 66 69 6c 65 28 66 |nt unloc|k_file(f|
|00005b80| 64 29 0a 58 2e 53 48 20 | 44 45 53 43 52 49 50 54 |d).X.SH |DESCRIPT|
|00005b90| 49 4f 4e 0a 58 2e 50 50 | 0a 58 54 68 65 73 65 20 |ION.X.PP|.XThese |
|00005ba0| 61 72 65 20 63 6f 6e 76 | 65 6e 69 65 6e 63 65 20 |are conv|enience |
|00005bb0| 72 6f 75 74 69 6e 65 73 | 20 77 68 69 63 68 20 69 |routines| which i|
|00005bc0| 6d 70 6c 65 6d 65 6e 74 | 20 66 69 6c 65 20 6c 6f |mplement| file lo|
|00005bd0| 63 6b 69 6e 67 20 69 6e | 20 73 74 61 6e 64 61 72 |cking in| standar|
|00005be0| 64 0a 58 77 61 79 73 20 | 72 65 67 61 72 64 6c 65 |d.Xways |regardle|
|00005bf0| 73 73 20 6f 66 20 74 68 | 65 20 6d 65 74 68 6f 64 |ss of th|e method|
|00005c00| 20 73 65 6c 65 63 74 65 | 64 20 77 69 74 68 69 6e | selecte|d within|
|00005c10| 20 74 68 65 20 70 61 72 | 74 69 63 75 6c 61 72 20 | the par|ticular |
|00005c20| 6f 70 65 72 61 74 69 6e | 67 0a 58 73 79 73 74 65 |operatin|g.Xsyste|
|00005c30| 6d 2e 0a 58 2e 50 50 0a | 58 4e 6f 74 65 3a 20 66 |m..X.PP.|XNote: f|
|00005c40| 6f 72 20 72 65 63 6f 72 | 64 20 6c 6f 63 6b 73 2c |or recor|d locks,|
|00005c50| 20 74 68 65 20 63 75 72 | 72 65 6e 74 20 66 69 6c | the cur|rent fil|
|00005c60| 65 20 70 6f 73 69 74 69 | 6f 6e 20 69 73 20 63 68 |e positi|on is ch|
|00005c70| 61 6e 67 65 64 20 74 6f | 20 74 68 65 0a 58 62 65 |anged to| the.Xbe|
|00005c80| 67 69 6e 6e 69 6e 67 20 | 6f 66 20 74 68 65 20 6c |ginning |of the l|
|00005c90| 6f 63 6b 65 64 20 72 65 | 67 69 6f 6e 2e 20 20 46 |ocked re|gion. F|
|00005ca0| 6f 72 20 77 68 6f 6c 65 | 20 66 69 6c 65 20 6c 6f |or whole| file lo|
|00005cb0| 63 6b 73 2c 20 74 68 65 | 20 63 75 72 72 65 6e 74 |cks, the| current|
|00005cc0| 20 66 69 6c 65 0a 58 70 | 6f 73 69 74 69 6f 6e 20 | file.Xp|osition |
|00005cd0| 69 73 20 6e 6f 74 20 63 | 68 61 6e 67 65 64 2e 0a |is not c|hanged..|
|00005ce0| 58 2e 50 50 0a 58 49 6e | 20 6f 72 64 65 72 20 74 |X.PP.XIn| order t|
|00005cf0| 6f 20 75 73 65 20 62 75 | 66 66 65 72 65 64 20 69 |o use bu|ffered i|
|00005d00| 2f 6f 2c 20 79 6f 75 20 | 68 61 76 65 20 74 6f 20 |/o, you |have to |
|00005d10| 6f 70 65 6e 20 74 68 65 | 20 66 69 6c 65 20 75 73 |open the| file us|
|00005d20| 69 6e 67 20 6f 70 65 6e | 28 29 2c 0a 58 66 64 6f |ing open|(),.Xfdo|
|00005d30| 70 65 6e 28 29 20 74 6f | 20 67 65 74 20 61 20 46 |pen() to| get a F|
|00005d40| 49 4c 45 20 2a 2c 20 61 | 6e 64 20 74 68 65 6e 20 |ILE *, a|nd then |
|00005d50| 66 66 6c 75 73 68 20 70 | 72 69 6f 72 20 74 6f 20 |fflush p|rior to |
|00005d60| 72 65 6c 65 61 73 69 6e | 67 20 6c 6f 63 6b 73 2e |releasin|g locks.|
|00005d70| 0a 58 2e 50 50 0a 58 49 | 6e 20 61 6c 6c 20 63 61 |.X.PP.XI|n all ca|
|00005d80| 73 65 73 2c 20 74 68 65 | 20 70 61 72 61 6d 65 74 |ses, the| paramet|
|00005d90| 65 72 73 20 61 72 65 3a | 0a 58 2e 49 50 0a 58 2e |ers are:|.X.IP.X.|
|00005da0| 42 20 66 64 0a 58 5c 2d | 20 69 6e 74 20 5c 2d 20 |B fd.X\-| int \- |
|00005db0| 66 69 6c 65 20 64 65 73 | 63 72 69 70 74 6f 72 0a |file des|criptor.|
|00005dc0| 58 2e 49 50 0a 58 2e 42 | 20 6f 66 66 73 65 74 20 |X.IP.X.B| offset |
|00005dd0| 0a 58 5c 2d 20 6f 66 66 | 5f 74 20 5c 2d 20 6f 66 |.X\- off|_t \- of|
|00005de0| 66 73 65 74 20 66 72 6f | 6d 20 74 68 65 20 62 65 |fset fro|m the be|
|00005df0| 67 69 6e 6e 69 6e 67 20 | 6f 66 20 66 69 6c 65 20 |ginning |of file |
|00005e00| 74 6f 20 62 65 67 69 6e | 20 6c 6f 63 6b 69 6e 67 |to begin| locking|
|00005e10| 20 72 65 67 69 6f 6e 2e | 0a 58 2e 49 50 0a 58 2e | region.|.X.IP.X.|
|00005e20| 42 20 6c 65 6e 0a 58 5c | 2d 20 6f 66 66 5f 74 20 |B len.X\|- off_t |
|00005e30| 5c 2d 20 6c 65 6e 67 74 | 68 20 6f 66 20 6c 6f 63 |\- lengt|h of loc|
|00005e40| 6b 65 64 20 72 65 67 69 | 6f 6e 2e 0a 58 2e 50 50 |ked regi|on..X.PP|
|00005e50| 0a 58 54 68 65 20 66 75 | 6e 63 74 69 6f 6e 73 20 |.XThe fu|nctions |
|00005e60| 64 6f 20 77 68 61 74 20 | 74 68 65 69 72 20 6e 61 |do what |their na|
|00005e70| 6d 65 73 20 73 61 79 20 | 74 68 61 74 20 74 68 65 |mes say |that the|
|00005e80| 79 20 64 6f 2e 0a 58 2e | 50 50 0a 58 41 6c 6c 20 |y do..X.|PP.XAll |
|00005e90| 66 75 6e 63 74 69 6f 6e | 73 20 72 65 74 75 72 6e |function|s return|
|00005ea0| 20 30 20 69 66 20 73 75 | 63 63 65 73 73 66 75 6c | 0 if su|ccessful|
|00005eb0| 2c 20 2d 31 20 69 66 20 | 74 68 65 20 72 65 71 75 |, -1 if |the requ|
|00005ec0| 65 73 74 65 64 20 6c 6f | 63 6b 20 77 6f 75 6c 64 |ested lo|ck would|
|00005ed0| 0a 58 62 6c 6f 63 6b 2c | 20 61 6e 64 20 2d 32 20 |.Xblock,| and -2 |
|00005ee0| 6f 6e 20 66 61 69 6c 75 | 72 65 2e 20 20 54 68 65 |on failu|re. The|
|00005ef0| 79 20 73 65 74 20 74 68 | 65 0a 58 2e 42 20 65 78 |y set th|e.X.B ex|
|00005f00| 74 65 72 6e 20 69 6e 74 | 20 6c 6f 63 6b 5f 65 72 |tern int| lock_er|
|00005f10| 72 6e 6f 0a 58 61 73 20 | 66 6f 6c 6c 6f 77 73 3a |rno.Xas |follows:|
|00005f20| 0a 58 2e 73 70 0a 58 2e | 54 53 0a 58 62 6f 78 20 |.X.sp.X.|TS.Xbox |
|00005f30| 74 61 62 28 3b 29 20 3b | 0a 58 63 20 6c 20 6c 0a |tab(;) ;|.Xc l l.|
|00005f40| 58 6e 20 6c 20 6c 2e 0a | 58 52 65 74 20 43 6f 64 |Xn l l..|XRet Cod|
|00005f50| 65 3b 6c 6f 63 6b 5f 65 | 72 72 6e 6f 20 56 61 6c |e;lock_e|rrno Val|
|00005f60| 75 65 3b 49 6e 74 65 72 | 70 72 65 74 61 74 69 6f |ue;Inter|pretatio|
|00005f70| 6e 0a 58 5f 0a 58 30 3b | 4c 43 4b 5f 4f 4b 3b 72 |n.X_.X0;|LCK_OK;r|
|00005f80| 65 71 75 65 73 74 65 64 | 20 6c 6f 63 6b 20 69 6d |equested| lock im|
|00005f90| 70 6c 65 6d 65 6e 74 65 | 64 0a 58 2d 31 3b 4c 43 |plemente|d.X-1;LC|
|00005fa0| 4b 5f 42 4c 4f 43 4b 3b | 74 68 65 20 72 65 71 75 |K_BLOCK;|the requ|
|00005fb0| 65 73 74 65 64 20 6c 6f | 63 6b 20 77 61 73 20 62 |ested lo|ck was b|
|00005fc0| 6c 6f 63 6b 65 64 0a 58 | 2d 32 3b 4c 43 4b 5f 42 |locked.X|-2;LCK_B|
|00005fd0| 41 44 46 44 3b 66 64 20 | 69 73 20 6e 6f 74 20 61 |ADFD;fd |is not a|
|00005fe0| 20 76 61 6c 69 64 20 66 | 69 6c 65 20 64 65 73 63 | valid f|ile desc|
|00005ff0| 72 69 70 74 6f 72 0a 58 | 2d 32 3b 4c 43 4b 5f 44 |riptor.X|-2;LCK_D|
|00006000| 45 41 44 4c 4f 43 4b 3b | 64 65 61 64 6c 6f 63 6b |EADLOCK;|deadlock|
|00006010| 20 77 61 73 20 64 65 74 | 65 63 74 65 64 0a 58 2d | was det|ected.X-|
|00006020| 32 3b 4c 43 4b 5f 49 4e | 54 52 3b 20 61 6e 20 69 |2;LCK_IN|TR; an i|
|00006030| 6e 74 65 72 72 75 70 74 | 20 6f 63 63 75 72 72 65 |nterrupt| occurre|
|00006040| 64 20 77 68 69 63 68 20 | 61 62 6f 72 74 65 64 20 |d which |aborted |
|00006050| 74 68 65 20 73 79 73 74 | 65 6d 20 63 61 6c 6c 0a |the syst|em call.|
|00006060| 58 2d 32 3b 4c 43 4b 5f | 4f 54 48 45 52 3b 73 6f |X-2;LCK_|OTHER;so|
|00006070| 6d 65 20 6f 74 68 65 72 | 20 65 72 72 6f 72 20 2d |me other| error -|
|00006080| 20 65 72 72 6e 6f 20 6d | 61 79 20 67 69 76 65 20 | errno m|ay give |
|00006090| 6d 6f 72 65 20 69 6e 66 | 6f 72 6d 61 74 69 6f 6e |more inf|ormation|
|000060a0| 0a 58 3b 3b 69 66 20 79 | 6f 75 20 6b 6e 6f 77 20 |.X;;if y|ou know |
|000060b0| 68 6f 77 20 74 6f 20 69 | 6e 74 65 72 70 72 65 74 |how to i|nterpret|
|000060c0| 20 69 74 0a 58 2e 54 45 | 0a 58 2e 50 50 0a 58 53 | it.X.TE|.X.PP.XS|
|000060d0| 69 6e 63 65 20 61 6c 6c | 20 6c 6f 63 6b 69 6e 67 |ince all| locking|
|000060e0| 20 73 63 68 65 6d 65 73 | 20 61 72 65 20 6e 6f 74 | schemes| are not|
|000060f0| 20 65 71 75 61 6c 2c 20 | 73 6f 6d 65 20 6f 66 20 | equal, |some of |
|00006100| 74 68 65 20 66 75 6e 63 | 74 69 6f 6e 61 6c 69 74 |the func|tionalit|
|00006110| 79 0a 58 65 78 70 65 63 | 74 65 64 20 6f 66 20 74 |y.Xexpec|ted of t|
|00006120| 68 65 73 65 20 72 6f 75 | 74 69 6e 65 73 20 69 73 |hese rou|tines is|
|00006130| 20 6e 6f 74 20 69 6d 70 | 6c 65 6d 65 6e 74 65 64 | not imp|lemented|
|00006140| 2e 20 20 46 6f 72 20 65 | 78 61 6d 70 6c 65 2c 20 |. For e|xample, |
|00006150| 6c 6f 63 6b 66 28 29 0a | 58 73 74 79 6c 65 20 6c |lockf().|Xstyle l|
|00006160| 6f 63 6b 69 6e 67 20 64 | 6f 65 73 20 6e 6f 74 20 |ocking d|oes not |
|00006170| 73 75 70 70 6f 72 74 20 | 73 68 61 72 65 64 20 6c |support |shared l|
|00006180| 6f 63 6b 73 2c 20 6e 6f | 72 20 64 6f 65 73 20 69 |ocks, no|r does i|
|00006190| 74 20 73 75 70 70 6f 72 | 74 0a 58 6c 6f 63 6b 69 |t suppor|t.Xlocki|
|000061a0| 6e 67 20 77 69 74 68 6f | 75 74 20 77 72 69 74 65 |ng witho|ut write|
|000061b0| 20 70 65 72 6d 69 73 73 | 69 6f 6e 20 6f 6e 20 74 | permiss|ion on t|
|000061c0| 68 65 20 6e 61 6d 65 64 | 20 66 69 6c 65 2e 20 20 |he named| file. |
|000061d0| 54 68 65 20 72 6f 75 74 | 69 6e 65 73 2c 0a 58 6c |The rout|ines,.Xl|
|000061e0| 6f 63 6b 5f 2e 2e 2e 5f | 73 68 61 72 65 64 2e 2e |ock_..._|shared..|
|000061f0| 2e 28 29 20 72 6f 75 74 | 69 6e 65 73 20 73 74 69 |.() rout|ines sti|
|00006200| 6c 6c 20 61 74 74 65 6d | 70 74 20 74 6f 20 6c 6f |ll attem|pt to lo|
|00006210| 63 6b 2c 20 62 75 74 20 | 62 79 20 70 72 6f 6d 6f |ck, but |by promo|
|00006220| 74 69 6e 67 0a 58 74 6f | 20 65 78 63 6c 75 73 69 |ting.Xto| exclusi|
|00006230| 76 65 20 6c 6f 63 6b 73 | 2e 20 20 53 65 65 0a 58 |ve locks|. See.X|
|00006240| 2e 42 20 42 55 47 53 0a | 58 62 65 6c 6f 77 20 66 |.B BUGS.|Xbelow f|
|00006250| 6f 72 20 64 65 74 61 69 | 6c 73 2e 20 20 54 77 6f |or detai|ls. Two|
|00006260| 20 76 61 6c 75 65 73 20 | 61 72 65 20 64 65 66 69 | values |are defi|
|00006270| 6e 65 64 20 69 6e 20 6f | 72 64 65 72 20 74 6f 20 |ned in o|rder to |
|00006280| 64 65 74 65 72 6d 69 6e | 65 20 74 68 65 0a 58 66 |determin|e the.Xf|
|00006290| 65 61 74 75 72 65 73 20 | 79 6f 75 20 61 63 74 75 |eatures |you actu|
|000062a0| 61 6c 6c 79 20 68 61 76 | 65 3a 20 74 68 65 0a 58 |ally hav|e: the.X|
|000062b0| 2e 42 20 69 6e 74 20 6c | 6f 63 6b 5f 73 75 70 70 |.B int l|ock_supp|
|000062c0| 6f 72 74 0a 58 61 6e 64 | 20 74 68 65 20 73 74 72 |ort.Xand| the str|
|000062d0| 69 6e 67 0a 58 2e 42 20 | 6c 6f 63 6b 69 6e 67 5f |ing.X.B |locking_|
|000062e0| 73 74 79 6c 65 2e 0a 58 | 2e 42 20 6c 6f 63 6b 69 |style..X|.B locki|
|000062f0| 6e 67 5f 73 74 79 6c 65 | 0a 58 70 6f 69 6e 74 73 |ng_style|.Xpoints|
|00006300| 20 74 6f 20 61 20 73 74 | 72 69 6e 67 20 6f 66 20 | to a st|ring of |
|00006310| 74 68 65 20 66 6f 72 6d | 20 60 60 66 63 6e 74 6c |the form| ``fcntl|
|00006320| 20 73 74 79 6c 65 20 66 | 69 6c 65 20 6c 6f 63 6b | style f|ile lock|
|00006330| 69 6e 67 27 27 2e 20 20 | 54 68 65 0a 58 76 61 6c |ing''. |The.Xval|
|00006340| 75 65 20 6f 66 0a 58 2e | 42 20 6c 6f 63 6b 5f 73 |ue of.X.|B lock_s|
|00006350| 75 70 70 6f 72 74 0a 58 | 69 73 20 74 68 65 20 62 |upport.X|is the b|
|00006360| 69 74 77 69 73 65 20 4f | 52 20 6f 66 3a 0a 58 2e |itwise O|R of:.X.|
|00006370| 73 70 0a 58 2e 54 53 0a | 58 62 6f 78 20 74 61 62 |sp.X.TS.|Xbox tab|
|00006380| 28 3b 29 3b 0a 58 6c 20 | 6e 20 6c 2e 0a 58 44 65 |(;);.Xl |n l..XDe|
|00006390| 66 69 6e 65 3b 56 61 6c | 75 65 3b 49 6e 74 65 72 |fine;Val|ue;Inter|
|000063a0| 70 72 65 74 61 74 69 6f | 6e 0a 58 5f 0a 58 4c 43 |pretatio|n.X_.XLC|
|000063b0| 4b 5f 52 45 43 4f 52 44 | 3b 31 3b 52 65 63 6f 72 |K_RECORD|;1;Recor|
|000063c0| 64 20 4c 6f 63 6b 69 6e | 67 20 73 75 70 70 6f 72 |d Lockin|g suppor|
|000063d0| 74 65 64 0a 58 4c 43 4b | 5f 53 48 41 52 45 44 3b |ted.XLCK|_SHARED;|
|000063e0| 32 3b 53 68 61 72 65 64 | 20 6c 6f 63 6b 73 20 73 |2;Shared| locks s|
|000063f0| 75 70 70 6f 72 74 65 64 | 0a 58 4c 43 4b 5f 45 58 |upported|.XLCK_EX|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.