*** build/Makefile.def.dist Wed Nov 30 13:04:52 1994 --- build/Makefile.def Tue Apr 11 21:24:01 1995 *************** *** 8,13 **** --- 8,21 ---- SCRIPTS = req-mailgate req-operation reqshow q req-autoreply \ reqglimpse reqtail req-daily req-subject req-status LIBS = req-mailadt + # + # Use this next line if you don't need to add an extra library to get ftime() + # + EXT_LIBS = + # + # Use this next line if you do (e.g., on NetBSD, etc.) + # + #EXT_LIBS = -lcompat MANPAGES = req-nextnum.1 req.1 q.1 getdate.1 status.1 reqshow.1 \ req-mailgate.1 req-subject.1 reqtail.1 reqglimpse.1 reqstat.1 *************** *** 49,61 **** # Getdate getdate: getdate.c y.tab.c ! cc -O -o getdate getdate.c y.tab.c y.tab.c: ../src/getdate.y yacc ../src/getdate.y ../src/getdate.c: ! @/bin/true # =========================================================================== --- 57,69 ---- # Getdate getdate: getdate.c y.tab.c ! cc -O -o getdate getdate.c y.tab.c ${EXT_LIBS} y.tab.c: ../src/getdate.y yacc ../src/getdate.y ../src/getdate.c: ! @/usr/bin/true # =========================================================================== *** utils/extract.dist Wed Nov 30 13:04:51 1994 --- utils/extract Tue Apr 4 22:38:16 1995 *************** *** 59,65 **** @keys = keys(%def); while(<>) { ! if (/@{.*}/) { foreach $k (@keys) { $_ =~ s/@\{$k\}/$def{$k}/; } --- 59,65 ---- @keys = keys(%def); while(<>) { ! if (/@\{.*}/) { foreach $k (@keys) { $_ =~ s/@\{$k\}/$def{$k}/; } *** interfaces/tkreq-1.10/tkreq.def.dist Tue Nov 29 22:01:54 1994 --- interfaces/tkreq-1.10/tkreq.def Tue Apr 4 22:59:03 1995 *************** *** 377,382 **** --- 377,473 ---- } + # procedure to show window ShowWindow.filterarea + proc ShowWindow.filterarea { args} { + # xf ignore me 7 + + # build widget .filterarea + if {"[info procs XFEdit]" != ""} { + catch "XFDestroy .filterarea" + } { + catch "destroy .filterarea" + } + toplevel .filterarea + + # Window manager configurations + global tkVersion + wm positionfrom .filterarea program + wm sizefrom .filterarea user + wm maxsize .filterarea 275 160 + wm minsize .filterarea 275 160 + wm title .filterarea {Filter Area...} + + + # build widget .filterarea.frame3 + frame .filterarea.frame3 -borderwidth {2} -relief {raised} + + # build widget .filterarea.frame3.entry6 + entry .filterarea.frame3.entry6 -exportselection {0} -font {variable} -relief {sunken} + # bindings + bind .filterarea.frame3.entry6 {DestroyWindow.filterarea} + bind .filterarea.frame3.entry6 {set filterArea [[SN filterArea] get] + DestroyWindow.filterarea + if {$filterArea == ""} { + set filterArea "any" + if {$optionRescan} doScan + }} + + # build widget .filterarea.frame3.label5 + label .filterarea.frame3.label5 -font {variable} -text {Name:} -width {9} + + # pack widget .filterarea.frame3 + pack append .filterarea.frame3 .filterarea.frame3.label5 {left frame e expand} .filterarea.frame3.entry6 {left frame w expand} + + # build widget .filterarea.frame4 + frame .filterarea.frame4 -borderwidth {2} -relief {raised} + + # build widget .filterarea.frame4.button8 + button .filterarea.frame4.button8 -command {DestroyWindow.filterarea} -font {variable} -height {2} -text {Cancel} -width {12} + + # build widget .filterarea.frame4.frame9 + frame .filterarea.frame4.frame9 -borderwidth {2} -relief {sunken} + + # build widget .filterarea.frame4.frame9.button7 + button .filterarea.frame4.frame9.button7 -command {set filterArea [[SN filterArea] get] + DestroyWindow.filterarea + if {$filterArea == ""} { + set filterArea "any" + if {$optionRescan} doScan + }} -font {variable} -height {2} -text {Filter} -width {12} + + # pack widget .filterarea.frame4.frame9 + pack append .filterarea.frame4.frame9 .filterarea.frame4.frame9.button7 {left frame center padx 12 pady 12 expand} + + # pack widget .filterarea.frame4 + pack append .filterarea.frame4 .filterarea.frame4.frame9 {right frame center expand} .filterarea.frame4.button8 {right frame center expand} + + # pack widget .filterarea + pack append .filterarea .filterarea.frame3 {top frame center expand fill} .filterarea.frame4 {top frame center expand fill} + + .filterarea.frame3.entry6 insert end {} + + + + if {"[info procs XFEdit]" != ""} { + catch "XFMiscBindWidgetTree .filterarea" + after 2 "catch {XFEditSetShowWindows}" + } + } + + proc DestroyWindow.filterarea {} {# xf ignore me 7 + if {"[info procs XFEdit]" != ""} { + if {"[info commands .filterarea]" != ""} { + global xfShowWindow.filterarea + set xfShowWindow.filterarea 0 + XFEditSetPath . + after 2 "XFSaveAsProc .filterarea; XFEditSetShowWindows" + } + } { + catch "destroy .filterarea" + update + } + } + # procedure to show window ShowWindow.giveto proc ShowWindow.giveto { args} { # xf ignore me 7 *************** *** 1107,1114 **** -activeborderwidth {2} \ -font {variable} .frame0.menubutton1.m add command \ ! -command {doScan ! } \ -label {Rescan Requests} \ -underline {0} .frame0.menubutton1.m add separator --- 1198,1204 ---- -activeborderwidth {2} \ -font {variable} .frame0.menubutton1.m add command \ ! -command {doScan} \ -label {Rescan Requests} \ -underline {0} .frame0.menubutton1.m add separator *************** *** 1140,1145 **** --- 1230,1239 ---- -label {Status} \ -menu {.frame0.menubutton19.m.menu2} \ -underline {0} + .frame0.menubutton19.m add cascade \ + -label {Area} \ + -menu {.frame0.menubutton19.m.menu4} \ + -underline {0} # build widget .frame0.menubutton19.m.m menu .frame0.menubutton19.m.m \ *************** *** 1244,1249 **** --- 1338,1389 ---- bind .frame0.menubutton19.m.menu2 {MenuPopupMotion .frame0.menubutton19.m.menu2 %W %X %Y} bind .frame0.menubutton19.m.menu2 {MenuPopupRelease .frame0.menubutton19.m.menu2 %W} + # build widget .frame0.menubutton19.m.menu4 + menu .frame0.menubutton19.m.menu4 \ + -activeborderwidth {2} \ + -font {variable} + .frame0.menubutton19.m.menu4 add radiobutton \ + -command {if {$optionRescan} doScan} \ + -label {Any} \ + -value {any} \ + -variable {filterArea} \ + -underline {0} + .frame0.menubutton19.m.menu4 add separator + .frame0.menubutton19.m.menu4 add radiobutton \ + -command {if {$optionRescan} doScan} \ + -label {UNIX} \ + -value {UNIX} \ + -variable {filterArea} \ + -underline {0} + .frame0.menubutton19.m.menu4 add radiobutton \ + -command {if {$optionRescan} doScan} \ + -label {Not UNIX} \ + -value {Not_UNIX} \ + -variable {filterArea} \ + -underline {0} + .frame0.menubutton19.m.menu4 add radiobutton \ + -command {if {$optionRescan} doScan} \ + -label {VMS} \ + -value {VMS} \ + -variable {filterArea} \ + -underline {0} + .frame0.menubutton19.m.menu4 add radiobutton \ + -command {if {$optionRescan} doScan} \ + -label {Not VMS} \ + -value {Not_VMS} \ + -variable {filterArea} \ + -underline {0} + .frame0.menubutton19.m.menu4 add separator + .frame0.menubutton19.m.menu4 add command \ + -command {ShowWindow.filterarea + focus [SN filterArea] + grab .filterarea} \ + -label {Other...} \ + -underline {0} + # bindings + bind .frame0.menubutton19.m.menu4 {MenuPopupMotion .frame0.menubutton19.m.menu4 %W %X %Y} + bind .frame0.menubutton19.m.menu4 {MenuPopupRelease .frame0.menubutton19.m.menu4 %W} + # build widget .frame0.menubutton2 menubutton .frame0.menubutton2 \ -font {variable} \ *************** *** 1302,1307 **** --- 1442,1451 ---- -label {Set Priority} \ -menu {.frame0.menubutton0.m.m1} \ -underline {4} + .frame0.menubutton0.m add cascade \ + -label {Set Area} \ + -menu {.frame0.menubutton0.m.m2} \ + -underline {4} .frame0.menubutton0.m add command \ -command {prepMerge} \ -label {Merge...} \ *************** *** 1348,1353 **** --- 1492,1514 ---- -variable {reqPrio} \ -underline {0} + # build widget .frame0.menubutton0.m.m2 + menu .frame0.menubutton0.m.m2 \ + -activeborderwidth {2} \ + -font {variable} + .frame0.menubutton0.m.m2 add radiobutton \ + -command {modArea} \ + -label {VMS} \ + -value {VMS} \ + -variable {reqArea} \ + -underline {0} + .frame0.menubutton0.m.m2 add radiobutton \ + -command {modArea} \ + -label {UNIX} \ + -value {UNIX} \ + -variable {reqArea} \ + -underline {0} + # build widget .frame0.menubutton4 menubutton .frame0.menubutton4 \ -font {variable} \ *************** *** 1505,1516 **** --- 1666,1702 ---- -variable {reqPrio} \ -underline {0} + # build widget .frame10.menubutton4 + menubutton .frame10.menubutton4 \ + -font {variable} \ + -menu {.frame10.menubutton4.m} \ + -relief {raised} \ + -text {Area} + + # build widget .frame10.menubutton4.m + menu .frame10.menubutton4.m \ + -activeborderwidth {2} \ + -font {variable} + .frame10.menubutton4.m add radiobutton \ + -command {modArea} \ + -label {VMS} \ + -value {VMS} \ + -variable {reqArea} \ + -underline {0} + .frame10.menubutton4.m add radiobutton \ + -command {modArea} \ + -label {UNIX} \ + -value {UNIX} \ + -variable {reqArea} \ + -underline {0} + # pack widget .frame10 pack append .frame10 \ .frame10.button11 {left frame center padx 32 pady 10 expand fill} \ .frame10.button12 {left frame center padx 32 pady 10 expand fill} \ .frame10.button14 {left frame center padx 32 pady 10 expand fill} \ .frame10.menubutton2 {left frame center padx 32 pady 10 expand fill} \ + .frame10.menubutton4 {left frame center padx 32 pady 10 expand fill} \ .frame10.button15 {left frame center padx 32 pady 10 expand fill} \ .frame10.button16 {left frame center padx 32 pady 10 expand fill} *************** *** 2605,2610 **** --- 2791,2797 ---- global filterPrio global filterOwned global filterOwner + global filterArea global filterStatus if {$viewQueue == "resolved"} { *************** *** 2646,2651 **** --- 2833,2846 ---- "other" {set own "-owner $filterOwner"} } + switch $filterArea { + "any" {set area ""} + "VMS" {set area "-area VMS"} + "UNIX" {set area "-area UNIX"} + "Not_UNIX" {set area "-area VMS"} + "Not_VMS" {set area "-area UNIX"} + } + if {$filterStatus == "any"} { set status "" } else { *************** *** 2654,2660 **** set l [SN reqList] set num 0 ! set f [open "| $CONF_bin_q $queue $show $active $reverse $prio $status $own" r] gets $f; gets $f while {! [eof $f] && [set line [gets $f]] != ""} { $l insert end $line --- 2849,2855 ---- set l [SN reqList] set num 0 ! set f [open "| $CONF_bin_q $queue $show $active $reverse $prio $status $own $area" r] gets $f; gets $f while {! [eof $f] && [set line [gets $f]] != ""} { $l insert end $line *************** *** 2670,2676 **** set note "$num filtered requests" } ! setStatus "$note: $filterPrio priority, owned by $filterOwner, $filterStatus status." } --- 2865,2871 ---- set note "$num filtered requests" } ! setStatus "$note: $filterPrio priority, owned by $filterOwner, $filterArea area, $filterStatus status." } *************** *** 2838,2843 **** --- 3033,3053 ---- } } + # Procedure: modArea + proc modArea {} { + global reqNum + global reqArea + + if {[checknum $reqNum]} { + set reqArea 0 + return + } + + if {[doReq "-area $reqNum $reqArea"]} { + set reqArea 0 + } + } + # Procedure: prepComments proc prepComments {} { *************** *** 3797,3802 **** --- 4007,4014 ---- set {filterPrio} {default} global {filterStatus} set {filterStatus} {any} + global {filterArea} + set {filterArea} {any} global {fsBox} set {fsBox(activeBackground)} {} set {fsBox(activeForeground)} {} *************** *** 3873,3878 **** --- 4085,4091 ---- set {symbolicName(fileName)} {.frame1.label5} set {symbolicName(filterMenu)} {.frame0.menubutton19} set {symbolicName(filterOwner)} {.filterowner.frame3.entry6} + set {symbolicName(filterArea)} {.filterarea.frame3.entry6} set {symbolicName(giveToBox)} {.giveto} set {symbolicName(giveToEntry)} {.giveto.frame3.entry6} set {symbolicName(helpMenu)} {.frame0.menubutton2} *************** *** 3910,3915 **** --- 4123,4131 ---- global xfShowWindow.filterowner set xfShowWindow.filterowner 0 + + global xfShowWindow.filterarea + set xfShowWindow.filterarea 0 global xfShowWindow.giveto set xfShowWindow.giveto 0 *** src/q.dist Wed Nov 30 13:04:55 1994 --- src/q Tue Apr 4 22:18:26 1995 *************** *** 33,40 **** $reverse = 0; $do_merged = 0; $prio_match = ".*"; $status_match = ".*"; ! $owner_match = "^.*$"; $owner_changed = 0; $user_match = ".*"; $see_all = 1; --- 33,41 ---- $reverse = 0; $do_merged = 0; $prio_match = ".*"; + $area_match = ".*"; $status_match = ".*"; ! $owner_match = "^.*\$"; $owner_changed = 0; $user_match = ".*"; $see_all = 1; *************** *** 51,57 **** print STDERR "unable to get your login name"; exit(1); } ! $user_match = "^$user$"; $^ = statustop; $~ = status; if(($top == $bottom) != 0) { --- 52,58 ---- print STDERR "unable to get your login name"; exit(1); } ! $user_match = "^$user\$"; $^ = statustop; $~ = status; if(($top == $bottom) != 0) { *************** *** 103,108 **** --- 104,110 ---- $sub{$f} = &get_header("subject"); $date{$f} = &get_header("x-request-date"); $noti{$f} = &get_header("x-request-notified"); + $area{$f} = &get_header("x-request-areas"); if($req{$f} =~ /<(.*)>/) { $req{$f} = $1; *************** *** 115,120 **** --- 117,123 ---- next if($stat{$f} !~ /$status_match/); next if($own{$f} !~ /$owner_match/); next if($req{$f} !~ /$user_match/); + next if($area{$f} !~ /$area_match/); ($subject{$f} = $sub{$f}) =~ s:@{PERL_TAGLINE_COMPARE}\s*::; *************** *** 309,314 **** --- 312,328 ---- $no_low = 0; next; } + if($ARGV[$i] eq "-area") { + if($area_match eq "any") { + $area_match = ".*"; + } else { + $area_match = $area_changed ? "^$ARGV[++$i]\$|$area_match" + : "^$ARGV[++$i]\$" ; + } + $area_changed = 1; + $no_low = 0; + next; + } if($ARGV[$i] =~ "^-op") { $status_match = "open"; next; *************** *** 319,328 **** print STDERR "unable to get your login name"; exit(1); } ! $owner_match = "^$owner_match$"; } else { $owner_match = $owner_changed ? "^$ARGV[++$i]\$|$owner_match" ! : "^$ARGV[++$i]$" ; $owner_changed = 1; next; } --- 333,342 ---- print STDERR "unable to get your login name"; exit(1); } ! $owner_match = "^$owner_match\$"; } else { $owner_match = $owner_changed ? "^$ARGV[++$i]\$|$owner_match" ! : "^$ARGV[++$i]\$" ; $owner_changed = 1; next; } *************** *** 337,343 **** } if($ARGV[$i] =~ "^-un") { $owner_match = $owner_changed ? "^\\s*\$|$owner_match" ! : "^\\s*$" ; $owner_changed = 1; next; } --- 351,357 ---- } if($ARGV[$i] =~ "^-un") { $owner_match = $owner_changed ? "^\\s*\$|$owner_match" ! : "^\\s*\$" ; $owner_changed = 1; next; } *************** *** 373,378 **** --- 387,393 ---- print " -t prints most recently modified requests first\n"; print " -prio all prints all of them regardless of priority\n"; print " -prio prints all whose priority match \n"; + print " -area prints all whose request area match \n"; print " -owner [] prints all requests owned by \n"; print " -user prints all requests made by \n"; print " -open prints only the open requests\n"; *** src/req-mailgate.dist Wed Nov 30 13:05:00 1994 --- src/req-mailgate Tue Apr 4 22:21:25 1995 *************** *** 351,358 **** # Argh, sometimes regexps just don't do what you want them to. # if(!(&header_matches_i($header, "$non_word$value$non_word") || ! &header_matches_i($header, "$non_word$value$") || ! &header_matches_i($header, "^$value$") || &header_matches_i($header, "^$value$non_word"))) { &header_add($header, $value); } --- 351,358 ---- # Argh, sometimes regexps just don't do what you want them to. # if(!(&header_matches_i($header, "$non_word$value$non_word") || ! &header_matches_i($header, "$non_word$value\$") || ! &header_matches_i($header, "^$value\$") || &header_matches_i($header, "^$value$non_word"))) { &header_add($header, $value); } *************** *** 561,570 **** # regexp -> command # ($regexp, $command) = split("->"); ! $regexp =~ s:^\s*(\S.*)$:\1:; # Strip off bounding whitespace ! $regexp =~ s:^(.*\S)\s*$:\1:; ! $command =~ s:^\s*(\S.*)$:\1:; ! $command =~ s:^(.*\S)\s*$:\1:; &debug("found $regexp, $command\n"); --- 561,570 ---- # regexp -> command # ($regexp, $command) = split("->"); ! $regexp =~ s:^\s*(\S.*)$:$1:; # Strip off bounding whitespace ! $regexp =~ s:^(.*\S)\s*$:$1:; ! $command =~ s:^\s*(\S.*)$:$1:; ! $command =~ s:^(.*\S)\s*$:$1:; &debug("found $regexp, $command\n"); *** src/req-operation.dist Wed Nov 30 13:04:57 1994 --- src/req-operation Tue Apr 11 20:33:35 1995 *************** *** 54,59 **** --- 54,60 ---- elsif ($mode eq "kill" ) { &run_kill($num, $caller); } elsif ($mode eq "comment") { &run_comment($num, $input, $caller); } elsif ($mode eq "subject") { &run_subject($num, $newsubj, $caller); } + elsif ($mode eq "area" ) { &run_area($num, $newarea, $caller); } elsif ($mode eq "merge" ) { &run_merge($num, $newnum, $caller); } elsif ($mode eq "show" ) { &run_show($num, $caller); } else {&usage();} *************** *** 117,122 **** --- 118,124 ---- $input = "-"; $recipient = ""; $newsubj = ""; + $newarea = ""; $newnum = 0; $do_logging = @{CONFIG_DO_LOGGING}; *************** *** 141,146 **** --- 143,149 ---- print " $program [-d] -user [file]\n"; print " $program [-d] -comment \n"; print " $program [-d] -subject \"\"\n"; + print " $program [-d] -area \"\"\n"; print " $program [-d] -prio \n"; print " $program [-d] -notify [file]\n"; print " $program [-d] -merge (num1 into num2)\n"; *************** *** 239,244 **** --- 242,254 ---- $mode = "subject"; return; } + if($ARGV[0] eq "-area") { + if($#ARGV != 2) { &usage; exit 0; } + $num = $ARGV[1]; + $newarea = $ARGV[2]; + $mode = "area"; + return; + } if($ARGV[0] eq "-prio") { if($#ARGV > 3 || $#ARGV < 2) { &usage; exit 0; } $num = $ARGV[1]; *************** *** 527,533 **** &set_header("X-Request-Updated:", $date); &set_header("X-Request-Notified:", ""); &set_header("X-Request-Keywords:", ""); ! &set_header("X-Request-Areas:", ""); } --- 537,543 ---- &set_header("X-Request-Updated:", $date); &set_header("X-Request-Notified:", ""); &set_header("X-Request-Keywords:", ""); ! &set_header("X-Request-Areas:", $newarea); } *************** *** 728,733 **** --- 738,777 ---- &append_actions("X-Request-Action: Subject changed to \"$subject\" by $caller."); } + # =========================================================================== + # area routines + # =========================================================================== + + sub run_area { + local($num, $area, $caller)= @_; + local(@mailto, $line); + + ($active_file, $resolved_file) = &prep_file($num, $caller); + + if(&active_request($active_file)) { + &do_area($active_file, $caller, $area); + print "Area of $num set to \"$area\".\n"; + } else { + print "There isn't a request number $num.\n"; + &quit_and_die(); + } + + &write_file($active_file); + &unlock($active_file); + &print_comment("area changed", $caller); + } + + + sub do_area { + local($file, $caller, $area) = @_; + local($owner, @mailto); + + &read_file($file); + + &set_header("X-Request-Areas", $area); + &set_header("X-Request-Updated:", $date); + &append_actions("X-Request-Action: Area changed to \"$area\" by $caller."); + } # =========================================================================== # Merge routines *************** *** 1287,1293 **** # many lines of To: fields, for example. # local(*FILE) = @_; ! local($i, $prvious_header); @file_header = (); while() { --- 1331,1337 ---- # many lines of To: fields, for example. # local(*FILE) = @_; ! local($i, $previous_header); @file_header = (); while() { *************** *** 1304,1309 **** --- 1348,1354 ---- $file_header{$previous_header} .= $file_header[$i]; } } + &dump_header() if ($debug); } *************** *** 1370,1376 **** # =========================================================================== sub append_header { ! for $line (@_) { $line =~ s:\n*$::; push(@file_header, "$line\n"); } --- 1415,1423 ---- # =========================================================================== sub append_header { ! local($args) = @_; ! ! for $line ($args) { $line =~ s:\n*$::; push(@file_header, "$line\n"); } *************** *** 1384,1390 **** sub append_contents { ! for $line (@_) { $line =~ s:\n*$::; push(@file_contents, "$line\n"); } --- 1431,1439 ---- sub append_contents { ! local($args) = @_; ! ! for $line ($args) { $line =~ s:\n*$::; push(@file_contents, "$line\n"); } *************** *** 1392,1398 **** sub append_actions { ! for $line (@_) { $line =~ s:\n*$::; push(@file_actions, "$line\n"); } --- 1441,1449 ---- sub append_actions { ! local($args) = @_; ! ! for $line ($args) { $line =~ s:\n*$::; push(@file_actions, "$line\n"); } *************** *** 1400,1406 **** sub append_additions { ! for $line (@_) { $line =~ s:\n*$::; push(@file_additions, "$line\n"); } --- 1451,1459 ---- sub append_additions { ! local(@args) = @_; ! ! for $line (@args) { $line =~ s:\n*$::; push(@file_additions, "$line\n"); } *************** *** 1858,1863 **** --- 1911,1918 ---- local($reason) = @_; &unlock_all(); + &append_additions("\n"); + &append_additions($reason); &write_file($error_file); die $reason; } *************** *** 1893,1899 **** return(++$locked{$file}); } ! do { while(-f "$file.lock") { print "$file.lock exists\n" if ($debug); if(++$i >= $maxtries) { --- 1948,1954 ---- return(++$locked{$file}); } ! while($1 != $$) { while(-f "$file.lock") { print "$file.lock exists\n" if ($debug); if(++$i >= $maxtries) { *************** *** 1915,1921 **** =~ /process (\d+) on/; close(FOO); ! } while($1 != $$); return(1); } --- 1970,1976 ---- =~ /process (\d+) on/; close(FOO); ! } return(1); } *** src/req-mailadt.dist Wed Nov 30 13:04:59 1994 --- src/req-mailadt Tue Apr 4 22:29:09 1995 *************** *** 229,237 **** for $r (@index) { push(@v, $header_data[$r]); } - return(@v); } ! return (); } --- 229,236 ---- for $r (@index) { push(@v, $header_data[$r]); } } ! @v; } *** src/req-nextnum.c.dist Wed Nov 30 13:04:57 1994 --- src/req-nextnum.c Tue Apr 4 22:32:19 1995 *************** *** 37,42 **** --- 37,45 ---- #include #include #include + #ifdef __NetBSD__ + #include + #endif #define NUMFILE "@{CODE_CURRENTNUM}" #define FILESIZE 1024 *************** *** 110,116 **** --- 113,123 ---- } /* Lock the dang thing. As if we trusted UNIX file locking. */ + #ifndef __NetBSD__ if(lockf(fd, F_LOCK, 0)) { + #else + if(flock(fd, LOCK_EX)) { + #endif printf("no-lock-file\n"); exit(1); } *************** *** 201,207 **** --- 208,218 ---- unlockfile(fd) int fd; { + #ifndef __NetBSD__ if(lockf(fd, F_ULOCK, 0)) { + #else + if(flock(fd, LOCK_UN)) { + #endif printf("no-unlock-file\n"); exit(1); } *** src/req.1.dist Wed Nov 30 13:04:56 1994 --- src/req.1 Tue Apr 4 22:51:48 1995 *************** *** 245,251 **** Currently unused. .TP .B X-Request-Areas: ! Currently unused. .TP .B X-Request-Merged: The only header in a request that has been merged into another. It --- 245,255 ---- Currently unused. .TP .B X-Request-Areas: ! This is a header that allows you to group requests by "area". This provides ! a further method of filtration; e.g., you could assign some requests to the ! .I VMS area and the remainder to the ! .I UNIX ! area, if your requests neatly divide into these two categories. .TP .B X-Request-Merged: The only header in a request that has been merged into another. It