aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglarkin <glarkin@FreeBSD.org>2009-11-10 06:28:39 +0800
committerglarkin <glarkin@FreeBSD.org>2009-11-10 06:28:39 +0800
commit1ae9a130d9c20436b46a0d59e5d3f89aedd0aba8 (patch)
treeb386f75d81df0af94014ee6d4467670c9812e71a
parent4190349cb6cee1e1641f26c9682cbe4184aa1fbb (diff)
downloadfreebsd-ports-gnome-1ae9a130d9c20436b46a0d59e5d3f89aedd0aba8.tar.gz
freebsd-ports-gnome-1ae9a130d9c20436b46a0d59e5d3f89aedd0aba8.tar.zst
freebsd-ports-gnome-1ae9a130d9c20436b46a0d59e5d3f89aedd0aba8.zip
- Fix linker errors after recent SQLite3 update. Certain non-public
SQLite3 functions were used by cvstrac, and they were recently made intern, causing the linker errors. See: http://osdir.com/ml/sqlite-users/2009-07/msg00300.html Reported by: pointyhat (pav)
-rw-r--r--devel/cvstrac/files/patch-Makefile6
-rw-r--r--devel/cvstrac/files/patch-cgi.c38
-rw-r--r--devel/cvstrac/files/patch-db.c110
-rw-r--r--devel/cvstrac/files/patch-format.c32
-rw-r--r--devel/cvstrac/files/patch-main.mk11
-rw-r--r--devel/cvstrac/files/patch-search.c32
-rw-r--r--devel/cvstrac/files/patch-view.c20
7 files changed, 237 insertions, 12 deletions
diff --git a/devel/cvstrac/files/patch-Makefile b/devel/cvstrac/files/patch-Makefile
index 1e40f2f7ab18..b216efed9f03 100644
--- a/devel/cvstrac/files/patch-Makefile
+++ b/devel/cvstrac/files/patch-Makefile
@@ -1,5 +1,5 @@
---- Makefile.orig Thu May 8 10:58:17 2003
-+++ Makefile Thu May 8 10:58:32 2003
+--- ./Makefile.orig 2009-11-09 17:15:57.000000000 -0500
++++ ./Makefile 2009-11-09 17:15:57.000000000 -0500
@@ -0,0 +1,34 @@
+#!/usr/bin/make
+#
@@ -21,7 +21,7 @@
+# will run on the target platform. This is usually the same
+# as BCC, unless you are cross-compiling.
+#
-+TCC = gcc -g -O0 -Wall -I$(LOCALBASE)/include -lm
++TCC = gcc -g -O0 -Wall -I$(LOCALBASE)/include
+
+#### Extra arguments for linking against SQLite
+#
diff --git a/devel/cvstrac/files/patch-cgi.c b/devel/cvstrac/files/patch-cgi.c
new file mode 100644
index 000000000000..27fbed390ab8
--- /dev/null
+++ b/devel/cvstrac/files/patch-cgi.c
@@ -0,0 +1,38 @@
+--- ./cgi.c.orig 2006-12-13 19:45:51.000000000 -0500
++++ ./cgi.c 2009-11-09 17:15:57.000000000 -0500
+@@ -57,13 +57,6 @@
+ #endif /* INTERFACE */
+
+ /*
+-** Provide a reliable implementation of a caseless string comparison
+-** function.
+-*/
+-#define stricmp sqlite3StrICmp
+-extern int sqlite3StrICmp(const char*, const char*);
+-
+-/*
+ ** The body of the HTTP reply text is stored here.
+ */
+ static int nAllocTxt = 0; /* Amount of space allocated for HTTP reply text */
+@@ -669,17 +662,17 @@
+ nArg = tokenize_line(zLine, sizeof(azArg)/sizeof(azArg[0]), azArg);
+ for(i=0; i<nArg; i++){
+ int c = tolower(azArg[i][0]);
+- if( c=='c' && stricmp(azArg[i],"content-disposition:")==0 ){
++ if( c=='c' && strcasecmp(azArg[i],"content-disposition:")==0 ){
+ i++;
+- }else if( c=='n' && stricmp(azArg[i],"name=")==0 ){
++ }else if( c=='n' && strcasecmp(azArg[i],"name=")==0 ){
+ zName = azArg[++i];
+- }else if( c=='f' && stricmp(azArg[i],"filename=")==0 ){
++ }else if( c=='f' && strcasecmp(azArg[i],"filename=")==0 ){
+ char *z = azArg[++i];
+ if( zName && z ){
+ cgi_set_parameter_nocopy(mprintf("%s:filename",zName), z);
+ }
+ showBytes = 1;
+- }else if( c=='c' && stricmp(azArg[i],"content-type:")==0 ){
++ }else if( c=='c' && strcasecmp(azArg[i],"content-type:")==0 ){
+ char *z = azArg[++i];
+ if( zName && z ){
+ cgi_set_parameter_nocopy(mprintf("%s:mimetype",zName), z);
diff --git a/devel/cvstrac/files/patch-db.c b/devel/cvstrac/files/patch-db.c
index fff08a241c8d..290a0e378ccb 100644
--- a/devel/cvstrac/files/patch-db.c
+++ b/devel/cvstrac/files/patch-db.c
@@ -1,6 +1,64 @@
---- db.c.orig 2008-05-09 19:34:45.288709828 -0400
-+++ db.c 2008-05-09 19:35:37.495027112 -0400
-@@ -326,7 +326,7 @@
+--- ./db.c.orig 2007-01-28 13:40:07.000000000 -0500
++++ ./db.c 2009-11-09 17:15:57.000000000 -0500
+@@ -125,7 +125,6 @@
+ ** routine NULLs-out fields of the database we do not want arbitrary
+ ** users to see, such as the USER.PASSWD field.
+ */
+-extern int sqlite3StrICmp(const char*, const char*);
+ static int access_authorizer(
+ void *NotUsed,
+ int type,
+@@ -141,34 +140,34 @@
+ return SQLITE_OK;
+ #endif
+ }else if( type==SQLITE_READ ){
+- if( sqlite3StrICmp(zArg1,"user")==0 ){
+- if( sqlite3StrICmp(zArg2,"passwd")==0 || sqlite3StrICmp(zArg2,"email")==0 ){
++ if( strcasecmp(zArg1,"user")==0 ){
++ if( strcasecmp(zArg2,"passwd")==0 || strcasecmp(zArg2,"email")==0 ){
+ return SQLITE_IGNORE;
+ }
+- }else if( sqlite3StrICmp(zArg1, "cookie")==0 ){
++ }else if( strcasecmp(zArg1, "cookie")==0 ){
+ return SQLITE_IGNORE;
+- }else if( sqlite3StrICmp(zArg1, "config")==0 ){
++ }else if( strcasecmp(zArg1, "config")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okSetup && sqlite3StrICmp(zArg1, "access_load")==0 ){
++ }else if( !g.okSetup && strcasecmp(zArg1, "access_load")==0 ){
+ return SQLITE_IGNORE;
+- }else if( (!g.okWrite || g.isAnon) && sqlite3StrICmp(zArg1,"ticket")==0
+- && sqlite3StrICmp(zArg2,"contact")==0){
++ }else if( (!g.okWrite || g.isAnon) && strcasecmp(zArg1,"ticket")==0
++ && strcasecmp(zArg2,"contact")==0){
+ return SQLITE_IGNORE;
+- }else if( !g.okCheckout && sqlite3StrICmp(zArg1,"chng")==0 ){
++ }else if( !g.okCheckout && strcasecmp(zArg1,"chng")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okCheckout && sqlite3StrICmp(zArg1,"filechng")==0 ){
++ }else if( !g.okCheckout && strcasecmp(zArg1,"filechng")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okCheckout && sqlite3StrICmp(zArg1,"file")==0 ){
++ }else if( !g.okCheckout && strcasecmp(zArg1,"file")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okCheckout && sqlite3StrICmp(zArg1,"inspect")==0 ){
++ }else if( !g.okCheckout && strcasecmp(zArg1,"inspect")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okRead && sqlite3StrICmp(zArg1,"ticket")==0 ){
++ }else if( !g.okRead && strcasecmp(zArg1,"ticket")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okRead && sqlite3StrICmp(zArg1,"tktchng")==0 ){
++ }else if( !g.okRead && strcasecmp(zArg1,"tktchng")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okRdWiki && sqlite3StrICmp(zArg1,"attachment")==0 ){
++ }else if( !g.okRdWiki && strcasecmp(zArg1,"attachment")==0 ){
+ return SQLITE_IGNORE;
+- }else if( !g.okRdWiki && sqlite3StrICmp(zArg1,"wiki")==0 ){
++ }else if( !g.okRdWiki && strcasecmp(zArg1,"wiki")==0 ){
+ return SQLITE_IGNORE;
+ }
+ return SQLITE_OK;
+@@ -326,7 +325,7 @@
db_err( zErrMsg ? zErrMsg : sqlite3_errmsg(pDb), zSql,
"db_query: Database query failed" );
}
@@ -9,7 +67,7 @@
if( sResult.azElem==0 ){
db_query_callback(&sResult, 0, 0, 0);
}
-@@ -385,7 +385,7 @@
+@@ -385,7 +384,7 @@
db_err( zErrMsg ? zErrMsg : sqlite3_errmsg(pDb), zSql,
"db_short_query: Database query failed" );
}
@@ -18,7 +76,7 @@
return zResult;
}
-@@ -409,7 +409,7 @@
+@@ -409,7 +408,7 @@
if( rc!=SQLITE_OK ){
db_err(zErrMsg, zSql, "db_execute: Database execute failed");
}
@@ -27,7 +85,7 @@
}
/*
-@@ -448,7 +448,7 @@
+@@ -448,7 +447,7 @@
if( rc!=SQLITE_OK ){
db_err(zErrMsg, zSql, "db_exists: Database exists query failed");
}
@@ -36,7 +94,7 @@
return iResult;
}
-@@ -470,6 +470,7 @@
+@@ -470,6 +469,7 @@
db_restrict_query(1);
rc = sqlite3_exec(pDb, zSql, 0, 0, &zErrMsg);
db_restrict_query(0);
@@ -44,7 +102,7 @@
return (rc!=SQLITE_OK) ? zErrMsg : 0;
}
-@@ -538,7 +539,7 @@
+@@ -538,7 +538,7 @@
db_err(zErrMsg ? zErrMsg : sqlite3_errmsg(pDb), zSql,
"db_callback_query: Database query failed");
}
@@ -53,7 +111,7 @@
}
/*
-@@ -565,7 +566,7 @@
+@@ -565,7 +565,7 @@
db_err(zErrMsg ? zErrMsg : sqlite3_errmsg(pDb), zSql,
"db_callback_execute: Database query failed");
}
@@ -62,3 +120,37 @@
}
/*
+@@ -672,7 +672,6 @@
+ ** name as an argument and returns the value that the user enters in the
+ ** resulting HTML form. A second optional parameter provides a default value.
+ */
+-extern int sqlite3StrICmp(const char*, const char*);
+ static void f_aux(sqlite3_context *context, int argc, sqlite3_value **argv){
+ int i;
+ const char *zParm;
+@@ -682,7 +681,7 @@
+ if( zParm==0 ) return;
+
+ for(i=0; i<g.nAux && g.azAuxName[i]; i++){
+- if( sqlite3StrICmp(zParm,g.azAuxName[i])==0 ){
++ if( strcasecmp(zParm,g.azAuxName[i])==0 ){
+ if( g.azAuxVal[i] ){
+ sqlite3_result_text(context, g.azAuxVal[i], -1, SQLITE_STATIC);
+ }
+@@ -712,7 +711,6 @@
+ ** currently selected value. Results may be a single value column or
+ ** two value,description columns. The first result row is the default.
+ */
+-extern int sqlite3StrICmp(const char*, const char*);
+ static void f_option(sqlite3_context *context, int argc, sqlite3_value **argv){
+ const char *zParm;
+ int i;
+@@ -722,7 +720,7 @@
+ if( zParm==0 ) return;
+
+ for(i=0; i<g.nAux && g.azAuxName[i]; i++){
+- if( sqlite3StrICmp(zParm,g.azAuxName[i])==0 ){
++ if( strcasecmp(zParm,g.azAuxName[i])==0 ){
+ if( g.azAuxVal[i] ){
+ sqlite3_result_text(context, g.azAuxVal[i], -1, SQLITE_STATIC);
+ }
diff --git a/devel/cvstrac/files/patch-format.c b/devel/cvstrac/files/patch-format.c
new file mode 100644
index 000000000000..73e88338c1a6
--- /dev/null
+++ b/devel/cvstrac/files/patch-format.c
@@ -0,0 +1,32 @@
+--- ./format.c.orig 2007-01-28 17:50:24.000000000 -0500
++++ ./format.c 2009-11-09 17:15:57.000000000 -0500
+@@ -701,11 +701,10 @@
+ ** Return TRUE if the HTML element given in the argument is a form of
+ ** external reference (i.e. A, IMG, etc).
+ */
+-extern int sqlite3StrNICmp(const char *, const char*, int);
+ static int isLinkTag(const char *zElem, int nElem){
+- return (nElem==1 && 0==sqlite3StrNICmp(zElem,"A",nElem))
+- || (nElem==3 && 0==sqlite3StrNICmp(zElem,"IMG",nElem))
+- || (nElem==4 && 0==sqlite3StrNICmp(zElem,"CITE",nElem));
++ return (nElem==1 && 0==sqlite3_strnicmp(zElem,"A",nElem))
++ || (nElem==3 && 0==sqlite3_strnicmp(zElem,"IMG",nElem))
++ || (nElem==4 && 0==sqlite3_strnicmp(zElem,"CITE",nElem));
+ }
+
+ /*
+@@ -713,12 +712,11 @@
+ ** before it ends, then return the number of characters through the end of
+ ** the </html>. If the <html> or the </html> is missing, return 0.
+ */
+-extern int sqlite3StrNICmp(const char *, const char*, int);
+ static int is_html(const char *z){
+ int i;
+- if( sqlite3StrNICmp(z, "<html>", 6) ) return 0;
++ if( sqlite3_strnicmp(z, "<html>", 6) ) return 0;
+ for(i=6; z[i]; i++){
+- if( z[i]=='<' && sqlite3StrNICmp(&z[i],"</html>",7)==0 ) return i+7;
++ if( z[i]=='<' && sqlite3_strnicmp(&z[i],"</html>",7)==0 ) return i+7;
+ }
+ return 0;
+ }
diff --git a/devel/cvstrac/files/patch-main.mk b/devel/cvstrac/files/patch-main.mk
new file mode 100644
index 000000000000..357032f56e42
--- /dev/null
+++ b/devel/cvstrac/files/patch-main.mk
@@ -0,0 +1,11 @@
+--- ./main.mk.orig 2009-11-09 17:16:12.000000000 -0500
++++ ./main.mk 2009-11-09 17:16:19.000000000 -0500
+@@ -115,7 +115,7 @@
+ $(BCC) -o maketestdb $(SRCDIR)/maketestdb.c $(LIBSQLITE)
+
+ $(APPNAME): headers $(OBJ)
+- $(TCC) -o $(APPNAME) $(OBJ) $(LIBSQLITE)
++ $(TCC) -o $(APPNAME) $(OBJ) $(LIBSQLITE) -lm
+
+ index.html: $(SRCDIR)/webpage.html $(SRCDIR)/VERSION
+ sed -f $(SRCDIR)/VERSION $(SRCDIR)/webpage.html >index.html
diff --git a/devel/cvstrac/files/patch-search.c b/devel/cvstrac/files/patch-search.c
new file mode 100644
index 000000000000..138142dfe34d
--- /dev/null
+++ b/devel/cvstrac/files/patch-search.c
@@ -0,0 +1,32 @@
+--- ./search.c.orig 2006-12-13 19:27:25.000000000 -0500
++++ ./search.c 2009-11-09 17:15:57.000000000 -0500
+@@ -29,11 +29,6 @@
+
+
+ /*
+-** We'll use this routine in several places.
+-*/
+-extern int sqlite3StrNICmp(const char*,const char*,int);
+-
+-/*
+ ** Search for a keyword in text. Return a matching score:
+ **
+ ** 0 No sign of the word was found in the text
+@@ -54,7 +49,7 @@
+ }
+ if( n<=0 ) n = strlen(zWord);
+ for(i=0; zText[i]; i++){
+- if( (zText[i]==c1 || zText[i]==c2) && sqlite3StrNICmp(zWord,&zText[i],n)==0){
++ if( (zText[i]==c1 || zText[i]==c2) && sqlite3_strnicmp(zWord,&zText[i],n)==0){
+ int score = 6;
+ if( (i==0 || !isalnum(zText[i-1]))
+ && (zText[i+n]==0 || !isalnum(zText[i+n])) ){
+@@ -282,7 +277,7 @@
+ int n;
+ if( tolower(c)!=tolower(azKey[k][0]) ) continue;
+ n = keySize[k];
+- if( sqlite3StrNICmp(&zAll[j],azKey[k],n)==0 ){
++ if( sqlite3_strnicmp(&zAll[j],azKey[k],n)==0 ){
+ strcpy(z,"<b>");
+ z += 3;
+ while( n ){
diff --git a/devel/cvstrac/files/patch-view.c b/devel/cvstrac/files/patch-view.c
new file mode 100644
index 000000000000..5c039d1299c3
--- /dev/null
+++ b/devel/cvstrac/files/patch-view.c
@@ -0,0 +1,20 @@
+--- ./view.c.orig 2007-01-27 18:29:39.000000000 -0500
++++ ./view.c 2009-11-09 17:15:57.000000000 -0500
+@@ -219,8 +219,6 @@
+ ** pointer to an error message string (obtained from malloc) if
+ ** there is a problem.
+ */
+-extern int sqlite3StrNICmp(const char*,const char*,int);
+-extern int sqlite3StrICmp(const char*,const char*);
+ char *verify_sql_statement(char *zSql){
+ int i;
+
+@@ -228,7 +226,7 @@
+ ** the first token is "SELECT" and that there are no unquoted semicolons.
+ */
+ for(i=0; isspace(zSql[i]); i++){}
+- if( sqlite3StrNICmp(&zSql[i],"select",6)!=0 ){
++ if( sqlite3_strnicmp(&zSql[i],"select",6)!=0 ){
+ return mprintf("The SQL must be a SELECT statement");
+ }
+ for(i=0; zSql[i]; i++){