Update of /cvsroot/fink/experimental/beren12/finkinfo/utils
In directory usw-pr-cvs1:/tmp/cvs-serv32168
Modified Files:
menu-2.1.5-1.info menu-2.1.5-1.patch
Log Message:
almost there...need to adapt regex stuff :-/
Index: menu-2.1.5-1.info
===================================================================
RCS file: /cvsroot/fink/experimental/beren12/finkinfo/utils/menu-2.1.5-1.info,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- menu-2.1.5-1.info 20 Aug 2002 20:56:19 -0000 1.2
+++ menu-2.1.5-1.info 28 Oct 2002 16:49:05 -0000 1.3
@@ -1,12 +1,13 @@
Package: menu
Version: 2.1.5
Revision: 1
-Source: mirror:debian:pool/main/m/%n/%n_2.1.5-10.2.tar.gz
-SourceRename: %n-%v.tar.gz
+Source: mirror:debian:pool/main/m/%n/%n_2.1.5-14.tar.gz
+SourceRename: %n-%v-14.tar.gz
SourceDirectory: %n-%v
-Source-MD5: 708f19c5941d23d8ee13d8fea3c10e99
+Source-MD5: d73de79a98b47165f1908131ff5d88ae
Patch: %f.patch
Conflicts: pdmenu (<=0.5.9)
+SetLIBS: -lintl
ConfigureParams: --mandir='${prefix}/share/man'
DocFiles: COPYING README AUTHORS ChangeLog NEWS
Description: Provides update-menus functions for some applications
Index: menu-2.1.5-1.patch
===================================================================
RCS file: /cvsroot/fink/experimental/beren12/finkinfo/utils/menu-2.1.5-1.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- menu-2.1.5-1.patch 20 Aug 2002 21:13:05 -0000 1.2
+++ menu-2.1.5-1.patch 28 Oct 2002 16:49:05 -0000 1.3
@@ -1,211 +1,23 @@
-diff -ruN menu-2.1.5/install-menu/hints.cc menu-2.1.5.new/install-menu/hints.cc
---- menu-2.1.5/install-menu/hints.cc Mon Jul 5 16:12:49 1999
-+++ menu-2.1.5.new/install-menu/hints.cc Tue Aug 20 16:45:11 2002
-@@ -124,8 +124,8 @@
- // raw_input_count[i]: records frequency of hint_input[i].
-
- unsigned int i,j;
-- vector <const StrVec>::iterator k;
-- cStrVec::iterator m,l;
-+ vector <StrVec>::const_iterator k;
-+ StrVec::const_iterator m,l;
- map <String, int, less<String> >::iterator hi;
- multimap <int, String, more<int> > fh;
- multimap <int, String, more<int> >::iterator fhi;
-@@ -253,7 +253,7 @@
- }
- }
- ostream& operator<<(ostream &o, const StrVec &s){
-- vector <const String>::iterator i;
-+ vector <String>::const_iterator i;
-
- for(i=s.begin(); i!=s.end(); i++)
- o<<"["<<(*i)<<"]";
-@@ -293,7 +293,7 @@
- void hints::calc_tree(const vector <StrVec > &hint_input,
- vector <StrVec > &hint_output){
-
-- vector <const vector<String> >::iterator i;
-+ vector <vector<String> >::const_iterator i;
-
- raw_count=vector <int> (hint_input.size(), 1);
- hint_list=hint_input;
-@@ -395,7 +395,7 @@
- d.push_back(t);
- }
- if(debugopt){
-- vector<const unsigned int>::iterator j;
-+ vector<unsigned int>::const_iterator j;
- DEBUGGING(cout<<"itt="<<itteration<<" ";)
- cout<<"Adding Division h, p="<<penalty<<" dl.s()= "
- <<division_list.size()<<", h=";
-@@ -545,7 +545,7 @@
- int already_used){
- //try with heuristics to reduce the thinking time
- int raw_total;
-- vector <const int>::iterator i;
-+ vector <int>::const_iterator i;
-
- raw_total=0;
- for(i=raw_input_count.begin(); i!=raw_input_count.end(); i++)
-@@ -648,10 +648,10 @@
- // to (recursively) make a tree from that.
- for(j=0; j<hint_input.size(); j++)
- if(!stored[j]){
-- cStrVec::iterator
-+ StrVec::const_iterator
- b=hint_input[j].begin(),
- e=hint_input[j].end(),
-- f=NULL;
-+ f=e;
- f=find(b, e, key);
- if(f!=e){
- StrVec tmphint;
-@@ -696,7 +696,7 @@
- void hints::search_hint(hint_tree &t,
- const StrVec &hint_in,
- StrVec &hint_out){
-- vector <const String>::iterator j, e,b;
-+ vector <String>::const_iterator j, e,b;
- vector <hint_tree>::iterator c;
- DEBUGGING(bool found=false;)
-
-diff -ruN menu-2.1.5/install-menu/hints.h menu-2.1.5.new/install-menu/hints.h
---- menu-2.1.5/install-menu/hints.h Thu Oct 7 16:50:05 1999
-+++ menu-2.1.5.new/install-menu/hints.h Tue Aug 20 16:45:11 2002
-@@ -15,6 +15,8 @@
- #define DEBUGGING(a) a
- #define CDEBUGGING(a) ,a
-
-+using std::set;
-+using std::map;
-
- extern bool operator< (const set<String> &left,
- const set<String> &right);
-diff -ruN menu-2.1.5/install-menu/menu-tree.cc
menu-2.1.5.new/install-menu/menu-tree.cc
---- menu-2.1.5/install-menu/menu-tree.cc Fri Jul 28 17:53:45 2000
-+++ menu-2.1.5.new/install-menu/menu-tree.cc Tue Aug 20 16:45:11 2002
-@@ -5,8 +5,10 @@
- #include <list>
- #include <set>
-
-+using namespace std;
-+
- bool operator< (const StrVec &left, const StrVec &right){
-- cStrVec::iterator i,j;
-+ StrVec::const_iterator i,j;
-
- for(i=left.begin(), j=right.begin();
- (i!=left.end()) && (j!=right.end());
-@@ -43,7 +45,7 @@
- map <String, String, less<String> >::iterator vj;
- StrVec subs;
- StrVec firstsec;
-- cStrVec::iterator i;
-+ StrVec::iterator i;
- bool use_forced=false;
-
- //there are two ways to store the menuentries in the `tree'
-@@ -121,7 +123,7 @@
- menuentry *m){
- submenu_container::iterator f;
- StrVec subs,firstsec;
-- cStrVec::iterator i;
-+ StrVec::iterator i;
-
- if(s.size()>1){
- for(i=s.begin()+1;i!=s.end(); i++)
-@@ -207,7 +209,7 @@
- that one.
- */
- submenu_container::iterator i,j;
-- cStrVec::iterator k;
-+ StrVec::iterator k;
- unsigned int l;
-
- // Make sure menuhints are empty:
-@@ -239,8 +241,8 @@
-
- void menuentry::process_hints(const StrVec &pref){
- vector <StrVec> hint_list, hint_out;
-- vector <const StrVec>::iterator k,m;
-- cStrVec::iterator l;
-+ vector <StrVec>::iterator k,m;
-+ StrVec::const_iterator l;
- submenu_container::iterator i;
- submenu_container oldsubmenus;
- hints h;
-@@ -249,7 +251,7 @@
- for(i=submenus.begin(); i!=submenus.end(); i++){
- if(((*i).second->vars[COMMAND_VAR]).size()==0){
- StrVec v(pref);
-- cStrVec::iterator j;
-+ StrVec::const_iterator j;
- for(j=(*i).first.begin(); j!=(*i).first.end(); j++)
- v.push_back((*j));
- (*i).second->process_hints(v);
-@@ -325,7 +327,7 @@
- i!=submenus.end();
- index++){
- String title;
-- cStrVec::iterator j;
-+ StrVec::const_iterator j;
-
- i_next=i;
- i_next++;
-diff -ruN menu-2.1.5/update-menus/adstring.cc menu-2.1.5.new/update-menus/adstring.cc
---- menu-2.1.5/update-menus/adstring.cc Mon Apr 3 06:18:52 2000
-+++ menu-2.1.5.new/update-menus/adstring.cc Tue Aug 20 16:45:11 2002
-@@ -251,7 +251,7 @@
- if(pos){
- pos--;
- // buffer.at(pos,1)=String(c);
-- buffer.replace(pos,1,c);
-+ buffer.replace(pos,1,1,c);
- } else
- buffer=c+buffer;
-
-@@ -524,7 +524,7 @@
- string::size_type i;
- for(i=0;i!=s.length();i++)
- if(s[i]==match)
-- s.replace(i,i+1,replace);
-+ s.replace(i,i+1,1,replace);
- return s;
- }
- String sort_hotkey(String str){
-diff -ruN menu-2.1.5/update-menus/adstring.h menu-2.1.5.new/update-menus/adstring.h
---- menu-2.1.5/update-menus/adstring.h Fri Jul 28 17:54:15 2000
-+++ menu-2.1.5.new/update-menus/adstring.h Tue Aug 20 16:45:11 2002
-@@ -19,6 +19,7 @@
-
- #define MAX_LINE 10240
-
-+using std::string;
-
- // ************* String.h replacement code:
- class Regex;
diff -ruN menu-2.1.5/update-menus/lprocbuf.cc menu-2.1.5.new/update-menus/lprocbuf.cc
--- menu-2.1.5/update-menus/lprocbuf.cc Wed Dec 31 19:00:00 1969
-+++ menu-2.1.5.new/update-menus/lprocbuf.cc Tue Aug 20 16:45:11 2002
-@@ -0,0 +1,13 @@
++++ menu-2.1.5.new/update-menus/lprocbuf.cc Mon Oct 28 11:09:59 2002
+@@ -0,0 +1,12 @@
+#include "lprocbuf.h"
+#include <stdio.h>
+
+lprocbuf::lprocbuf(const char *command, std::ios::openmode mode)
-+ : std::filebuf((fp = popen(command, (mode & std::ios::in) ? "r" : "w")), mode)
++ : std::filebuf((fp = popen(command, (mode & std::ios::in) ? "r" : "w"))$
+{
+}
+
+void lprocbuf::close()
-+{
-+ pclose(fp);
++{
++ pclose(fp);
+}
-+
diff -ruN menu-2.1.5/update-menus/lprocbuf.h menu-2.1.5.new/update-menus/lprocbuf.h
--- menu-2.1.5/update-menus/lprocbuf.h Wed Dec 31 19:00:00 1969
-+++ menu-2.1.5.new/update-menus/lprocbuf.h Tue Aug 20 16:45:11 2002
-@@ -0,0 +1,20 @@
++++ menu-2.1.5.new/update-menus/lprocbuf.h Mon Oct 28 11:12:02 2002
+@@ -0,0 +1,21 @@
+#ifndef _LPROCBUF_H
+#define _LPROCBUF_H
+
@@ -223,12 +35,13 @@
+ void close();
+ virtual ~lprocbuf() { close(); }
+};
++
+} // extern "C++"
+
+#endif /* !_LPROCBUF_H */
diff -ruN menu-2.1.5/update-menus/procbuf.h menu-2.1.5.new/update-menus/procbuf.h
--- menu-2.1.5/update-menus/procbuf.h Wed Dec 31 19:00:00 1969
-+++ menu-2.1.5.new/update-menus/procbuf.h Tue Aug 20 16:45:11 2002
++++ menu-2.1.5.new/update-menus/procbuf.h Mon Oct 28 11:13:10 2002
@@ -0,0 +1,14 @@
+#ifndef MENU_PROCBUF_H
+#define MENU_PROCBUF_H
@@ -237,91 +50,592 @@
+
+class procbuf : public std::streambuf {
+public:
-+ void open(const char *, ios::openmode);
-+ void close();
++ void open(const char *, ios::openmode);
++ void close();
++
++
++};
++
++#endif
+diff -ruN menu-2.1.5/update-menus/regex.h menu-2.1.5.new/update-menus/regex.h
+--- menu-2.1.5/update-menus/regex.h Wed Dec 31 19:00:00 1969
++++ menu-2.1.5.new/update-menus/regex.h Mon Oct 28 11:29:36 2002
+@@ -0,0 +1,565 @@
++/* Definitions for data structures and routines for the regular
++ expression library, version 0.12.
++ Copyright (C) 1985,1989-1993,1995-1998, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library. Its master source is NOT part of
++ the C library, however. The master source lives in /gd/gnu/lib.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _REGEX_H
++#define _REGEX_H 1
++
++/* Allow the use in C++ code. */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/* POSIX says that <sys/types.h> must be included (by the caller) before
++ <regex.h>. */
++
++#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS
++/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
++ should be there. */
++# include <stddef.h>
++#endif
++
++/* The following two types have to be signed and unsigned integer type
++ wide enough to hold a value of a pointer. For most ANSI compilers
++ ptrdiff_t and size_t should be likely OK. Still size of these two
++ types is 2 for Microsoft C. Ugh... */
++typedef long int s_reg_t;
++typedef unsigned long int active_reg_t;
++
++/* The following bits are used to determine the regexp syntax we
++ recognize. The set/not-set meanings are chosen so that Emacs syntax
++ remains the value 0. The bits are given in alphabetical order, and
++ the definitions shifted by one from the previous bit; thus, when we
++ add or remove a bit, only one other definition need change. */
++typedef unsigned long int reg_syntax_t;
++
++/* If this bit is not set, then \ inside a bracket expression is literal.
++ If set, then such a \ quotes the following character. */
++#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
++
++/* If this bit is not set, then + and ? are operators, and \+ and \? are
++ literals.
++ If set, then \+ and \? are operators and + and ? are literals. */
++#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
++
++/* If this bit is set, then character classes are supported. They are:
++ [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
++ [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
++ If not set, then character classes are not supported. */
++#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
++
++/* If this bit is set, then ^ and $ are always anchors (outside bracket
++ expressions, of course).
++ If this bit is not set, then it depends:
++ ^ is an anchor if it is at the beginning of a regular
++ expression or after an open-group or an alternation operator;
++ $ is an anchor if it is at the end of a regular expression, or
++ before a close-group or an alternation operator.
++
++ This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
++ POSIX draft 11.2 says that * etc. in leading positions is undefined.
++ We already implemented a previous draft which made those constructs
++ invalid, though, so we haven't changed the code back. */
++#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
++
++/* If this bit is set, then special characters are always special
++ regardless of where they are in the pattern.
++ If this bit is not set, then special characters are special only in
++ some contexts; otherwise they are ordinary. Specifically,
++ * + ? and intervals are only special when not after the beginning,
++ open-group, or alternation operator. */
++#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
++
++/* If this bit is set, then *, +, ?, and { cannot be first in an re or
++ immediately after an alternation or begin-group operator. */
++#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
++
++/* If this bit is set, then . matches newline.
++ If not set, then it doesn't. */
++#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
++
++/* If this bit is set, then . doesn't match NUL.
++ If not set, then it does. */
++#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
++
++/* If this bit is set, nonmatching lists [^...] do not match newline.
++ If not set, they do. */
++#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
++
++/* If this bit is set, either \{...\} or {...} defines an
++ interval, depending on RE_NO_BK_BRACES.
++ If not set, \{, \}, {, and } are literals. */
++#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
++
++/* If this bit is set, +, ? and | aren't recognized as operators.
++ If not set, they are. */
++#define RE_LIMITED_OPS (RE_INTERVALS << 1)
++
++/* If this bit is set, newline is an alternation operator.
++ If not set, newline is literal. */
++#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
++
++/* If this bit is set, then `{...}' defines an interval, and \{ and \}
++ are literals.
++ If not set, then `\{...\}' defines an interval. */
++#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
++
++/* If this bit is set, (...) defines a group, and \( and \) are literals.
++ If not set, \(...\) defines a group, and ( and ) are literals. */
++#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
++
++/* If this bit is set, then \<digit> matches <digit>.
++ If not set, then \<digit> is a back-reference. */
++#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
++
++/* If this bit is set, then | is an alternation operator, and \| is literal.
++ If not set, then \| is an alternation operator, and | is literal. */
++#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
++
++/* If this bit is set, then an ending range point collating higher
++ than the starting range point, as in [z-a], is invalid.
++ If not set, then when ending range point collates higher than the
++ starting range point, the range is ignored. */
++#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
++
++/* If this bit is set, then an unmatched ) is ordinary.
++ If not set, then an unmatched ) is invalid. */
++#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
++
++/* If this bit is set, succeed as soon as we match the whole pattern,
++ without further backtracking. */
++#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
++
++/* If this bit is set, do not process the GNU regex operators.
++ If not set, then the GNU regex operators are recognized. */
++#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
++
++/* If this bit is set, turn on internal regex debugging.
++ If not set, and debugging was on, turn it off.
++ This only works if regex.c is compiled -DDEBUG.
++ We define this bit always, so that all that's needed to turn on
++ debugging is to recompile regex.c; the calling code can always have
++ this bit set, and it won't affect anything in the normal case. */
++#define RE_DEBUG (RE_NO_GNU_OPS << 1)
++
++/* If this bit is set, a syntactically invalid interval is treated as
++ a string of ordinary characters. For example, the ERE 'a{1' is
++ treated as 'a\{1'. */
++#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
++
++/* This global variable defines the particular regexp syntax to use (for
++ some interfaces). When a regexp is compiled, the syntax used is
++ stored in the pattern buffer, so changing this does not affect
++ already-compiled regexps. */
++extern reg_syntax_t re_syntax_options;
++
++/* Define combinations of the above bits for the standard possibilities.
++ (The [[[ comments delimit what gets put into the Texinfo file, so
++ don't delete them!) */
++/* [[[begin syntaxes]]] */
++#define RE_SYNTAX_EMACS 0
++
++#define RE_SYNTAX_AWK \
++ (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
++ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
++ | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
++ | RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \
++ | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
++
++#define RE_SYNTAX_GNU_AWK \
++ ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG) \
++ & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS))
++
++#define RE_SYNTAX_POSIX_AWK \
++ (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \
++ | RE_INTERVALS | RE_NO_GNU_OPS)
++
++#define RE_SYNTAX_GREP \
++ (RE_BK_PLUS_QM | RE_CHAR_CLASSES \
++ | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
++ | RE_NEWLINE_ALT)
++
++#define RE_SYNTAX_EGREP \
++ (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
++ | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
++ | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
++ | RE_NO_BK_VBAR)
++
++#define RE_SYNTAX_POSIX_EGREP \
++ (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES \
++ | RE_INVALID_INTERVAL_ORD)
++
++/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
++#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
++
++#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
++
++/* Syntax bits common to both basic and extended POSIX regex syntax. */
++#define _RE_SYNTAX_POSIX_COMMON \
++ (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
++ | RE_INTERVALS | RE_NO_EMPTY_RANGES)
++
++#define RE_SYNTAX_POSIX_BASIC \
++ (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
++
++/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
++ RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
++ isn't minimal, since other operators, such as \`, aren't disabled. */
++#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
++ (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
++
++#define RE_SYNTAX_POSIX_EXTENDED \
++ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
++ | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
++ | RE_NO_BK_PARENS | RE_NO_BK_VBAR \
++ | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
++
++/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
++ removed and RE_NO_BK_REFS is added. */
++#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
++ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
++ | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
++ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
++ | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
++/* [[[end syntaxes]]] */
++
++/* Maximum number of duplicates an interval can allow. Some systems
++ (erroneously) define this in other header files, but we want our
++ value, so remove any previous define. */
++#ifdef RE_DUP_MAX
++# undef RE_DUP_MAX
++#endif
++/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
++#define RE_DUP_MAX (0x7fff)
++
++
++/* POSIX `cflags' bits (i.e., information for `regcomp'). */
++
++/* If this bit is set, then use extended regular expression syntax.
++ If not set, then use basic regular expression syntax. */
++#define REG_EXTENDED 1
++
++/* If this bit is set, then ignore case when matching.
++ If not set, then case is significant. */
++#define REG_ICASE (REG_EXTENDED << 1)
++
++/* If this bit is set, then anchors do not match at newline
++ characters in the string.
++ If not set, then anchors do match at newlines. */
++#define REG_NEWLINE (REG_ICASE << 1)
++
++/* If this bit is set, then report only success or fail in regexec.
++ If not set, then returns differ between not matching and errors. */
++#define REG_NOSUB (REG_NEWLINE << 1)
++
++
++/* POSIX `eflags' bits (i.e., information for regexec). */
++
++/* If this bit is set, then the beginning-of-line operator doesn't match
++ the beginning of the string (presumably because it's not the
++ beginning of a line).
++ If not set, then the beginning-of-line operator does match the
++ beginning of the string. */
++#define REG_NOTBOL 1
+
++/* Like REG_NOTBOL, except for the end-of-line. */
++#define REG_NOTEOL (1 << 1)
+
++
++/* If any error codes are removed, changed, or added, update the
++ `re_error_msg' table in regex.c. */
++typedef enum
++{
++#ifdef _XOPEN_SOURCE
++ REG_ENOSYS = -1, /* This will never happen for this implementation. */
++#endif
++
++ REG_NOERROR = 0, /* Success. */
++ REG_NOMATCH, /* Didn't find a match (for regexec). */
++
++ /* POSIX regcomp return error codes. (In the order listed in the
++ standard.) */
++ REG_BADPAT, /* Invalid pattern. */
++ REG_ECOLLATE, /* Not implemented. */
++ REG_ECTYPE, /* Invalid character class name. */
++ REG_EESCAPE, /* Trailing backslash. */
++ REG_ESUBREG, /* Invalid back reference. */
++ REG_EBRACK, /* Unmatched left bracket. */
++ REG_EPAREN, /* Parenthesis imbalance. */
++ REG_EBRACE, /* Unmatched \{. */
++ REG_BADBR, /* Invalid contents of \{\}. */
++ REG_ERANGE, /* Invalid range end. */
++ REG_ESPACE, /* Ran out of memory. */
++ REG_BADRPT, /* No preceding re for repetition op. */
++
++ /* Error codes we've added. */
++ REG_EEND, /* Premature end. */
++ REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
++ REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
++} reg_errcode_t;
++
++/* This data structure represents a compiled pattern. Before calling
++ the pattern compiler, the fields `buffer', `allocated', `fastmap',
++ `translate', and `no_sub' can be set. After the pattern has been
++ compiled, the `re_nsub' field is available. All other fields are
++ private to the regex routines. */
++
++#ifndef RE_TRANSLATE_TYPE
++# define RE_TRANSLATE_TYPE char *
++#endif
++
++struct re_pattern_buffer
++{
++/* [[[begin pattern_buffer]]] */
++ /* Space that holds the compiled pattern. It is declared as
++ `unsigned char *' because its elements are
++ sometimes used as array indexes. */
++ unsigned char *buffer;
++
++ /* Number of bytes to which `buffer' points. */
++ unsigned long int allocated;
++
++ /* Number of bytes actually used in `buffer'. */
++ unsigned long int used;
++
++ /* Syntax setting with which the pattern was compiled. */
++ reg_syntax_t syntax;
++
++ /* Pointer to a fastmap, if any, otherwise zero. re_search uses
++ the fastmap, if there is one, to skip over impossible
++ starting points for matches. */
++ char *fastmap;
++
++ /* Either a translate table to apply to all characters before
++ comparing them, or zero for no translation. The translation
++ is applied to a pattern when it is compiled and to a string
++ when it is matched. */
++ RE_TRANSLATE_TYPE translate;
++
++ /* Number of subexpressions found by the compiler. */
++ size_t re_nsub;
++
++ /* Zero if this pattern cannot match the empty string, one else.
++ Well, in truth it's used only in `re_search_2', to see
++ whether or not we should use the fastmap, so we don't set
++ this absolutely perfectly; see `re_compile_fastmap' (the
++ `duplicate' case). */
++ unsigned can_be_null : 1;
++
++ /* If REGS_UNALLOCATED, allocate space in the `regs' structure
++ for `max (RE_NREGS, re_nsub + 1)' groups.
++ If REGS_REALLOCATE, reallocate space if necessary.
++ If REGS_FIXED, use what's there. */
++#define REGS_UNALLOCATED 0
++#define REGS_REALLOCATE 1
++#define REGS_FIXED 2
++ unsigned regs_allocated : 2;
++
++ /* Set to zero when `regex_compile' compiles a pattern; set to one
++ by `re_compile_fastmap' if it updates the fastmap. */
++ unsigned fastmap_accurate : 1;
++
++ /* If set, `re_match_2' does not return information about
++ subexpressions. */
++ unsigned no_sub : 1;
++
++ /* If set, a beginning-of-line anchor doesn't match at the
++ beginning of the string. */
++ unsigned not_bol : 1;
++
++ /* Similarly for an end-of-line anchor. */
++ unsigned not_eol : 1;
++
++ /* If true, an anchor at a newline matches. */
++ unsigned newline_anchor : 1;
++
++/* [[[end pattern_buffer]]] */
++};
++
++typedef struct re_pattern_buffer regex_t;
++
++/* Type for byte offsets within the string. POSIX mandates this. */
++typedef int regoff_t;
++
++
++/* This is the structure we store register match data in. See
++ regex.texinfo for a full description of what registers match. */
++struct re_registers
++{
++ unsigned num_regs;
++ regoff_t *start;
++ regoff_t *end;
+};
+
++
++/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
++ `re_match_2' returns information about at least this many registers
++ the first time a `regs' structure is passed. */
++#ifndef RE_NREGS
++# define RE_NREGS 30
+#endif
++
++
++/* POSIX specification for registers. Aside from the different names than
++ `re_registers', POSIX uses an array of structures, instead of a
++ structure of arrays. */
++typedef struct
++{
++ regoff_t rm_so; /* Byte offset from string's start to substring's start. */
++ regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
++} regmatch_t;
++
++/* Declarations for routines. */
++
++/* To avoid duplicating every routine declaration -- once with a
++ prototype (if we are ANSI), and once without (if we aren't) -- we
++ use the following macro to declare argument types. This
++ unfortunately clutters up the declarations a bit, but I think it's
++ worth it. */
++
++#if __STDC__
++
++# define _RE_ARGS(args) args
++
++#else /* not __STDC__ */
++
++# define _RE_ARGS(args) ()
++
++#endif /* not __STDC__ */
++
++/* Sets the current default syntax to SYNTAX, and return the old syntax.
++ You can also simply assign to the `re_syntax_options' variable. */
++extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
++
++/* Compile the regular expression PATTERN, with length LENGTH
++ and syntax given by the global `re_syntax_options', into the buffer
++ BUFFER. Return NULL if successful, and an error string if not. */
++extern const char *re_compile_pattern
++ _RE_ARGS ((const char *pattern, size_t length,
++ struct re_pattern_buffer *buffer));
++
++
++/* Compile a fastmap for the compiled pattern in BUFFER; used to
++ accelerate searches. Return 0 if successful and -2 if was an
++ internal error. */
++extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
++
++
++/* Search in the string STRING (with length LENGTH) for the pattern
++ compiled into BUFFER. Start searching at position START, for RANGE
++ characters. Return the starting position of the match, -1 for no
++ match, or -2 for an internal error. Also return register
++ information in REGS (if REGS and BUFFER->no_sub are nonzero). */
++extern int re_search
++ _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
++ int length, int start, int range, struct re_registers *regs));
++
++
++/* Like `re_search', but search in the concatenation of STRING1 and
++ STRING2. Also, stop searching at index START + STOP. */
++extern int re_search_2
++ _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
++ int length1, const char *string2, int length2,
++ int start, int range, struct re_registers *regs, int stop));
++
++
++/* Like `re_search', but return how many characters in STRING the regexp
++ in BUFFER matched, starting at position START. */
++extern int re_match
++ _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
++ int length, int start, struct re_registers *regs));
++
++
++/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
++extern int re_match_2
++ _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
++ int length1, const char *string2, int length2,
++ int start, struct re_registers *regs, int stop));
++
++
++/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
++ ENDS. Subsequent matches using BUFFER and REGS will use this memory
++ for recording register information. STARTS and ENDS must be
++ allocated with malloc, and must each be at least `NUM_REGS * sizeof
++ (regoff_t)' bytes long.
++
++ If NUM_REGS == 0, then subsequent matches should allocate their own
++ register data.
++
++ Unless this function is called, the first search or match using
++ PATTERN_BUFFER will allocate its own register data, without
++ freeing the old data. */
++extern void re_set_registers
++ _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
++ unsigned num_regs, regoff_t *starts, regoff_t *ends));
++
++#if defined _REGEX_RE_COMP || defined _LIBC
++# ifndef _CRAY
++/* 4.2 bsd compatibility. */
++extern char *re_comp _RE_ARGS ((const char *));
++extern int re_exec _RE_ARGS ((const char *));
++# endif
++#endif
++
++/* GCC 2.95 and later have "__restrict"; C99 compilers have
++ "restrict", and "configure" may have defined "restrict". */
++#ifndef __restrict
++# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
++# if defined restrict || 199901L <= __STDC_VERSION__
++# define __restrict restrict
++# else
++# define __restrict
++# endif
++# endif
++#endif
++/* For now unconditionally define __restrict_arr to expand to nothing.
++ Ideally we would have a test for the compiler which allows defining
++ it to restrict. */
++#define __restrict_arr
++
++/* POSIX compatibility. */
++extern int regcomp _RE_ARGS ((regex_t *__restrict __preg,
++ const char *__restrict __pattern,
++ int __cflags));
++
++extern int regexec _RE_ARGS ((const regex_t *__restrict __preg,
++ const char *__restrict __string, size_t __nmatch,
++ regmatch_t __pmatch[__restrict_arr],
++ int __eflags));
++
++extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg,
++ char *__errbuf, size_t __errbuf_size));
++
++extern void regfree _RE_ARGS ((regex_t *__preg));
++
++
++#ifdef __cplusplus
++}
++#endif /* C++ */
++
++#endif /* regex.h */
++
++/*
++Local variables:
++make-backup-files: t
++version-control: t
++trim-versions-without-asking: nil
++End:
++*/
diff -ruN menu-2.1.5/update-menus/update-menus.cc
menu-2.1.5.new/update-menus/update-menus.cc
---- menu-2.1.5/update-menus/update-menus.cc Sun Jul 29 09:32:08 2001
-+++ menu-2.1.5.new/update-menus/update-menus.cc Tue Aug 20 17:07:46 2002
-@@ -21,7 +21,13 @@
- #include <signal.h>
+--- menu-2.1.5/update-menus/update-menus.cc Fri Sep 6 12:07:46 2002
++++ menu-2.1.5.new/update-menus/update-menus.cc Mon Oct 28 11:14:41 2002
+@@ -22,6 +22,9 @@
#include <syslog.h>
#include <errno.h>
--#include <procbuf.h>
-+#include "lprocbuf.h"
-+
+
+#ifndef O_SYNC
+#define O_SYNC O_FSYNC
+#endif
-+
-+using namespace std;
-
- int debug=0, verbose=0;
- set <String, less<String> > installed_packages;
-@@ -475,7 +481,6 @@
- vector<String> &menudata){
- bool wrote_filename=false;
- parsestream *i;
-- procbuf pr;
- istream *pipe_istr=NULL;
- int linenr=1;
-
-@@ -483,7 +488,7 @@
- configinfo::report_debug);
- try{
- if(executable(filename)){
-- pr.open(filename.c_str(),ios::in);
-+ lprocbuf pr(filename.c_str(),ios::in);
- pipe_istr=new istream(&pr);
- try{
- i=new parsestream(*pipe_istr);
-@@ -529,7 +534,6 @@
- if(executable(filename)){
- if(pipe_istr)
- delete pipe_istr;
-- pr.close();
- }
- delete i;
- }
-@@ -543,7 +547,7 @@
- int r;
- String name;
- String dummy;
-- cStrVec::iterator method_i;
-+ StrVec::iterator method_i;
- String dirname;
-
- for(method_i=config.menufilesdir.begin();
-@@ -680,6 +684,7 @@
- int create_lock(){
- // return lock fd if succesful, false if unsuccesfull.
- int fd=true;
-+ char pid[20];
-
- if(!getuid()){
- fd=open(UPMEN_LOCKFILE,O_WRONLY|O_CREAT,00644);
-@@ -698,15 +703,17 @@
-
- }
-- ofstream of(fd);
-- of<<getpid();
-- if(!of.good()){
-+ snprintf(pid, sizeof(pid), "%lu", (unsigned long)getpid());
-+
-+ if (0 > write(fd, pid, strlen(pid))) {
-+ close(fd);
- config.report("cannot write to lockfile "
- UPMEN_LOCKFILE". Aborting.",
- configinfo::report_quiet);
- return false;
- }
- }
-+ close(fd);
- return fd;
- }
+ using namespace std;
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Fink-commits mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-commits