You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(447) |
Nov
(163) |
Dec
(57) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2005 |
Jan
(172) |
Feb
|
Mar
(123) |
Apr
(64) |
May
(1) |
Jun
(278) |
Jul
(89) |
Aug
(97) |
Sep
(62) |
Oct
(53) |
Nov
(119) |
Dec
(60) |
| 2006 |
Jan
(76) |
Feb
(1094) |
Mar
(363) |
Apr
(163) |
May
(57) |
Jun
(43) |
Jul
(39) |
Aug
(15) |
Sep
(33) |
Oct
(62) |
Nov
(8) |
Dec
|
| 2007 |
Jan
(9) |
Feb
(34) |
Mar
(2) |
Apr
(14) |
May
(8) |
Jun
(40) |
Jul
(21) |
Aug
(1) |
Sep
(20) |
Oct
(15) |
Nov
(26) |
Dec
|
| 2008 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(32) |
Jun
|
Jul
|
Aug
(3) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(7) |
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <dav...@us...> - 2006-08-30 21:46:34
|
Revision: 1490
http://svn.sourceforge.net/frontierkernel/?rev=1490&view=rev
Author: davidgewirtz
Date: 2006-08-30 14:45:37 -0700 (Wed, 30 Aug 2006)
Log Message:
-----------
Updated SQLite code, updated for current trunk. Also updated to SQLite 3.3.7.
Modified Paths:
--------------
Frontier/branches/SQLite/Common/headers/kernelverbdefs.h
Frontier/branches/SQLite/Common/headers/kernelverbs.h
Frontier/branches/SQLite/Common/headers/langinternal.h
Frontier/branches/SQLite/Common/resources/Mac/kernelverbs.r
Frontier/branches/SQLite/Common/resources/Win32/WinLand.rc
Frontier/branches/SQLite/Common/resources/Win32/kernelverbs.rc
Frontier/branches/SQLite/Common/source/shell.c
Frontier/branches/SQLite/build_VC2K5/Frontier.vcproj
Added Paths:
-----------
Frontier/branches/SQLite/Common/headers/langsqlite.h
Frontier/branches/SQLite/Common/source/langsqlite.c
Frontier/branches/SQLite/Common/sqlite3/
Frontier/branches/SQLite/Common/sqlite3/alter.c
Frontier/branches/SQLite/Common/sqlite3/analyze.c
Frontier/branches/SQLite/Common/sqlite3/attach.c
Frontier/branches/SQLite/Common/sqlite3/auth.c
Frontier/branches/SQLite/Common/sqlite3/btree.c
Frontier/branches/SQLite/Common/sqlite3/btree.h
Frontier/branches/SQLite/Common/sqlite3/build.c
Frontier/branches/SQLite/Common/sqlite3/callback.c
Frontier/branches/SQLite/Common/sqlite3/complete.c
Frontier/branches/SQLite/Common/sqlite3/date.c
Frontier/branches/SQLite/Common/sqlite3/delete.c
Frontier/branches/SQLite/Common/sqlite3/expr.c
Frontier/branches/SQLite/Common/sqlite3/func.c
Frontier/branches/SQLite/Common/sqlite3/hash.c
Frontier/branches/SQLite/Common/sqlite3/hash.h
Frontier/branches/SQLite/Common/sqlite3/insert.c
Frontier/branches/SQLite/Common/sqlite3/keywordhash.h
Frontier/branches/SQLite/Common/sqlite3/legacy.c
Frontier/branches/SQLite/Common/sqlite3/loadext.c
Frontier/branches/SQLite/Common/sqlite3/main.c
Frontier/branches/SQLite/Common/sqlite3/opcodes.c
Frontier/branches/SQLite/Common/sqlite3/opcodes.h
Frontier/branches/SQLite/Common/sqlite3/os.c
Frontier/branches/SQLite/Common/sqlite3/os.h
Frontier/branches/SQLite/Common/sqlite3/os_common.h
Frontier/branches/SQLite/Common/sqlite3/os_os2.c
Frontier/branches/SQLite/Common/sqlite3/os_unix.c
Frontier/branches/SQLite/Common/sqlite3/os_win.c
Frontier/branches/SQLite/Common/sqlite3/pager.c
Frontier/branches/SQLite/Common/sqlite3/pager.h
Frontier/branches/SQLite/Common/sqlite3/parse.c
Frontier/branches/SQLite/Common/sqlite3/parse.h
Frontier/branches/SQLite/Common/sqlite3/pragma.c
Frontier/branches/SQLite/Common/sqlite3/prepare.c
Frontier/branches/SQLite/Common/sqlite3/printf.c
Frontier/branches/SQLite/Common/sqlite3/random.c
Frontier/branches/SQLite/Common/sqlite3/select.c
Frontier/branches/SQLite/Common/sqlite3/shell.c
Frontier/branches/SQLite/Common/sqlite3/sqlite3.def
Frontier/branches/SQLite/Common/sqlite3/sqlite3.h
Frontier/branches/SQLite/Common/sqlite3/sqlite3ext.h
Frontier/branches/SQLite/Common/sqlite3/sqliteInt.h
Frontier/branches/SQLite/Common/sqlite3/table.c
Frontier/branches/SQLite/Common/sqlite3/tclsqlite.c
Frontier/branches/SQLite/Common/sqlite3/tokenize.c
Frontier/branches/SQLite/Common/sqlite3/trigger.c
Frontier/branches/SQLite/Common/sqlite3/update.c
Frontier/branches/SQLite/Common/sqlite3/utf.c
Frontier/branches/SQLite/Common/sqlite3/util.c
Frontier/branches/SQLite/Common/sqlite3/vacuum.c
Frontier/branches/SQLite/Common/sqlite3/vdbe.c
Frontier/branches/SQLite/Common/sqlite3/vdbe.h
Frontier/branches/SQLite/Common/sqlite3/vdbeInt.h
Frontier/branches/SQLite/Common/sqlite3/vdbeapi.c
Frontier/branches/SQLite/Common/sqlite3/vdbeaux.c
Frontier/branches/SQLite/Common/sqlite3/vdbefifo.c
Frontier/branches/SQLite/Common/sqlite3/vdbemem.c
Frontier/branches/SQLite/Common/sqlite3/vtab.c
Frontier/branches/SQLite/Common/sqlite3/where.c
Modified: Frontier/branches/SQLite/Common/headers/kernelverbdefs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/kernelverbdefs.h 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/headers/kernelverbdefs.h 2006-08-30 21:45:37 UTC (rev 1490)
@@ -51,4 +51,4 @@
#define idregexpverbs 1023 /*2003-04-22 AR: regular expression verbs*/
#define idmathverbs 1024 /*2004-12-29 SMD: extended math verbs*/
#define idcryptverbs 1025 /* 2006-03-07 creedon: crypt verbs */
-
+#define idsqliteverbs 1026 /* 2006-03-15 gewirtz sqlite verbs */
Modified: Frontier/branches/SQLite/Common/headers/kernelverbs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/kernelverbs.h 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/headers/kernelverbs.h 2006-08-30 21:45:37 UTC (rev 1490)
@@ -56,3 +56,4 @@
extern boolean cryptinitverbs (void); /* langcrypt.c */
+extern boolean sqliteinitverbs (void); /* langsqlite.c */
\ No newline at end of file
Modified: Frontier/branches/SQLite/Common/headers/langinternal.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/langinternal.h 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/headers/langinternal.h 2006-08-30 21:45:37 UTC (rev 1490)
@@ -202,6 +202,8 @@
#define frnonexistantgroupnameerror 160
#define replaceitemerror 161 /* 2005-09-26 creedon */
#define cmdshellnotfounderror 162 /* 2006-03-10 aradke */
+#define sqliteopenerror 163 /* 2006-03-17 gewirtz */
+#define sqlitedberror 164 /* 2006-03-17 gewirtz */
#define langstacklist 137
Added: Frontier/branches/SQLite/Common/headers/langsqlite.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/langsqlite.h (rev 0)
+++ Frontier/branches/SQLite/Common/headers/langsqlite.h 2006-08-30 21:45:37 UTC (rev 1490)
@@ -0,0 +1,61 @@
+
+/* $Id: langsqlite.h,v 1.1.2.1 2006/03/24 01:31:35 davidgewirtz Exp $ */
+
+/******************************************************************************
+
+ UserLand Frontier(tm) -- High performance Web content management,
+ object database, system-level and Internet scripting environment,
+ including source code editing and debugging.
+
+ Copyright (C) 1992-2004 UserLand Software, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+******************************************************************************/
+
+/* prototypes */
+
+extern boolean sqliteopenverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-03-15 gewirtz */
+
+extern boolean sqlitecloseverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-03-17 gewirtz */
+
+extern boolean sqlitecompilequeryverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqliteclearqueryverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqliteexecutequeryverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumncountverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumntypeverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumnintverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumndoubleverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumntextverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumnnameverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
+
+extern boolean sqlitegetcolumnverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-20 gewirtz */
+
+extern boolean sqlitegeterrormessageverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-20 gewirtz */
+
+extern boolean sqliteinitverbs (void); /* 2006-03-15 gewirtz */
+
+/* boolean hmacmd5 (unsigned char *, int, unsigned char *, int, unsigned char *);*/ /* 2006-03-05 creedon */
+
+/* boolean hmacsha1 (unsigned char *, int, unsigned char *, int, unsigned char *);*/ /* 2006-03-12 creedon */
+
Modified: Frontier/branches/SQLite/Common/resources/Mac/kernelverbs.r
===================================================================
--- Frontier/branches/SQLite/Common/resources/Mac/kernelverbs.r 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/resources/Mac/kernelverbs.r 2006-08-30 21:45:37 UTC (rev 1490)
@@ -1140,3 +1140,24 @@
}
};
+resource 'EFP#' (idsqliteverbs, "sqlite") { /* 2006-03-15 gewirtz sqlite verbs */
+ {
+ "sqlite", false, {
+
+ "open",
+ "compileQuery",
+ "clearQuery",
+ "executeQuery",
+ "getColumnCount",
+ "getColumnType",
+ "getColumnInt",
+ "getColumnDouble",
+ "getColumnText",
+ "getColumnName",
+ "getColumn",
+ "getErrorMessage",
+ "getClose"
+ }
+ }
+};
+
Modified: Frontier/branches/SQLite/Common/resources/Win32/WinLand.rc
===================================================================
--- Frontier/branches/SQLite/Common/resources/Win32/WinLand.rc 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/resources/Win32/WinLand.rc 2006-08-30 21:45:37 UTC (rev 1490)
@@ -1533,6 +1533,8 @@
160 Lang_Errors DISCARDABLE BEGIN "Can't execute command because the replacement string contains a non-existant group name at character #^0.\0" END
161 Lang_Errors DISCARDABLE BEGIN "An item named \042^0\042 already exists.\0" END // Replace it or create a duplicate?" /* 2005-09-26 creedon */
162 Lang_Errors DISCARDABLE BEGIN "Can't run shell command because the shell \042^0\042 was not found.\0" END /* 2006-03-10 aradke */
+ 163 Lang_Errors DISCARDABLE BEGIN "Can't open database: ^0.\0" END /* 2006-03-17 gewirtz */
+ 164 Lang_Errors DISCARDABLE BEGIN "Database error: ^0.\0" END /* 2006-03-17 gewirtz */
1 Mac_Errors DISCARDABLE BEGIN "The \042^0\042 folder is full.\0" END
2 Mac_Errors DISCARDABLE BEGIN "The disk is full.\0" END
Modified: Frontier/branches/SQLite/Common/resources/Win32/kernelverbs.rc
===================================================================
--- Frontier/branches/SQLite/Common/resources/Win32/kernelverbs.rc 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/resources/Win32/kernelverbs.rc 2006-08-30 21:45:37 UTC (rev 1490)
@@ -1077,3 +1077,24 @@
"hmacSHA1\0",
END
+1026 /* sqliteverbs */ EFP DISCARDABLE
+ BEGIN
+ 1, // Number of "blocks" in this resource
+ "sqlite\0", // Function Processor name
+ false, // Window required
+ 13, // Count of verbs
+ "open\0",
+ "compileQuery\0",
+ "clearQuery\0",
+ "executeQuery\0",
+ "getColumnCount\0",
+ "getColumnType\0",
+ "getColumnInt\0",
+ "getColumnDouble\0",
+ "getColumnText\0",
+ "getColumnName\0",
+ "getColumn\0",
+ "getErrorMessage\0",
+ "close\0"
+ END
+
Added: Frontier/branches/SQLite/Common/source/langsqlite.c
===================================================================
--- Frontier/branches/SQLite/Common/source/langsqlite.c (rev 0)
+++ Frontier/branches/SQLite/Common/source/langsqlite.c 2006-08-30 21:45:37 UTC (rev 1490)
@@ -0,0 +1,688 @@
+
+/* $Id: langsqlite.c,v 1.1.2.1 2006/03/24 01:32:31 davidgewirtz Exp $ */
+
+/******************************************************************************
+
+ UserLand Frontier(tm) -- High performance Web content management,
+ object database, system-level and Internet scripting environment,
+ including source code editing and debugging.
+
+ Copyright (C) 1992-2004 UserLand Software, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+******************************************************************************/
+
+#include "frontier.h"
+#include "standard.h"
+
+#include "frontierconfig.h"
+
+#include "error.h"
+#include "ops.h"
+#include "langinternal.h"
+#include "kernelverbs.h"
+#include "kernelverbdefs.h"
+#include "resources.h"
+#include "strings.h"
+#include "tablestructure.h"
+#include "lang.h"
+#include "langexternal.h"
+
+#include "langsqlite.h"
+#include <sqlite3.h>
+
+/* Building SQLite into Frontier
+
+The SQLite source distribution is compiled into the Frontier code as part of this
+module. A key goal in this implementation was to avoid touching any of the SQLite
+source files. SQLite is pretty complex in its coding, and I didn't want to take a
+chance that any changes to the original SQLite code would muck up the database
+functionality.
+
+To include the latest SQLite distribution (we're implementing SQLite 3 here),
+download the SQLite source code from http://www.sqlite.org/download.html.
+
+Move all the SQLite source files into the \Common\sqlite3 folder. If you need to
+include new files in the SQLite project, be sure that shell.c and tclsqlite.c are
+NOT included in the Frontier project.
+
+That's it. For further tips, see the Frontier Lab Notebook article at:
+
+http://manila.zatz.com/frontierkernel/stories/storyReader$29
+
+-- DG
+
+*/
+
+typedef enum tysqliteverbtoken { /* verbs that are processed by langsqlite.c */
+
+ openfunc,
+ compilequeryfunc,
+ clearqueryfunc,
+ executequeryfunc,
+ getcolumncountfunc,
+ getcolumntypefunc,
+ getcolumnintfunc,
+ getcolumndoublefunc,
+ getcolumntextfunc,
+ getcolumnnamefunc,
+ getcolumnfunc,
+ geterrormessagefunc,
+ closefunc,
+ ctsqliteverbs
+ } tysqliteverbtoken;
+
+
+static boolean sqlitefunctionvalue (short token, hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+
+ /*
+ 2006-03-15 gewirtz: created, cribbed from langcrypt, itself cribbed from htmlfunctionvalue
+ */
+
+ hdltreenode hp1 = hparam1;
+ tyvaluerecord *v = vreturned;
+
+ setbooleanvalue (false, v); /* by default, sqlite functions return false */
+
+ switch (token) {
+
+ case openfunc: { /* 2006-03-14 gewirtz: open an SQLite db */
+
+ return (sqliteopenverb (hp1, v, bserror));
+ } /* openfunc */
+
+ case compilequeryfunc: { /* 2006-04-18 gewirtz: prepare an SQLite statement */
+
+ return (sqlitecompilequeryverb (hp1, v, bserror));
+ } /* compilequeryfunc */
+
+ case clearqueryfunc: { /* 2006-04-18 gewirtz: finalize an SQLite statement */
+
+ return (sqliteclearqueryverb (hp1, v, bserror));
+ } /* clearqueryfunc */
+
+ case executequeryfunc: { /* 2006-04-18 gewirtz: move the cursor one step after the query */
+
+ return (sqliteexecutequeryverb (hp1, v, bserror));
+ } /* executequeryfunc */
+
+ case getcolumncountfunc: { /* 2006-04-18 gewirtz: get the number of columns */
+
+ return (sqlitegetcolumncountverb (hp1, v, bserror));
+ } /* getcolumncountfunc */
+
+ case getcolumntypefunc: { /* 2006-04-18 gewirtz: get the type of the referenced column */
+ /* this version returns Frontier strings */
+ return (sqlitegetcolumntypeverb (hp1, v, bserror));
+ } /* getcolumntypefunc */
+
+ case getcolumnintfunc: { /* 2006-04-18 gewirtz: get an int value from the column */
+
+ return (sqlitegetcolumnintverb (hp1, v, bserror));
+ } /* getcolumnintfunc */
+
+ case getcolumndoublefunc: { /* 2006-04-18 gewirtz: get a double value from the column */
+
+ return (sqlitegetcolumndoubleverb (hp1, v, bserror));
+ } /* getcolumndoublefunc */
+
+ case getcolumntextfunc: { /* 2006-04-18 gewirtz: get a text value from the column */
+
+ return (sqlitegetcolumntextverb (hp1, v, bserror));
+ } /* getcolumntextfunc */
+
+ case getcolumnnamefunc: { /* 2006-04-18 gewirtz: get the field name of the column */
+
+ return (sqlitegetcolumnnameverb (hp1, v, bserror));
+ } /* getcolumnnamefunc */
+
+ case getcolumnfunc: { /* 2006-04-20 gewirtz: get the value of the column */
+
+ return (sqlitegetcolumnverb (hp1, v, bserror));
+ } /* getcolumnfunc */
+
+ case geterrormessagefunc: { /* 2006-04-20 gewirtz: get the SQLite error message */
+
+ return (sqlitegeterrormessageverb (hp1, v, bserror));
+ } /* geterrormessagefunc */
+
+ case closefunc: { /* 2006-03-15 gewirtz: close an SQLite db */
+
+ return (sqlitecloseverb (hp1, v, bserror));
+ } /* closefunc */
+
+ default:
+ getstringlist (langerrorlist, unimplementedverberror, bserror);
+
+ return (false);
+ } /* switch */
+ } /* sqlitefunctionvalue */
+
+
+boolean sqliteinitverbs (void) {
+
+ /* 2006-03-15 gewirtz: created, cribbed from cryptinitverbs */
+
+ return (loadfunctionprocessor (idsqliteverbs, &sqlitefunctionvalue));
+ } /* sqliteinitverbs */
+
+static void sqliteOpenError (const char *errmsg, bigstring bserror) {
+ bigstring bserrmsg;
+
+ copyctopstring (errmsg, bserrmsg); /* This creates a pstring at bserrmsg */
+ getstringlist (langerrorlist, sqliteopenerror, bserror);
+ parsedialogstring (bserror, bserrmsg, nil, nil, nil, bserror);
+
+ return;
+ } /*sqliteOpenError*/
+
+static void sqliteDatabaseError (const char *errmsg, bigstring bserror) {
+ bigstring bserrmsg;
+
+ copyctopstring (errmsg, bserrmsg); /* This creates a pstring at bserrmsg */
+ getstringlist (langerrorlist, sqlitedberror, bserror);
+ parsedialogstring (bserror, bserrmsg, nil, nil, nil, bserror);
+
+ return;
+ } /*sqliteDatabaseError*/
+
+static void sqliteScriptError (const char *errmsg, bigstring bserror) {
+ bigstring bserrmsg;
+
+ copyctopstring (errmsg, bserrmsg); /* This creates a pstring at bserrmsg */
+ getstringlist (langerrorlist, notfunctionerror, bserror);
+ parsedialogstring (bserror, bserrmsg, nil, nil, nil, bserror);
+
+ return;
+ } /*sqliteScriptError*/
+
+
+boolean sqliteopenverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ Handle dbfile; /* path to database file */
+ sqlite3 *dbid; /* the SQLite database handle */
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.open(dbfile)
+
+ Action: opens a SQLite database
+ Params: a file path to the database file
+ Returns: a value that corresponds to the opened database ID
+ Usage: call in a try statement
+ Notes: do not pass the opened database ID across threads
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_open.
+ */
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!gettextvalue (hparam1, 1, &dbfile)) /* get the param */
+ return (false);
+
+ pushcharhandle (0x00, dbfile); /* convert *dbfile to a string */
+
+ /* Process the SQLite sequence */
+ returnCode = sqlite3_open(*dbfile, &dbid);
+ if(returnCode) {
+ sqliteOpenError(sqlite3_errmsg(dbid), bserror); /* send database open error */
+ sqlite3_close(dbid);
+ return (false);
+ }
+
+ /* return the db address to the scripter */
+ return (setheapvalue ((Handle) dbid, longvaluetype, vreturned));
+
+} /* sqliteopenverb */
+
+boolean sqlitecloseverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ sqlite3 *dbid; /* the SQLite database handle */
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.close(dbid)
+
+ Action: close an SQLite database
+ Params: a database id
+ Returns: an SQLite result code
+ Usage: check result code for success or failure
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_close.
+ */
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!getlongvalue (hparam1, 1, (long *) &dbid)) /* Get the long value, which becomes the db pointer */
+ return (false);
+
+ /* Process the SQLite sequence */
+ returnCode = sqlite3_close(dbid);
+
+ return setlongvalue (returnCode, vreturned);
+
+} /* sqlitecloseverb */
+
+boolean sqlitecompilequeryverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ Handle query; /* the SQL query passed to the SQLite engine */
+ sqlite3 *dbid; /* the SQLite database handle */
+ sqlite3_stmt *queryid = 0; /* the compiled query */
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.compileQuery(dbid, query)
+
+ Action: compile an SQLite query
+ Params: a database id and a query string
+ Returns: a query id
+ Usage: call in a try statement
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_prepare.
+
+ Code that is a good example of prepare in use:
+ http://souptonuts.sourceforge.net/code/eatblob.c.html
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &dbid)) /* Get the long value, which becomes the db pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!getreadonlytextvalue (hparam1, 2, &query)) /* get the query param */
+ return (false);
+
+ /* Process the SQLite sequence */
+ returnCode = sqlite3_prepare(dbid, *query, gethandlesize(query), &queryid, 0);
+ if(returnCode != SQLITE_OK || queryid == NULL) {
+ sqliteDatabaseError(sqlite3_errmsg(dbid), bserror); /* send database error */
+ return (false);
+ }
+
+ return (setlongvalue ((long) queryid, vreturned)); /* return the db address to the scripter */
+
+} /* sqlitecompilequeryverb */
+
+boolean sqliteclearqueryverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ sqlite3_stmt *queryid; /* query id */
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.clearQuery(queryid)
+
+ Action: clear an SQLite query
+ Params: a query id
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_finalize.
+ */
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the queryid pointer */
+ return (false);
+
+ /* Process the SQLite sequence */
+ returnCode = sqlite3_finalize(queryid);
+
+ return setlongvalue (returnCode, vreturned);
+
+} /* sqliteclearqueryverb */
+
+boolean sqliteexecutequeryverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ sqlite3_stmt *queryid; /* query id */
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.executeQuery(queryid)
+
+ Action: perform the query, moving the query cursor to the next row of results
+ Params: a query id
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_step.
+ */
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the pline pointer */
+ return (false);
+
+ /* Process the SQLite sequence */
+ returnCode = sqlite3_step(queryid);
+
+ return setlongvalue (returnCode, vreturned);
+
+} /* sqliteexecutequeryverb */
+
+boolean sqlitegetcolumntypeverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ long columnNumber; /* column number */
+ sqlite3_stmt *queryid; /* query id */
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.getColumnType(queryid, columnNumber)
+
+ Action: Retrieve the type of the specified column
+ Params: a query id and the number of the column (1 base)
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_type.
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the queryid pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ /* Enter the verb, convert the param to null-terminated string */
+ if (!getlongvalue (hparam1, 2, &columnNumber))
+ return (false);
+
+ /* Process the SQLite sequence */
+ --columnNumber; /* Frontier uses base 1, but SQLite uses a base of 0 for its column numbering */
+ returnCode = sqlite3_column_type(queryid, (int) columnNumber);
+
+ switch(returnCode) {
+
+ case SQLITE_INTEGER: {
+ return setostypevalue (langgettypeid (longvaluetype), vreturned);
+ }
+ case SQLITE_FLOAT: {
+ return setostypevalue (langgettypeid (doublevaluetype), vreturned);
+ }
+ case SQLITE_TEXT: {
+ return setostypevalue (langgettypeid (stringvaluetype), vreturned);
+ }
+ case SQLITE_BLOB: {
+ return setostypevalue (langgettypeid (binaryvaluetype), vreturned);
+ }
+ case SQLITE_NULL: {
+ return setostypevalue (langgettypeid (novaluetype), vreturned);
+ }
+ default: {
+ /* SQLite spec says sqlite3_column_type only returns the above 5 types. But,
+ just in case it lied, we'll return an error type to help Frontier avoid
+ getting a case of return value indigestion. */
+ langerrormessage ("\x29""SQLite returned an undefined column type.");
+ return (false);
+ }
+ } /* switch */
+
+} /* sqlitegetcolumntypeverb */
+
+boolean sqlitegetcolumnnameverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ long columnNumber; /* column number */
+ Handle returnH;
+ const char *column_name;
+ sqlite3_stmt *queryid;
+
+ /*
+ sqlite.getColumnName(queryid, columnNumber)
+
+ Action: Retrieve the name of the specified column
+ Params: a query id and the number of the column (1 base)
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_name.
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the pline pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ /* Enter the verb, convert the param to null-terminated string */
+ if (!getlongvalue (hparam1, 2, &columnNumber))
+ return (false);
+
+ /* Process the SQLite sequence */
+ --columnNumber; /* Frontier uses base 1, but SQLite uses a base of 0 for its column numbering */
+ column_name = sqlite3_column_name(queryid, (int) columnNumber);
+
+ /* Exit the verb, converting column_name back to Frontier handle */
+ newfilledhandle ((ptrvoid) column_name, strlen (column_name), &returnH);
+ return (setheapvalue (returnH, stringvaluetype, vreturned));
+
+} /* sqlitegetcolumnnameverb */
+
+boolean sqlitegetcolumncountverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ sqlite3_stmt *queryid;
+ int returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.getColumnCount(queryid)
+
+ Action: Retrieve number of columns returned in a query
+ Params: a query id
+ Returns: the number of columns in the result set returned by the prepared SQL statement.
+ Notes: do not pass the opened database ID across threads.
+ returns 0 if pStmt is an SQL statement that does not return data (for example an UPDATE).
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_count.
+ */
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the pline pointer */
+ return (false);
+
+ /* Process the SQLite sequence */
+ returnCode = sqlite3_column_count(queryid);
+
+ return setlongvalue (returnCode, vreturned);
+
+} /* sqlitegetcolumncountverb */
+
+boolean sqlitegetcolumnintverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ long columnNumber;
+ sqlite3_stmt *queryid;
+ long returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.getColumnInt(queryid, columnNumber)
+
+ Action: Retrieve the value of the specified integer-type column
+ Params: a query id and the number of the column (1 base)
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_int.
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the pline pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ /* Enter the verb, convert the param to null-terminated string */
+ if (!getlongvalue (hparam1, 2, &columnNumber))
+ return (false);
+
+ /* Process the SQLite sequence */
+ --columnNumber; /* Frontier uses base 1, but SQLite uses a base of 0 for its column numbering */
+ returnCode = sqlite3_column_int(queryid, (int) columnNumber);
+
+ return (setlongvalue ((long) returnCode, vreturned));
+
+} /* sqlitegetcolumnintverb */
+
+boolean sqlitegetcolumndoubleverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ long columnNumber;
+ sqlite3_stmt *queryid;
+ double returnCode; /* return code from SQLite call */
+
+ /*
+ sqlite.getColumnDouble(queryid, columnNumber)
+
+ Action: Retrieve the value of the specified double-type column
+ Params: a query id and the number of the column (1 base)
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_double.
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the pline pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ /* Enter the verb, convert the param to null-terminated string */
+ if (!getlongvalue (hparam1, 2, &columnNumber))
+ return (false);
+
+ /* Process the SQLite sequence */
+ --columnNumber; /* Frontier uses base 1, but SQLite uses a base of 0 for its column numbering */
+ returnCode = sqlite3_column_double(queryid, (int) columnNumber);
+
+ return (setlongvalue ((double) returnCode, vreturned));
+
+} /* sqlitegetcolumndoubleverb */
+
+boolean sqlitegetcolumntextverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ long columnNumber;
+ sqlite3_stmt *queryid;
+ Handle returnH;
+ const unsigned char *column_text;
+
+ /*
+ sqlite.getColumnText(queryid, columnNumber)
+
+ Action: Retrieve the value of the specified text-type column
+ Params: a query id and the number of the column (1 base)
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_text.
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the pline pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ /* Enter the verb, convert the param to null-terminated string */
+ if (!getlongvalue (hparam1, 2, &columnNumber))
+ return (false);
+
+ /* Process the SQLite sequence */
+ --columnNumber; /* Frontier uses base 1, but SQLite uses a base of 0 for its column numbering */
+ column_text = sqlite3_column_text(queryid, (int) columnNumber);
+
+ /* Exit the verb, converting column_name back to Frontier handle */
+ newfilledhandle ((ptrvoid) column_text, strlen (column_text), &returnH);
+ return (setheapvalue (returnH, stringvaluetype, vreturned));
+
+} /* sqlitegetcolumntextverb */
+
+boolean sqlitegetcolumnverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ long columnNumber; /* column number */
+ sqlite3_stmt *queryid; /* query id */
+ int returnCode; /* return code from SQLite call */
+ Handle returnH;
+ const unsigned char *column_text;
+
+ /*
+ sqlite.getColumn(queryid, columnNumber)
+
+ Action: Retrieve the value of the specified column element
+ Params: a query id and the number of the column (1 base)
+ Returns: an SQLite result code
+ Notes: do not pass the opened database ID across threads.
+ this implementation does not support blobs. If a blob column is requested, 0 is returned.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_column_type.
+ */
+
+ if (!getlongvalue (hparam1, 1, (long *) &queryid)) /* Get the long value, which becomes the queryid pointer */
+ return (false);
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ /* Enter the verb, convert the param to null-terminated string */
+ if (!getlongvalue (hparam1, 2, &columnNumber))
+ return (false);
+
+ /* Process the SQLite sequence */
+ --columnNumber; /* Frontier uses base 1, but SQLite uses a base of 0 for its column numbering */
+ returnCode = sqlite3_column_type(queryid, (int) columnNumber);
+
+ switch(returnCode) {
+
+ case SQLITE_INTEGER: {
+ returnCode = sqlite3_column_int(queryid, (int) columnNumber);
+ return (setlongvalue ((long) returnCode, vreturned));
+ }
+ case SQLITE_FLOAT: {
+ returnCode = sqlite3_column_double(queryid, (int) columnNumber);
+ return (setlongvalue ((double) returnCode, vreturned));
+ }
+ case SQLITE_TEXT: {
+ column_text = sqlite3_column_text(queryid, (int) columnNumber);
+
+ /* Exit the verb, converting column_name back to Frontier handle */
+ newfilledhandle ((ptrvoid) column_text, strlen (column_text), &returnH);
+ return (setheapvalue (returnH, stringvaluetype, vreturned));
+ }
+ case SQLITE_BLOB: {
+ return (setlongvalue ((long) 0, vreturned));
+ }
+ case SQLITE_NULL: {
+ return (setlongvalue ((long) 0, vreturned));
+ }
+ default: {
+ /* SQLite spec says sqlite3_column_type only returns the above 5 types. But,
+ just in case it lied, we'll return an error type to help Frontier avoid
+ getting a case of return value indigestion. */
+ langerrormessage ("\x29""SQLite returned an undefined column type.");
+ return (false);
+ }
+ } /* switch */
+
+} /* sqlitegetcolumntext */
+
+boolean sqlitegeterrormessageverb (hdltreenode hparam1, tyvaluerecord *vreturned, bigstring bserror) {
+ const char *sqliteError; /* pointer to the error message */
+ sqlite3 *db; /* the SQLite database handle */
+ Handle returnH = nil; /* The handle being returned back to Frontier */
+
+ /*
+ Frontier verb: sqlite.getErrorMessage(dbfile)
+
+ Returns the error message for the most recent SQLite API call.
+ Takes a database ID.
+ Returns a string containing the error message.
+ NOTE: do not pass the opened database ID across threads.
+
+ SQLite docs: http://www.sqlite.org/capi3ref.html#sqlite3_errmsg.
+ */
+
+ flnextparamislast = true; /* makes sure Frontier throws an error if more than one param is passed */
+
+ if (!getlongvalue (hparam1, 1, (long *) &db)) /* Get the long value, which becomes the db pointer */
+ return (false);
+
+ /* Process the SQLite sequence */
+ sqliteError = sqlite3_errmsg(db);
+
+ /* Exit the verb, converting errMsg back to Frontier handle */
+ newfilledhandle ((ptrvoid) sqliteError, strlen (sqliteError), &returnH);
+ return (setheapvalue (returnH, stringvaluetype, vreturned));
+
+} /* sqlitegeterrormessageverb */
\ No newline at end of file
Modified: Frontier/branches/SQLite/Common/source/shell.c
===================================================================
--- Frontier/branches/SQLite/Common/source/shell.c 2006-08-30 19:38:37 UTC (rev 1489)
+++ Frontier/branches/SQLite/Common/source/shell.c 2006-08-30 21:45:37 UTC (rev 1490)
@@ -1319,6 +1319,8 @@
htmlinitverbs ();
+ sqliteinitverbs (); /* 2006-03-15 gewirtz: langsqlite.c */
+
#ifdef flregexpverbs
regexpinitverbs (); /* 2003-04-23 AR: langregexp.c */
#endif
Added: Frontier/branches/SQLite/Common/sqlite3/alter.c
===================================================================
--- Frontier/branches/SQLite/Common/sqlite3/alter.c (rev 0)
+++ Frontier/branches/SQLite/Common/sqlite3/alter.c 2006-08-30 21:45:37 UTC (rev 1490)
@@ -0,0 +1,575 @@
+/*
+** 2005 February 15
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+*************************************************************************
+** This file contains C code routines that used to generate VDBE code
+** that implements the ALTER TABLE command.
+**
+** $Id: alter.c,v 1.21 2006/06/21 12:36:25 danielk1977 Exp $
+*/
+#include "sqliteInt.h"
+#include <ctype.h>
+
+/*
+** The code in this file only exists if we are not omitting the
+** ALTER TABLE logic from the build.
+*/
+#ifndef SQLITE_OMIT_ALTERTABLE
+
+
+/*
+** This function is used by SQL generated to implement the
+** ALTER TABLE command. The first argument is the text of a CREATE TABLE or
+** CREATE INDEX command. The second is a table name. The table name in
+** the CREATE TABLE or CREATE INDEX statement is replaced with the second
+** argument and the result returned. Examples:
+**
+** sqlite_rename_table('CREATE TABLE abc(a, b, c)', 'def')
+** -> 'CREATE TABLE def(a, b, c)'
+**
+** sqlite_rename_table('CREATE INDEX i ON abc(a)', 'def')
+** -> 'CREATE INDEX i ON def(a, b, c)'
+*/
+static void renameTableFunc(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ unsigned char const *zSql = sqlite3_value_text(argv[0]);
+ unsigned char const *zTableName = sqlite3_value_text(argv[1]);
+
+ int token;
+ Token tname;
+ unsigned char const *zCsr = zSql;
+ int len = 0;
+ char *zRet;
+
+ /* The principle used to locate the table name in the CREATE TABLE
+ ** statement is that the table name is the first token that is immediatedly
+ ** followed by a left parenthesis - TK_LP.
+ */
+ if( zSql ){
+ do {
+ /* Store the token that zCsr points to in tname. */
+ tname.z = zCsr;
+ tname.n = len;
+
+ /* Advance zCsr to the next token. Store that token type in 'token',
+ ** and it's length in 'len' (to be used next iteration of this loop).
+ */
+ do {
+ zCsr += len;
+ len = sqlite3GetToken(zCsr, &token);
+ } while( token==TK_SPACE );
+ assert( len>0 );
+ } while( token!=TK_LP );
+
+ zRet = sqlite3MPrintf("%.*s%Q%s", tname.z - zSql, zSql,
+ zTableName, tname.z+tname.n);
+ sqlite3_result_text(context, zRet, -1, sqlite3FreeX);
+ }
+}
+
+#ifndef SQLITE_OMIT_TRIGGER
+/* This function is used by SQL generated to implement the ALTER TABLE
+** ALTER TABLE command. The first argument is the text of a CREATE TRIGGER
+** statement. The second is a table name. The table name in the CREATE
+** TRIGGER statement is replaced with the second argument and the result
+** returned. This is analagous to renameTableFunc() above, except for CREATE
+** TRIGGER, not CREATE INDEX and CREATE TABLE.
+*/
+static void renameTriggerFunc(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ unsigned char const *zSql = sqlite3_value_text(argv[0]);
+ unsigned char const *zTableName = sqlite3_value_text(argv[1]);
+
+ int token;
+ Token tname;
+ int dist = 3;
+ unsigned char const *zCsr = zSql;
+ int len = 0;
+ char *zRet;
+
+ /* The principle used to locate the table name in the CREATE TRIGGER
+ ** statement is that the table name is the first token that is immediatedly
+ ** preceded by either TK_ON or TK_DOT and immediatedly followed by one
+ ** of TK_WHEN, TK_BEGIN or TK_FOR.
+ */
+ if( zSql ){
+ do {
+ /* Store the token that zCsr points to in tname. */
+ tname.z = zCsr;
+ tname.n = len;
+
+ /* Advance zCsr to the next token. Store that token type in 'token',
+ ** and it's length in 'len' (to be used next iteration of this loop).
+ */
+ do {
+ zCsr += len;
+ len = sqlite3GetToken(zCsr, &token);
+ }while( token==TK_SPACE );
+ assert( len>0 );
+
+ /* Variable 'dist' stores the number of tokens read since the most
+ ** recent TK_DOT or TK_ON. This means that when a WHEN, FOR or BEGIN
+ ** token is read and 'dist' equals 2, the condition stated above
+ ** to be met.
+ **
+ ** Note that ON cannot be a database, table or column name, so
+ ** there is no need to worry about syntax like
+ ** "CREATE TRIGGER ... ON ON.ON BEGIN ..." etc.
+ */
+ dist++;
+ if( token==TK_DOT || token==TK_ON ){
+ dist = 0;
+ }
+ } while( dist!=2 || (token!=TK_WHEN && token!=TK_FOR && token!=TK_BEGIN) );
+
+ /* Variable tname now contains the token that is the old table-name
+ ** in the CREATE TRIGGER statement.
+ */
+ zRet = sqlite3MPrintf("%.*s%Q%s", tname.z - zSql, zSql,
+ zTableName, tname.z+tname.n);
+ sqlite3_result_text(context, zRet, -1, sqlite3FreeX);
+ }
+}
+#endif /* !SQLITE_OMIT_TRIGGER */
+
+/*
+** Register built-in functions used to help implement ALTER TABLE
+*/
+void sqlite3AlterFunctions(sqlite3 *db){
+ static const struct {
+ char *zName;
+ signed char nArg;
+ void (*xFunc)(sqlite3_context*,int,sqlite3_value **);
+ } aFuncs[] = {
+ { "sqlite_rename_table", 2, renameTableFunc},
+#ifndef SQLITE_OMIT_TRIGGER
+ { "sqlite_rename_trigger", 2, renameTriggerFunc},
+#endif
+ };
+ int i;
+
+ for(i=0; i<sizeof(aFuncs)/sizeof(aFuncs[0]); i++){
+ sqlite3CreateFunc(db, aFuncs[i].zName, aFuncs[i].nArg,
+ SQLITE_UTF8, 0, aFuncs[i].xFunc, 0, 0);
+ }
+}
+
+/*
+** Generate the text of a WHERE expression which can be used to select all
+** temporary triggers on table pTab from the sqlite_temp_master table. If
+** table pTab has no temporary triggers, or is itself stored in the
+** temporary database, NULL is returned.
+*/
+static char *whereTempTriggers(Parse *pParse, Table *pTab){
+ Trigger *pTrig;
+ char *zWhere = 0;
+ char *tmp = 0;
+ const Schema *pTempSchema = pParse->db->aDb[1].pSchema; /* Temp db schema */
+
+ /* If the table is not located in the temp-db (in which case NULL is
+ ** returned, loop through the tables list of triggers. For each trigger
+ ** that is not part of the temp-db schema, add a clause to the WHERE
+ ** expression being built up in zWhere.
+ */
+ if( pTab->pSchema!=pTempSchema ){
+ for( pTrig=pTab->pTrigger; pTrig; pTrig=pTrig->pNext ){
+ if( pTrig->pSchema==pTempSchema ){
+ if( !zWhere ){
+ zWhere = sqlite3MPrintf("name=%Q", pTrig->name);
+ }else{
+ tmp = zWhere;
+ zWhere = sqlite3MPrintf("%s OR name=%Q", zWhere, pTrig->name);
+ sqliteFree(tmp);
+ }
+ }
+ }
+ }
+ return zWhere;
+}
+
+/*
+** Generate code to drop and reload the internal representation of table
+** pTab from the database, including triggers and temporary triggers.
+** Argument zName is the name of the table in the database schema at
+** the time the generated code is executed. This can be different from
+** pTab->zName if this function is being called to code part of an
+** "ALTER TABLE RENAME TO" statement.
+*/
+static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){
+ Vdbe *v;
+ char *zWhere;
+ int iDb; /* Index of database containing pTab */
+#ifndef SQLITE_OMIT_TRIGGER
+ Trigger *pTrig;
+#endif
+
+ v = sqlite3GetVdbe(pParse);
+ if( !v ) return;
+ iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
+ assert( iDb>=0 );
+
+#ifndef SQLITE_OMIT_TRIGGER
+ /* Drop any table triggers from the internal schema. */
+ for(pTrig=pTab->pTrigger; pTrig; pTrig=pTrig->pNext){
+ int iTrigDb = sqlite3SchemaToIndex(pParse->db, pTrig->pSchema);
+ assert( iTrigDb==iDb || iTrigDb==1 );
+ sqlite3VdbeOp3(v, OP_DropTrigger, iTrigDb, 0, pTrig->name, 0);
+ }
+#endif
+
+ /* Drop the table and index from the internal schema */
+ sqlite3VdbeOp3(v, OP_DropTable, iDb, 0, pTab->zName, 0);
+
+ /* Reload the table, index and permanent trigger schemas. */
+ zWhere = sqlite3MPrintf("tbl_name=%Q", zName);
+ if( !zWhere ) return;
+ sqlite3VdbeOp3(v, OP_ParseSchema, iDb, 0, zWhere, P3_DYNAMIC);
+
+#ifndef SQLITE_OMIT_TRIGGER
+ /* Now, if the table is not stored in the temp database, reload any temp
+ ** triggers. Don't use IN(...) in case SQLITE_OMIT_SUBQUERY is defined.
+ */
+ if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){
+ sqlite3VdbeOp3(v, OP_ParseSchema, 1, 0, zWhere, P3_DYNAMIC);
+ }
+#endif
+}
+
+/*
+** Generate code to implement the "ALTER TABLE xxx RENAME TO yyy"
+** command.
+*/
+void sqlite3AlterRenameTable(
+ Parse *pParse, /* Parser context. */
+ SrcList *pSrc, /* The table to rename. */
+ Token *pName /* The new table name. */
+){
+ int iDb; /* Database that contains the table */
+ char *zDb; /* Name of database iDb */
+ Table *pTab; /* Table being renamed */
+ char *zName = 0; /* NULL-terminated version of pName */
+ sqlite3 *db = pParse->db; /* Database connection */
+ Vdbe *v;
+#ifndef SQLITE_OMIT_TRIGGER
+ char *zWhere = 0; /* Where clause to locate temp triggers */
+#endif
+
+ if( sqlite3MallocFailed() ) goto exit_rename_table;
+ assert( pSrc->nSrc==1 );
+
+ pTab = sqlite3LocateTable(pParse, pSrc->a[0].zName, pSrc->a[0].zDatabase);
+ if( !pTab ) goto exit_rename_table;
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ sqlite3ErrorMsg(pParse, "virtual tables may not be altered");
+ goto exit_rename_table;
+ }
+#endif
+ iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
+ zDb = db->aDb[iDb].zName;
+
+ /* Get a NULL terminated version of the new table name. */
+ zName = sqlite3NameFromToken(pName);
+ if( !zName ) goto exit_rename_table;
+
+ /* Check that a table or index named 'zName' does not already exist
+ ** in database iDb. If so, this is an error.
+ */
+ if( sqlite3FindTable(db, zName, zDb) || sqlite3FindIndex(db, zName, zDb) ){
+ sqlite3ErrorMsg(pParse,
+ "there is already another table or index with this name: %s", zName);
+ goto exit_rename_table;
+ }
+
+ /* Make sure it is not a system table being altered, or a reserved name
+ ** that the table is being renamed to.
+ */
+ if( strlen(pTab->zName)>6 && 0==sqlite3StrNICmp(pTab->zName, "sqlite_", 7) ){
+ sqlite3ErrorMsg(pParse, "table %s may not be altered", pTab->zName);
+ goto exit_rename_table;
+ }
+ if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
+ goto exit_rename_table;
+ }
+
+#ifndef SQLITE_OMIT_AUTHORIZATION
+ /* Invoke the authorization callback. */
+ if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, 0) ){
+ goto exit_rename_table;
+ }
+#endif
+
+ /* Begin a transaction and code the VerifyCookie for database iDb.
+ ** Then modify the schema cookie (since the ALTER TABLE modifies the
+ ** schema).
+ */
+ v = sqlite3GetVdbe(pParse);
+ if( v==0 ){
+ goto exit_rename_table;
+ }
+ sqlite3BeginWriteOperation(pParse, 0, iDb);
+ sqlite3ChangeCookie(db, v, iDb);
+
+ /* Modify the sqlite_master table to use the new table name. */
+ sqlite3NestedParse(pParse,
+ "UPDATE %Q.%s SET "
+#ifdef SQLITE_OMIT_TRIGGER
+ "sql = sqlite_rename_table(sql, %Q), "
+#else
+ "sql = CASE "
+ "WHEN type = 'trigger' THEN sqlite_rename_trigger(sql, %Q)"
+ "ELSE sqlite_rename_table(sql, %Q) END, "
+#endif
+ "tbl_name = %Q, "
+ "name = CASE "
+ "WHEN type='table' THEN %Q "
+ "WHEN name LIKE 'sqlite_autoindex%%' AND type='index' THEN "
+ "'sqlite_autoindex_' || %Q || substr(name, %d+18,10) "
+ "ELSE name END "
+ "WHERE tbl_name=%Q AND "
+ "(type='table' OR type='index' OR type='trigger');",
+ zDb, SCHEMA_TABLE(iDb), zName, zName, zName,
+#ifndef SQLITE_OMIT_TRIGGER
+ zName,
+#endif
+ zName, strlen(pTab->zName), pTab->zName
+ );
+
+#ifndef SQLITE_OMIT_AUTOINCREMENT
+ /* If the sqlite_sequence table exists in this database, then update
+ ** it with the new table name.
+ */
+ if( sqlite3FindTable(db, "sqlite_sequence", zDb) ){
+ sqlite3NestedParse(pParse,
+ "UPDATE %Q.sqlite_sequence set name = %Q WHERE name = %Q",
+ zDb, zName, pTab->zName);
+ }
+#endif
+
+#ifndef SQLITE_OMIT_TRIGGER
+ /* If there are TEMP triggers on this table, modify the sqlite_temp_master
+ ** table. Don't do this if the table being ALTERed is itself located in
+ ** the temp database.
+ */
+ if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){
+ sqlite3NestedParse(pParse,
+ "UPDATE sqlite_temp_master SET "
+ "sql = sqlite_rename_trigger(sql, %Q), "
+ "tbl_name = %Q "
+ "WHERE %s;", zName, zName, zWhere);
+ sqliteFree(zWhere);
+ }
+#endif
+
+ /* Drop and reload the internal table schema. */
+ reloadTableSchema(pParse, pTab, zName);
+
+exit_rename_table:
+ sqlite3SrcListDelete(pSrc);
+ sqliteFree(zName);
+}
+
+
+/*
+** This function is called after an "ALTER TABLE ... ADD" statement
+** has been parsed. Argument pColDef contains the text of the new
+** column definition.
+**
+** The Table structure pParse->pNewTable was extended to include
+** the new column during parsing.
+*/
+void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
+ Table *pNew; /* Copy of pParse->pNewTable */
+ Table *pTab; /* Table being altered */
+ int iDb; /* Database number */
+ const char *zDb; /* Database name */
+ const char *zTab; /* Table name */
+ char *zCol; /* Null-terminated column definition */
+ Column *pCol; /* The new column */
+ Expr *pDflt; /* Default value for the new column */
+
+ if( pParse->nErr ) return;
+ pNew = pParse->pNewTable;
+ assert( pNew );
+
+ iDb = sqlite3SchemaToIndex(pParse->db, pNew->pSchema);
+ zDb = pParse->db->aDb[iDb].zName;
+ zTab = pNew->zName;
+ pCol = &pNew->aCol[pNew->nCol-1];
+ pDflt = pCol->pDflt;
+ pTab = sqlite3FindTable(pParse->db, zTab, zDb);
+ assert( pTab );
+
+#ifndef SQLITE_OMIT_AUTHORIZATION
+ /* Invoke the authorization callback. */
+ if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, 0) ){
+ return;
+ }
+#endif
+
+ /* If the default value for the new column was specified with a
+ ** literal NULL, then set pDflt to 0. This simplifies checking
+ ** for an SQL NULL default below.
+ */
+ if( pDflt && pDflt->op==TK_NULL ){
+ pDflt = 0;
+ }
+
+ /* Check that the new column is not specified as PRIMARY KEY or UNIQUE.
+ ** If there is a NOT NULL constraint, then the default value for the
+ ** column must not be NULL.
+ */
+ if( pCol->isPrimKey ){
+ sqlite3ErrorMsg(pParse, "Cannot add a PRIMARY KEY column");
+ return;
+ }
+ if( pNew->pIndex ){
+ sqlite3ErrorMsg(pParse, "Cannot add a UNIQUE column");
+ return;
+ }
+ if( pCol->notNull && !pDflt ){
+ sqlite3ErrorMsg(pParse,
+ "Cannot add a NOT NULL column with default value NULL");
+ return;
+ }
+
+ /* Ensure the default expression is something that sqlite3ValueFromExpr()
+ ** can handle (i.e. not CURRENT_TIME etc.)
+ */
+ if( pDflt ){
+ sqlite3_value *pVal;
+ if( sqlite3ValueFromExpr(pDflt, SQLITE_UTF8, SQLITE_AFF_NONE, &pVal) ){
+ /* malloc() has failed */
+ return;
+ }
+ if( !pVal ){
+ sqlite3ErrorMsg(pParse, "Cannot add a column with non-constant default");
+ return;
+ }
+ sqlite3ValueFree(pVal);
+ }
+
+ /* Modify the CREATE TABLE statement. */
+ zCol = sqliteStrNDup((char*)pColDef->z, pColDef->n);
+ if( zCol ){
+ char *zEnd = &zCol[pColDef->n-1];
+ while( (zEnd>zCol && *zEnd==';') || isspace(*(unsigned char *)zEnd) ){
+ *zEnd-- = '\0';
+ }
+ sqlite3NestedParse(pParse,
+ "UPDATE %Q.%s SET "
+ "sql = substr(sql,1,%d) || ', ' || %Q || substr(sql,%d,length(sql)) "
+ "WHERE type = 'table' AND name = %Q",
+ zDb, SCHEMA_TABLE(iDb), pNew->addColOffset, zCol, pNew->addColOffset+1,
+ zTab
+ );
+ sqliteFree(zCol);
+ }
+
+ /* If the default value of the new column is NULL, then set the file
+ ** format to 2. If the default value of the new column is not NULL,
+ ** the file format becomes 3.
+ */
+ sqlite3MinimumFileFormat(pParse, iDb, pDflt ? 3 : 2);
+
+ /* Reload the schema of the modified table. */
+ reloadTableSchema(pParse, pTab, pTab->zName);
+}
+
+/*
+** This function is called by the parser after the table-name in
+** an "ALTER TABLE <table-name> ADD" statement is parsed. Argument
+** pSrc is the full-name of the table being altered.
+**
+** This routine makes a (partial) copy of the Table structure
+** for the table being altered and sets Parse.pNewTable to point
+** to it. Routines called by the parser as the column definition
+** is parsed (i.e. sqlite3AddColumn()) add the new Column data to
+** the copy. The copy of the Table structure is deleted by tokenize.c
+** after parsing is finished.
+**
+** Routine sqlite3AlterFinishAddColumn() will be called to complete
+** coding the "ALTER TABLE ... ADD" statement.
+*/
+void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
+ Table *pNew;
+ Table *pTab;
+ Vdbe *v;
+ int iDb;
+ int i;
+ int nAlloc;
+
+ /* Look up the table being altered. */
+ assert( pParse->pNewTable==0 );
+ if( sqlite3MallocFailed() ) goto exit_begin_add_column;
+ pTab = sqlite3LocateTable(pParse, pSrc->a[0].zName, pSrc->a[0].zDatabase);
+ if( !pTab ) goto exit_begin_add_column;
+
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( IsVirtual(pTab) ){
+ sqlite3ErrorMsg(pParse, "virtual tables may not be altered");
+ goto exit_begin_add_column;
+ }
+#endif
+
+ /* Make sure this is not an attempt to ALTER a view. */
+ if( pTab->pSelect ){
+ sqlite3ErrorMsg(pParse, "Cannot add a column to a view");
+ goto exit_begin_add_column;
+ }
+
+ assert( pTab->addColOffset>0 );
+ iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
+
+ /* Put a copy of the Table struct in Parse.pNewTable for the
+ ** sqlite3AddColumn() function and friends to modify.
+ */
+ pNew = (Table *)sqliteMalloc(sizeof(Table));
+ if( !pNew ) goto exit_begin_add_column;
+ pParse->pNewTable = pNew;
+ pNew->nRef = 1;
+ pNew->nCol = pTab->nCol;
+ assert( pNew->nCol>0 );
+ nAlloc = (((pNew->nCol-1)/8)*8)+8;
+ assert( nAlloc>=pNew->nCol && nAlloc%8==0 && nAlloc-pNew->nCol<8 );
+ pNew->aCol = (Column *)sqliteMalloc(sizeof(Column)*nAlloc);
+ pNew->zName = sqliteStrDup(pTab->zName);
+ if( !pNew->aCol || !pNew->zName ){
+ goto exit_begin_add_column;
+ }
+ memcpy(pNew->aCol, pTab->aCol, sizeof(Column)*pNew->nCol);
+ for(i=0; i<pNew->nCol; i++){
+ Column *pCol = &pNew->aCol[i];
+ pCol->zName = sqliteStrDup(pCol->zName);
+ pCol->zColl = 0;
+ pCol->zType = 0;
+ pCol->pDflt = 0;
+ }
+ pNew->pSchema = pParse->db->aDb[iDb].pSchema;
+ pNew->addColOffset = pTab->addColOffset;
+ pNew->nRef = 1;
+
+ /* Begin a transaction and increment the schema cookie. */
+ sqlite3BeginWriteOperation(pParse, 0, iDb);
+ v = sqlite3GetVdbe(pParse);
+ if( !v ) goto exit_begin_add_column;
+ sqlite3ChangeCookie(pParse->db, v, iDb);
+
+exit_begin_add_column:
+ sqlite3SrcListDelete(pSrc);
+ return;
+}
+#endif /* SQLITE_ALTER_TABLE */
Added: Frontier/branches/SQLite/Common/sqlite3/analyze.c
===================================================================
--- Frontier/branches/SQLite/Common/sqlite3/analyze.c (rev 0)
+++ Frontier/branches/SQLite/Common/sqlite3/analyze.c 2006-08-30 21:45:37 UTC (rev 1490)
@@ -0,0 +1,403 @@
+/*
+** 2005 July 8
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+*************************************************************************
+** This file contains code associated with the ANALYZE command.
+**
+** @(#) $Id: analyze.c,v 1.16 2006/01/10 17:58:23 danielk1977 Exp $
+*/
+#ifndef SQLITE_OMIT_ANALYZE
+#include "sqliteInt.h"
+
+/*
+** This routine generates code that opens the sqlite_stat1 table on cursor
+** iStatCur.
+**
+** If the sqlite_stat1 tables does not previously exist, it is created.
+** If it does previously exist, all entires associated with table zWhere
+** are removed. If zWhere==0 then all entries are removed.
+*/
+static void openStatTable(
+ Parse *pParse, /* Parsing context */
+ int iDb, /* The database we are looking in */
+ int iStatCur, /* Open the sqlite_stat1 table on this cursor */
+ const char *zWhere /* Delete entries associated with this table */
+){
+ sqlite3 *db = pParse->db;
+ Db *pDb;
+ int iRootPage;
+ Table *pStat;
+ Vdbe *v = sqlite3GetVdbe(pParse);
+
+ pDb = &db->aDb[iDb];
+ if( (pStat = sqlite3FindTable(db, "sqlite_stat1", pDb->zName))==0 ){
+ /* The sqlite_stat1 tables does not exist. Create it.
+ ** Note that a side-effect of the CREATE TABLE statement is to leave
+ ** the rootpage of the new table on the top of the stack. This is
+ ** important because the OpenWrite opcode below will be needing it. */
+ sqlite3NestedParse(pParse,
+ "CREATE TABLE %Q.sqlite_stat1(tbl,idx,stat)",
+ pDb->zName
+ );
+ iRootPage = 0; /* Cause rootpage to be taken from top of stack */
+ }else if( zWhere ){
+ /* The sqlite_stat1 table exists. Delete all entries associated with
+ ** the table zWhere. */
+ sqlite3NestedParse(pParse,
+ "DELETE FROM %Q.sqlite_stat1 WHERE tbl=%Q",
+ pDb->zName, zWhere
+ );
+ iRootPage = pStat->tnum;
+ }else{
+ /* The sqlite_stat1 table already exists. Delete all rows. */
+ iRootPage = pStat->tnum;
+ sqlite3VdbeAddOp(v, OP_Clear, pStat->tnum, iDb);
+ }
+
+ /* Open the sqlite_stat1 table for writing. Unless it was created
+ ** by this vdbe program, lock it for writing at the shared-cache level.
+ ** If this vdbe did create the sqlite_stat1 table, then it must have
+ ** already obtained a schema-lock, making the write-lock redundant.
+ */
+ if( iRootPage>0 ){
+ sqlite3TableLock(pParse, iDb, iRootPage, 1, "sqlite_stat1");
+ }
+ sqlite3VdbeAddOp(v, OP_Integer, iDb, 0);
+ sqlite3VdbeAddOp(v, OP_OpenWrite, iStatCur, iRootPage);
+ sqlite3VdbeAddOp(v, OP_SetNumColumns, iStatCur, 3);
+}
+
+/*
+** Generate code to do an analysis of all indices associated with
+** a single table.
+*/
+static void analyzeOneTable(
+ Parse *pParse, /* Parser context */
+ Table *pTab, /* Table whose indices are to be analyzed */
+ int iStatCur, /* Cursor that writes to the sqlite_stat1 table */
+ int iMem /* Available memory locations begin here */
+){
+ Index *pIdx; /* An index to being analyzed */
+ int iIdxCur; /* Cursor number for index being analyzed */
+ int nCol; /* Number of columns in the index */
+ Vdbe *v; /* The virtual machine being built up */
+ int i; /* Loop counter */
+ int topOfLoop; /* The top of the loop */
+ int endOfLoop; /* The end of the lo...
[truncated message content] |
|
From: <dav...@us...> - 2006-08-30 19:40:34
|
Revision: 1489
http://svn.sourceforge.net/frontierkernel/?rev=1489&view=rev
Author: davidgewirtz
Date: 2006-08-30 12:38:37 -0700 (Wed, 30 Aug 2006)
Log Message:
-----------
This is a refresh of the SQLite build, bringing all the trunk code into the SQLite build. After this refreshes the build, I'll add the SQLite changes back into this branch. -- DG
Modified Paths:
--------------
Frontier/branches/SQLite/Common/IOAToolkit/ioabutton.c
Frontier/branches/SQLite/Common/IOAToolkit/ioaicon.c
Frontier/branches/SQLite/Common/IowaRuntime/Headers/iowacore.h
Frontier/branches/SQLite/Common/IowaRuntime/Source/iowacore.c
Frontier/branches/SQLite/Common/IowaRuntime/Source/iowaruntime.c
Frontier/branches/SQLite/Common/Paige/libpaigemacho.a
Frontier/branches/SQLite/Common/SystemHeaders/standard.h
Frontier/branches/SQLite/Common/headers/claylinelayout.h
Frontier/branches/SQLite/Common/headers/config.r
Frontier/branches/SQLite/Common/headers/dialogs.h
Frontier/branches/SQLite/Common/headers/file.h
Frontier/branches/SQLite/Common/headers/frontierconfig.h
Frontier/branches/SQLite/Common/headers/frontierdefs.h
Frontier/branches/SQLite/Common/headers/icon.h
Frontier/branches/SQLite/Common/headers/kernelverbdefs.h
Frontier/branches/SQLite/Common/headers/kernelverbs.h
Frontier/branches/SQLite/Common/headers/langinternal.h
Frontier/branches/SQLite/Common/headers/macconv.h
Frontier/branches/SQLite/Common/headers/osincludes.h
Frontier/branches/SQLite/Common/headers/processinternal.h
Frontier/branches/SQLite/Common/headers/shellprivate.h
Frontier/branches/SQLite/Common/headers/stringdefs.h
Frontier/branches/SQLite/Common/headers/strings.h
Frontier/branches/SQLite/Common/headers/tablestructure.h
Frontier/branches/SQLite/Common/headers/versions.h
Frontier/branches/SQLite/Common/resources/Mac/kernelverbs.r
Frontier/branches/SQLite/Common/resources/Mac/lang.r
Frontier/branches/SQLite/Common/resources/Win32/WinLand.rc
Frontier/branches/SQLite/Common/resources/Win32/kernelverbs.rc
Frontier/branches/SQLite/Common/source/FrontierWinMain.c
Frontier/branches/SQLite/Common/source/OpenTransportNetEvents.c
Frontier/branches/SQLite/Common/source/WinSockNetEvents.c
Frontier/branches/SQLite/Common/source/about.c
Frontier/branches/SQLite/Common/source/cancoon.c
Frontier/branches/SQLite/Common/source/cancoonwindow.c
Frontier/branches/SQLite/Common/source/claybrowserstruc.c
Frontier/branches/SQLite/Common/source/claybrowservalidate.c
Frontier/branches/SQLite/Common/source/claycallbacks.c
Frontier/branches/SQLite/Common/source/claylinelayout.c
Frontier/branches/SQLite/Common/source/command.c
Frontier/branches/SQLite/Common/source/db.c
Frontier/branches/SQLite/Common/source/dockmenu.c
Frontier/branches/SQLite/Common/source/filedialog.c
Frontier/branches/SQLite/Common/source/filemp3.c
Frontier/branches/SQLite/Common/source/fileops.c
Frontier/branches/SQLite/Common/source/fileverbs.c
Frontier/branches/SQLite/Common/source/findinfile.c
Frontier/branches/SQLite/Common/source/font.c
Frontier/branches/SQLite/Common/source/frontierconfig.c
Frontier/branches/SQLite/Common/source/icon.c
Frontier/branches/SQLite/Common/source/iso8859.c
Frontier/branches/SQLite/Common/source/lang.c
Frontier/branches/SQLite/Common/source/langcard.c
Frontier/branches/SQLite/Common/source/langcrypt.c
Frontier/branches/SQLite/Common/source/langdate.c
Frontier/branches/SQLite/Common/source/langdll.c
Frontier/branches/SQLite/Common/source/langexternal.c
Frontier/branches/SQLite/Common/source/langhash.c
Frontier/branches/SQLite/Common/source/langhtml.c
Frontier/branches/SQLite/Common/source/langipc.c
Frontier/branches/SQLite/Common/source/langlist.c
Frontier/branches/SQLite/Common/source/langmath.c
Frontier/branches/SQLite/Common/source/langops.c
Frontier/branches/SQLite/Common/source/langpack.c
Frontier/branches/SQLite/Common/source/langquicktime.c
Frontier/branches/SQLite/Common/source/langregexp.c
Frontier/branches/SQLite/Common/source/langscan.c
Frontier/branches/SQLite/Common/source/langstartup.c
Frontier/branches/SQLite/Common/source/langsystypes.c
Frontier/branches/SQLite/Common/source/langtree.c
Frontier/branches/SQLite/Common/source/langvalue.c
Frontier/branches/SQLite/Common/source/langverbs.c
Frontier/branches/SQLite/Common/source/langwinipc.c
Frontier/branches/SQLite/Common/source/langxml.c
Frontier/branches/SQLite/Common/source/memory.c
Frontier/branches/SQLite/Common/source/menupack.c
Frontier/branches/SQLite/Common/source/menuverbs.c
Frontier/branches/SQLite/Common/source/odbengine.c
Frontier/branches/SQLite/Common/source/opicons.c
Frontier/branches/SQLite/Common/source/oplangtext.c
Frontier/branches/SQLite/Common/source/oplist.c
Frontier/branches/SQLite/Common/source/oppack.c
Frontier/branches/SQLite/Common/source/oppopup.c
Frontier/branches/SQLite/Common/source/oprefcon.c
Frontier/branches/SQLite/Common/source/ops.c
Frontier/branches/SQLite/Common/source/opstructure.c
Frontier/branches/SQLite/Common/source/opvalidate.c
Frontier/branches/SQLite/Common/source/opverbs.c
Frontier/branches/SQLite/Common/source/opxml.c
Frontier/branches/SQLite/Common/source/osacomponent.c
Frontier/branches/SQLite/Common/source/osawindows.c
Frontier/branches/SQLite/Common/source/pict.c
Frontier/branches/SQLite/Common/source/player.c
Frontier/branches/SQLite/Common/source/popup.c
Frontier/branches/SQLite/Common/source/process.c
Frontier/branches/SQLite/Common/source/progressbar.c
Frontier/branches/SQLite/Common/source/quickdraw.c
Frontier/branches/SQLite/Common/source/resources.c
Frontier/branches/SQLite/Common/source/scripts.c
Frontier/branches/SQLite/Common/source/search.c
Frontier/branches/SQLite/Common/source/shell.c
Frontier/branches/SQLite/Common/source/shellfile.c
Frontier/branches/SQLite/Common/source/shelljuggler.c
Frontier/branches/SQLite/Common/source/shellmenu.c
Frontier/branches/SQLite/Common/source/shellprint.c
Frontier/branches/SQLite/Common/source/shellsysverbs.c
Frontier/branches/SQLite/Common/source/shellverbs.c
Frontier/branches/SQLite/Common/source/shellwindow.c
Frontier/branches/SQLite/Common/source/shellwindowverbs.c
Frontier/branches/SQLite/Common/source/strings.c
Frontier/branches/SQLite/Common/source/stringverbs.c
Frontier/branches/SQLite/Common/source/tabledisplay.c
Frontier/branches/SQLite/Common/source/tableexternal.c
Frontier/branches/SQLite/Common/source/tableformats.c
Frontier/branches/SQLite/Common/source/tableops.c
Frontier/branches/SQLite/Common/source/tablepack.c
Frontier/branches/SQLite/Common/source/tablepopup.c
Frontier/branches/SQLite/Common/source/tablestructure.c
Frontier/branches/SQLite/Common/source/tablevalidate.c
Frontier/branches/SQLite/Common/source/winregistry.c
Frontier/branches/SQLite/Common/source/wpengine.c
Frontier/branches/SQLite/FrontierSDK/Toolkits/AppletToolkit/Headers/appleticons.h
Frontier/branches/SQLite/README.txt
Frontier/branches/SQLite/build_GNU/Makefile
Frontier/branches/SQLite/build_VC2K3/Frontier.vcproj
Frontier/branches/SQLite/build_VC2K5/Frontier.vcproj
Frontier/branches/SQLite/build_XCode/Frontier.xcode/project.pbxproj
Added Paths:
-----------
Frontier/branches/SQLite/Common/Paige/libpaigefat.a
Frontier/branches/SQLite/Common/headers/byteorder.h
Frontier/branches/SQLite/build_XCode/FrontierFat.xcodeproj/
Frontier/branches/SQLite/build_XCode/FrontierFat.xcodeproj/project.pbxproj
Removed Paths:
-------------
Frontier/branches/SQLite/Common/Paige/PaigePPC.lib
Frontier/branches/SQLite/Common/headers/langsqlite.h
Frontier/branches/SQLite/Common/source/langsqlite.c
Frontier/branches/SQLite/Common/sqlite3/
Frontier/branches/SQLite/build_XCode/FrontierFat.xcodeproj/project.pbxproj
Frontier/branches/SQLite/build_XCode/FrontierMachO.mcp
Frontier/branches/SQLite/build_XCode/frontier.osxmacho.debug.pch
Property Changed:
----------------
Frontier/branches/SQLite/build_CWPro8/OPML.mcp
Frontier/branches/SQLite/build_VC2K3/Frontier.sln
Frontier/branches/SQLite/build_VC2K3/Frontier.vcproj
Frontier/branches/SQLite/build_VC2K5/Frontier.sln
Frontier/branches/SQLite/build_VC2K5/Frontier.vcproj
Frontier/branches/SQLite/build_XCode/tools/
Frontier/branches/SQLite/build_XCode/tools/postlinking.sh
Frontier/branches/SQLite/resources/OPML/OPML.icns
Frontier/branches/SQLite/resources/OPML/OPMLdoc.icns
Modified: Frontier/branches/SQLite/Common/IOAToolkit/ioabutton.c
===================================================================
--- Frontier/branches/SQLite/Common/IOAToolkit/ioabutton.c 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/IOAToolkit/ioabutton.c 2006-08-30 19:38:37 UTC (rev 1489)
@@ -136,7 +136,7 @@
GetThemeFont (kThemePushButtonFont, smSystemScript, fontname, &fontsize, &fontstyle);
- fontgetnumber (fontname, &idfont);
+ fontgetnumber (fontname, (short *)(&idfont));
pushstyle (geneva, 9, bold);
Modified: Frontier/branches/SQLite/Common/IOAToolkit/ioaicon.c
===================================================================
--- Frontier/branches/SQLite/Common/IOAToolkit/ioaicon.c 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/IOAToolkit/ioaicon.c 2006-08-30 19:38:37 UTC (rev 1489)
@@ -232,7 +232,7 @@
(**h).haslabel = true;
- (**h).align = atVerticalCenter + atHorizontalCenter;
+ (**h).align = kAlignAbsoluteCenter;
*hdata = h;
Modified: Frontier/branches/SQLite/Common/IowaRuntime/Headers/iowacore.h
===================================================================
--- Frontier/branches/SQLite/Common/IowaRuntime/Headers/iowacore.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/IowaRuntime/Headers/iowacore.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -28,6 +28,7 @@
#ifndef iowacoreinclude
#define iowacoreinclude
+#include "byteorder.h" /* 2006-04-17 aradke: for SWAP_BYTE_ORDER */
#ifdef coderesource /*we're building into a UCMD*/
@@ -105,8 +106,26 @@
short defaulttextcolor;
short defaultframecolor;
+
+#ifdef SWAP_BYTE_ORDER
+ unsigned short wastebits: 10; /*room for more booleans*/
+
+ unsigned short floater: 1;
+
+ unsigned short flinvisiblegrid: 1;
+
+ unsigned short flselection: 1;
+
+ unsigned short flgrid: 1;
+
+ unsigned short defaulttransparent: 1;
+
unsigned short defaulthasframe: 1;
+
+#else
+
+ unsigned short defaulthasframe: 1;
unsigned short defaulttransparent: 1;
@@ -119,7 +138,9 @@
unsigned short floater: 1;
unsigned short wastebits: 10; /*room for more booleans*/
-
+
+#endif
+
short gridunits;
short rightborder, bottomborder;
@@ -163,9 +184,31 @@
short objectlinespacing;
short objectindentation;
+
+#ifdef SWAP_BYTE_ORDER
+ unsigned short wastebits1: 1; /* room for more booleans */
+
+ unsigned short objectdisabled: 1;
+
+ unsigned short objectfastscript: 1;
+
+ unsigned short objecttransparent: 1;
+
+ unsigned short lastinlist: 1;
+
+ unsigned short objectinvisible: 1;
+
+ unsigned short objectflag: 1;
+
unsigned short objecthasframe: 1;
+ unsigned short wastebits2: 8; /* room for more booleans */
+
+#else
+
+ unsigned short objecthasframe: 1;
+
unsigned short objectflag: 1;
unsigned short objectinvisible: 1;
@@ -178,6 +221,10 @@
unsigned short objectdisabled: 1;
+ unsigned short wastebits: 9; /* room for more booleans */
+
+#endif
+
long objecttype; /*room for lots of object types*/
RGBColor objectfillcolor, objecttextcolor, objectframecolor;
Modified: Frontier/branches/SQLite/Common/IowaRuntime/Source/iowacore.c
===================================================================
--- Frontier/branches/SQLite/Common/IowaRuntime/Source/iowacore.c 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/IowaRuntime/Source/iowacore.c 2006-08-30 19:38:37 UTC (rev 1489)
@@ -29,6 +29,7 @@
#include "standard.h"
#include "shelltypes.h"
+#include "byteorder.h"
#ifdef iowaRuntime
@@ -2728,12 +2729,60 @@
boolean unpackobject (hdlobject *hobject, boolean *lastinlist) {
+ /*
+ 2006-04-17 aradke: must convert packed data to native byte-order on Intel Macs
+ */
+
tydiskobject info;
tyobject obj;
hdlobject h;
moveleft (unpack.p, &info, longsizeof (info));
+ disktomemshort (info.versionnumber);
+
+ disktomemshort (info.objectrect.top);
+ disktomemshort (info.objectrect.left);
+ disktomemshort (info.objectrect.bottom);
+ disktomemshort (info.objectrect.right);
+
+ disktomemlong (info.lenname);
+ disktomemlong (info.lenvalue);
+ disktomemlong (info.lenscript);
+ disktomemlong (info.lendata);
+
+ disktomemshort (info.objectfontsize);
+ disktomemshort (info.objectstyle);
+ disktomemshort (info.objectjustification);
+ disktomemshort (info.objectrecalcstatus);
+ disktomemshort (info.objectrecalcperiod);
+ disktomemshort (info.unused1);
+ disktomemshort (info.objectdropshadowdepth);
+ disktomemshort (info.objectlinespacing);
+ disktomemshort (info.objectindentation);
+
+ /*
+ 2006-04-17 aradke: The info.objecthasframe etc. bit-field doesn't need to be byte-swapped,
+ because this is already taken care of via the endian-specific definition in iowacore.h.
+ */
+
+ disktomemlong (info.objecttype);
+
+ disktomemshort (info.objectfillcolor.red);
+ disktomemshort (info.objectfillcolor.green);
+ disktomemshort (info.objectfillcolor.blue);
+
+ disktomemshort (info.objecttextcolor.red);
+ disktomemshort (info.objecttextcolor.green);
+ disktomemshort (info.objecttextcolor.blue);
+
+ disktomemshort (info.objectframecolor.red);
+ disktomemshort (info.objectframecolor.green);
+ disktomemshort (info.objectframecolor.blue);
+
+ disktomemlong (info.objectlanguage);
+ disktomemlong (info.lenrecalcscript);
+
if (info.versionnumber == 1) /*record format changed to allow 4 bytes for object type*/
info.objecttype = (unsigned long) info.v1objecttype;
@@ -2898,6 +2947,10 @@
boolean iowaunpack (Handle hpacked) {
+
+ /*
+ 2006-04-17 aradke: must convert packed data to native byte-order on Intel Macs
+ */
hdlcard hc = iowadata;
hdlobject newlist;
@@ -2917,6 +2970,8 @@
unpack.p += longsizeof (header);
+ disktomemshort (header.versionnumber);
+
if (header.versionnumber < 4) { /*the header grew by 66 bytes in version 4*/
header.lenwindowtitle = 0;
@@ -2924,6 +2979,30 @@
unpack.p -= 66;
}
+ disktomemshort (header.v2backcolor);
+
+ disktomemlong (header.lenembeddedtable);
+
+ disktomemshort (header.defaultfillcolor);
+ disktomemshort (header.defaulttextcolor);
+ disktomemshort (header.defaultframecolor);
+
+ /*
+ 2006-04-17 aradke: The header.defaulthasframe etc. bit-field doesn't need to be byte-swapped,
+ because this is already taken care of via the endian-specific definition in iowacore.h.
+ */
+
+ disktomemshort (header.gridunits);
+ disktomemshort (header.rightborder);
+ disktomemshort (header.bottomborder);
+
+ disktomemshort (header.backcolor.red);
+ disktomemshort (header.backcolor.green);
+ disktomemshort (header.backcolor.blue);
+
+ disktomemlong (header.idwindow);
+ disktomemlong (header.lenwindowtitle);
+
if (header.versionnumber <= 2) /*back color was stored as an index, now stored as a RGBColor*/
oldclutconverter (header.v2backcolor, &header.backcolor);
Modified: Frontier/branches/SQLite/Common/IowaRuntime/Source/iowaruntime.c
===================================================================
--- Frontier/branches/SQLite/Common/IowaRuntime/Source/iowaruntime.c 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/IowaRuntime/Source/iowaruntime.c 2006-08-30 19:38:37 UTC (rev 1489)
@@ -28,6 +28,8 @@
#include "frontier.h"
#include "standard.h"
+#include "byteorder.h"
+
#include "shelltypes.h"
#include <appletdefs.h>
#include <iac.h>
@@ -56,6 +58,7 @@
#define copyCmd 4
#define pasteCmd 5
#define clearCmd 6
+#define selectAllCmd 8
#endif
@@ -1720,6 +1723,11 @@
break;
+ case selectAllCmd: /* 2006-05-04 smd */
+ editselectall (hedit);
+
+ break;
+
} /*switch*/
return (true);
@@ -2051,6 +2059,8 @@
moveleft (*hpackedcard, &header, longsizeof (header));
+ disktomemlong (header.idwindow); /* 2006-04-17 aradke: for Mac Intel */
+
switch (header.idwindow) {
case 1024: case 1025:
Deleted: Frontier/branches/SQLite/Common/Paige/PaigePPC.lib
===================================================================
(Binary files differ)
Copied: Frontier/branches/SQLite/Common/Paige/libpaigefat.a (from rev 1488, Frontier/trunk/Common/Paige/libpaigefat.a)
===================================================================
(Binary files differ)
Modified: Frontier/branches/SQLite/Common/Paige/libpaigemacho.a
===================================================================
(Binary files differ)
Modified: Frontier/branches/SQLite/Common/SystemHeaders/standard.h
===================================================================
--- Frontier/branches/SQLite/Common/SystemHeaders/standard.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/SystemHeaders/standard.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -40,32 +40,6 @@
#include "FastTimes.h"
#endif
-#ifdef PACKFLIPPED
- #define conditionallongswap(x) dolongswap(x)
- #define conditionalshortswap(x) doshortswap(x)
- #define conditionalenumswap(x) doshortswap(x)
- #define disklong(x) dolongswap(x)
- #define memlong(x) dolongswap(x)
- #define diskshort(x) doshortswap(x)
- #define memshort(x) doshortswap(x)
- #define disktomemshort(x) shortswap(x)
- #define disktomemlong(x) longswap(x)
- #define memtodiskshort(x) shortswap(x)
- #define memtodisklong(x) longswap(x)
-#else
- #define conditionallongswap(x) x
- #define conditionalshortswap(x) x
- #define conditionalenumswap(x) x
- #define disklong(x) x
- #define memlong(x) x
- #define diskshort(x) x
- #define memshort(x) x
- #define disktomemshort(x)
- #define disktomemlong(x)
- #define memtodiskshort(x)
- #define memtodisklong(x)
-#endif
-
#include "stringdefs.h" /* embedded string definitions */
#ifndef appletdefsinclude
@@ -352,6 +326,8 @@
#define lastchar(bs) (bs [stringlength (bs)-1])
#endif
+#define BIGSTRING(s) ((unsigned char *)(s))
+
#define setemptystring(bs) (setstringlength(bs,0))
#define isemptystring(bs) (stringlength(bs)==0)
@@ -461,6 +437,10 @@
#define quickdrawglobal(x) qd.x
+extern boolean flcominitialized; /* set up in lang.c */
+extern boolean initCOM( void ); /* see FrontierWinMain.c */
+extern void shutdownCOM( void );
+
#endif
#endif
Copied: Frontier/branches/SQLite/Common/headers/byteorder.h (from rev 1488, Frontier/trunk/Common/headers/byteorder.h)
===================================================================
--- Frontier/branches/SQLite/Common/headers/byteorder.h (rev 0)
+++ Frontier/branches/SQLite/Common/headers/byteorder.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -0,0 +1,192 @@
+
+/* $Id$ */
+
+/******************************************************************************
+
+ UserLand Frontier(tm) -- High performance Web content management,
+ object database, system-level and Internet scripting environment,
+ including source code editing and debugging.
+
+ Copyright (C) 1992-2004 UserLand Software, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+******************************************************************************/
+
+#ifndef byteorderinclude
+#define byteorderinclude
+
+/*
+ 2006-04-08 aradke: determine native byte order and define byte swapping macros
+*/
+
+#if (defined(WIN32) || defined(__i386) || defined(__i386__)) && !defined(__LITTLE_ENDIAN__)
+ #define __LITTLE_ENDIAN__ 1
+#endif
+
+
+#if defined(__LITTLE_ENDIAN__) && ((__LITTLE_ENDIAN__ == 1) || !defined (__BIG_ENDIAN__))
+
+ #define SWAP_BYTE_ORDER 1
+
+ #define conditionallongswap(x) dolongswap(x)
+ #define conditionalshortswap(x) doshortswap(x)
+ #define conditionalenumswap(x) doshortswap(x)
+ #define disklong(x) dolongswap(x)
+ #define memlong(x) dolongswap(x)
+ #define diskshort(x) doshortswap(x)
+ #define memshort(x) doshortswap(x)
+ #define disktomemshort(x) shortswap(x)
+ #define disktomemlong(x) longswap(x)
+ #define memtodiskshort(x) shortswap(x)
+ #define memtodisklong(x) longswap(x)
+
+#elif defined(__BIG_ENDIAN__) && ((__BIG_ENDIAN__ == 1) || !defined (__LITTLE_ENDIAN__))
+
+ #undef SWAP_BYTE_ORDER
+
+ #define conditionallongswap(x) x
+ #define conditionalshortswap(x) x
+ #define conditionalenumswap(x) x
+ #define disklong(x) x
+ #define memlong(x) x
+ #define diskshort(x) x
+ #define memshort(x) x
+ #define disktomemshort(x)
+ #define disktomemlong(x)
+ #define memtodiskshort(x)
+ #define memtodisklong(x)
+
+#else
+
+ #error "Couldn't determine byte order of target architecture, update osincludes.h"
+
+#endif
+
+
+/*
+ 2006-04-16 aradke: Carbon resource manager resources are in big endian format.
+ If we are running on an Intel Mac, we need to perform byte order conversion.
+*/
+
+#if (defined(TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON == 1) && defined(SWAP_BYTE_ORDER))
+
+ #define SWAP_REZ_BYTE_ORDER 1
+
+ #define reztomemshort(x) shortswap(x)
+ #define reztomemlong(x) longswap(x)
+ #define reztomemrect(x) do {shortswap((x).top); shortswap((x).left); shortswap((x).bottom); shortswap((x).right);} while(0)
+ #define memtorezshort(x) shortswap(x)
+ #define memtorezlong(x) longswap(x)
+ #define memtorezrect(x) do {shortswap((x).top); shortswap((x).left); shortswap((x).bottom); shortswap((x).right);} while(0)
+
+#else
+
+ #undef SWAP_REZ_BYTE_ORDER
+
+ #define reztomemshort(x)
+ #define reztomemlong(x)
+ #define reztomemrect(x)
+ #define memtorezshort(x)
+ #define memtorezlong(x)
+ #define memtorezrect(x)
+
+#endif
+
+
+#define longswap(foo) do {foo = dolongswap(foo);} while (0)
+#define shortswap(foo) do {foo = doshortswap(foo);} while (0)
+
+
+#if (defined(TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON == 1) && defined(__GNUC__))
+
+ /* using system sdk functions from CFByteOrder.h */
+
+ #define dolongswap(foo) CFSwapInt32(foo)
+ #define doshortswap(foo) CFSwapInt16(foo)
+
+#elif (defined(__i386__) && defined(__GNUC__))
+
+ /* using AT&T x86 assembly code syntax */
+
+ inline long dolongswap (long foo) {
+
+ __asm__("mov foo,%eax\nbswap %eax\nmov %eax,foo\n");
+
+ return (foo);
+ } /*dolongswap*/
+
+ inline short doshortswap (short foo) {
+
+ __asm__("mov foo,%ax\n mov %al,%bh\nmov %ah,%bl\nmov %bx,foo");
+
+ return (foo);
+ } /*doshortswap*/
+
+#elif defined(WIN32)
+
+ /* using Intel x86 assembly code syntax */
+
+ __inline long dolongswap (long foo) {
+
+ _asm
+ {
+ mov eax,foo
+ bswap eax
+ mov foo,eax
+ }
+
+ return (foo);
+ } /*dolongswap*/
+
+ __inline short doshortswap (short foo) {
+
+ _asm
+ {
+ mov ax,foo
+ mov bh,al
+ mov bl,ah
+ mov foo,bx
+ }
+
+ return (foo);
+ } /*doshortswap*/
+
+#else
+
+ /* portable code using only C operators */
+
+ inline long dolongswap (long foo) {
+
+ foo = ((((foo) >> 24) & 0x000000ff)
+ | (((foo) & 0x00ff0000) >> 8)
+ | (((foo) & 0x0000ff00) << 8)
+ | (((foo) & 0x000000ff) << 24));
+
+ return (foo);
+ } /*dolongswap*/
+
+ inline short doshortswap (short foo) {
+
+ foo = ((((foo) >> 8) & 0x00ff)
+ | (((foo) << 8) & 0xff00));
+
+ return (foo);
+ } /*doshortswap*/
+
+#endif
+
+
+#endif /* byteorderinclude */
Modified: Frontier/branches/SQLite/Common/headers/claylinelayout.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/claylinelayout.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/claylinelayout.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -79,24 +79,24 @@
} tycomputedlineinfo;
-#define str_claydisplay ("\x0b" "claydisplay")
-#define str_realicons ("\x09" "realicons")
-#define str_filenamebold ("\x0c" "filenamebold")
-#define str_includeline2 ("\x0c" "includeline2")
-#define str_includedate ("\x0b" "includedate")
-#define str_includeframe ("\x0c" "includeframe")
-#define str_iconsize ("\x08" "iconsize")
-#define str_fillcolor ("\x09" "fillcolor")
-#define str_framecolor ("\x0a" "framecolor")
-#define str_cursorcolor ("\x0b" "cursorcolor")
-#define str_filenamecolor ("\x0d" "filenamecolor")
-#define str_othertextcolor ("\x0e" "othertextcolor")
-#define str_backcolor ("\x09" "backcolor")
-#define str_statuscolor ("\x0b" "statuscolor")
-#define str_filenamefont ("\x0c" "filenamefont")
-#define str_othertextfont ("\x0d" "othertextfont")
-#define str_filenamefontsize ("\x10" "filenamefontsize")
-#define str_othertextfontsize ("\x11" "othertextfontsize")
+#define str_claydisplay (BIGSTRING ("\x0b" "claydisplay"))
+#define str_realicons (BIGSTRING ("\x09" "realicons"))
+#define str_filenamebold (BIGSTRING ("\x0c" "filenamebold"))
+#define str_includeline2 (BIGSTRING ("\x0c" "includeline2"))
+#define str_includedate (BIGSTRING ("\x0b" "includedate"))
+#define str_includeframe (BIGSTRING ("\x0c" "includeframe"))
+#define str_iconsize (BIGSTRING ("\x08" "iconsize"))
+#define str_fillcolor (BIGSTRING ("\x09" "fillcolor"))
+#define str_framecolor (BIGSTRING ("\x0a" "framecolor"))
+#define str_cursorcolor (BIGSTRING ("\x0b" "cursorcolor"))
+#define str_filenamecolor (BIGSTRING ("\x0d" "filenamecolor"))
+#define str_othertextcolor (BIGSTRING ("\x0e" "othertextcolor"))
+#define str_backcolor (BIGSTRING ("\x09" "backcolor"))
+#define str_statuscolor (BIGSTRING ("\x0b" "statuscolor"))
+#define str_filenamefont (BIGSTRING ("\x0c" "filenamefont"))
+#define str_othertextfont (BIGSTRING ("\x0d" "othertextfont"))
+#define str_filenamefontsize (BIGSTRING ("\x10" "filenamefontsize"))
+#define str_othertextfontsize (BIGSTRING ("\x11" "othertextfontsize"))
extern void claybrowserinitdraw (void);
@@ -146,4 +146,4 @@
#endif
-#endif
\ No newline at end of file
+#endif
Modified: Frontier/branches/SQLite/Common/headers/config.r
===================================================================
--- Frontier/branches/SQLite/Common/headers/config.r 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/config.r 2006-08-30 19:38:37 UTC (rev 1489)
@@ -27,37 +27,37 @@
type'cnfg' {
- boolean nohorizscroll, horizscroll; /*window has horiz scrollbar?*/
+ integer nohorizscroll = 0, horizscroll = 1; /*window has horiz scrollbar?*/
- boolean novertscroll, vertscroll;
+ integer novertscroll = 0, vertscroll = 1;
- boolean dontfloat, windowfloats; /*is it a floating palette window?*/
+ integer dontfloat = 0, windowfloats = 1; /*is it a floating palette window?*/
- boolean nomessagearea, messagearea; /*allocate space for a message area?*/
+ integer nomessagearea = 0, messagearea = 1; /*allocate space for a message area?*/
- boolean dontinsetcontentrect, insetcontentrect; /*if true we inset by 3 pixels*/
+ integer dontinsetcontentrect = 0, insetcontentrect = 1; /*if true we inset by 3 pixels*/
- boolean nonewonlaunch, newonlaunch;
+ integer nonewonlaunch = 0, newonlaunch = 1;
- boolean dontopenresfile, openresfile;
+ integer dontopenresfile = 0, openresfile = 1;
- boolean normalwindow, dialogwindow; /*do a GetNewDialog on creating one of these windows?*/
+ integer normalwindow = 0, dialogwindow = 1; /*do a GetNewDialog on creating one of these windows?*/
- boolean notgrowable, isgrowable; /*provide a grow box for window*/
+ integer notgrowable = 0, isgrowable = 1; /*provide a grow box for window*/
- boolean dontcreateonnew, createonnew;
+ integer dontcreateonnew = 0, createonnew = 1;
- boolean nowindoidscrollbars, windoidscrollbars;
+ integer nowindoidscrollbars = 0, windoidscrollbars = 1;
- boolean notstoredindatabase, storedindatabase;
+ integer notstoredindatabase = 0, storedindatabase = 1;
- boolean handlesownsave, parentwindowhandlessave;
+ integer handlesownsave = 0, parentwindowhandlessave = 1;
- boolean donteraseonresize, eraseonresize;
+ integer donteraseonresize = 0, eraseonresize = 1;
- boolean consumefrontclicks, dontconsumefrontclicks;
+ integer consumefrontclicks = 0, dontconsumefrontclicks = 1;
- boolean monochromewindow, colorwindow;
+ integer monochromewindow = 0, colorwindow = 1;
integer onehalf = 2, onethird = 3, onequarter = 4;
Modified: Frontier/branches/SQLite/Common/headers/dialogs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/dialogs.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/dialogs.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -96,15 +96,15 @@
/* dialog button text */
#ifdef MACVERSION
- #define cancelbuttontext "\x06" "Cancel"
- #define duplicatebuttontext "\x09" "Duplicate"
- #define replacebuttontext "\x07" "Replace"
+ #define cancelbuttontext BIGSTRING ("\x06" "Cancel")
+ #define duplicatebuttontext BIGSTRING ("\x09" "Duplicate")
+ #define replacebuttontext BIGSTRING ("\x07" "Replace")
#endif
#ifdef WIN95VERSION
- #define cancelbuttontext "\x07" "&Cancel"
- #define duplicatebuttontext "\x0a" "&Duplicate"
- #define replacebuttontext "\x08" "&Replace"
+ #define cancelbuttontext BIGSTRING ("\x07" "&Cancel")
+ #define duplicatebuttontext BIGSTRING ("\x0a" "&Duplicate")
+ #define replacebuttontext BIGSTRING ("\x08" "&Replace")
#endif
Modified: Frontier/branches/SQLite/Common/headers/file.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/file.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/file.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -411,6 +411,8 @@
extern boolean fifreadhandle (const tyfilespec *, long, Handle *);
+extern boolean fifreadfile (const tyfilespec *fs, Handle *x); /* 2006-04-11 aradke */
+
extern boolean fifwritehandle (const tyfilespec *, Handle);
extern boolean fifsetposition (const tyfilespec *, long);
@@ -422,7 +424,7 @@
extern boolean fifgetendoffile (const tyfilespec *fs, long *eof);
- /* filepath.c */
+#pragma mark === filepath.c ===
extern boolean directorytopath (long, short, bigstring);
@@ -447,7 +449,7 @@
extern void initfsdefault (void); /* 2005-07-18 creedon */
- /*fileverbs.c*/
+#pragma mark === fileverbs.c ===
//extern filecheckdefaultpath (bigstring);
@@ -456,7 +458,7 @@
extern boolean filestart (void); /*6.1b15 AR*/
-// filedialog.c
+#pragma mark === filedialog.c ===
extern boolean sfdialog (tysfverb, bigstring, ptrsftypelist, tyfilespec *, OSType); /* 2005-10-06 creedon - added OSType */
@@ -480,9 +482,14 @@
#endif
-// filemp3.c
+#pragma mark === filemp3.c ===
boolean getmp3info (const tyfilespec *, long *, long *, long *, long *, boolean *);
+#pragma mark === fileops.c ===
+extern short getfilelabelindex (const tyfilespec *, short *); /* 2006-04-23 creedon */
+
+extern boolean setfilelabelindex (const tyfilespec *, short, boolean); /* 2006-04-23 creedon */
+
Modified: Frontier/branches/SQLite/Common/headers/frontierconfig.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/frontierconfig.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/frontierconfig.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -71,41 +71,7 @@
typedef struct tyconfigrecord {
-#ifdef MACVERSION
- boolean flhorizscroll: 1; /*window has horiz scrollbar?*/
-
- boolean flvertscroll: 1;
-
- boolean flwindowfloats: 1; /*is it a floating palette window?*/ // NOT USED
-
- boolean flmessagearea: 1; /*allocate space for a message area?*/
-
- boolean flinsetcontentrect: 1; /*if true we inset by 3 pixels*/
-
- boolean flnewonlaunch: 1;
-
- boolean flopenresfile: 1;
-
- boolean fldialog: 1; /*do a GetNewDialog on creating one of these windows?*/
-
- boolean flgrowable: 1; /*provide a grow box for window*/
-
- boolean flcreateonnew: 1;
-
- boolean flwindoidscrollbars: 1;
-
- boolean flstoredindatabase: 1;
-
- boolean flparentwindowhandlessave: 1;
-
- boolean fleraseonresize: 1;
-
- boolean fldontconsumefrontclicks: 1;
-
- boolean flcolorwindow: 1;
-#endif
-
-#ifdef WIN95VERSION
+
short flhorizscroll; /*window has horiz scrollbar?*/
short flvertscroll;
@@ -137,9 +103,7 @@
short fldontconsumefrontclicks;
short flcolorwindow;
-#endif
-
short messageareafraction;
OSType filecreator, filetype;
Modified: Frontier/branches/SQLite/Common/headers/frontierdefs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/frontierdefs.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/frontierdefs.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -35,11 +35,13 @@
#ifdef WIN95VERSION
#define FRONTIERCOM 1
-#ifndef OPMLEDITOR
- #define FRONTIERWEB 0
-#else //OPMLEDITOR
- #define FRONTIERWEB 1 /* 2006-02-05 aradke: enable HTML display in main window background */
-#endif // OPMLEDITOR
+
+ #ifndef OPMLEDITOR
+ #define FRONTIERWEB 0
+ #else //OPMLEDITOR
+ #define FRONTIERWEB 1 /* 2006-02-05 aradke: enable HTML display in main window background */
+ #endif // OPMLEDITOR
+
#undef winhybrid
#define fljustpacking 0
#undef flcomponent
Modified: Frontier/branches/SQLite/Common/headers/icon.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/icon.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/icon.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -32,6 +32,7 @@
#define atVerticalCenter 0x01
#define atHorizontalCenter 0x02
#define kTransformSelected 0x04
+ #define kAlignAbsoluteCenter (atVerticalCenter | atHorizontalCenter)
#endif
#ifdef MACVERSION /*7.0b9 PBS: tycustomicontypeinfo is for Mac custom icons*/
Modified: Frontier/branches/SQLite/Common/headers/kernelverbdefs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/kernelverbdefs.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/kernelverbdefs.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -51,5 +51,4 @@
#define idregexpverbs 1023 /*2003-04-22 AR: regular expression verbs*/
#define idmathverbs 1024 /*2004-12-29 SMD: extended math verbs*/
#define idcryptverbs 1025 /* 2006-03-07 creedon: crypt verbs */
-#define idsqliteverbs 1026 /* 2006-03-15 gewirtz sqlite verbs */
Modified: Frontier/branches/SQLite/Common/headers/kernelverbs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/kernelverbs.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/kernelverbs.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -56,4 +56,3 @@
extern boolean cryptinitverbs (void); /* langcrypt.c */
-extern boolean sqliteinitverbs (void); /* langsqlite.c */
\ No newline at end of file
Modified: Frontier/branches/SQLite/Common/headers/langinternal.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/langinternal.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/langinternal.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -202,8 +202,6 @@
#define frnonexistantgroupnameerror 160
#define replaceitemerror 161 /* 2005-09-26 creedon */
#define cmdshellnotfounderror 162 /* 2006-03-10 aradke */
-#define sqliteopenerror 163 /* 2006-03-17 gewirtz */
-#define sqlitedberror 164 /* 2006-03-17 gewirtz */
#define langstacklist 137
@@ -221,16 +219,16 @@
} tystackid;
-#define machinePPC "\x07" "PowerPC"
-#define machine68K "\x03" "68K"
-#define machinex86 "\x03" "x86"
+#define machinePPC BIGSTRING ("\x07" "PowerPC")
+#define machine68K BIGSTRING ("\x03" "68K")
+#define machinex86 BIGSTRING ("\x03" "x86")
-#define osMacOS "\x05" "MacOS"
-#define osWin95 "\x05" "Win95"
-#define osWinNT "\x05" "WinNT"
+#define osMacOS BIGSTRING ("\x05" "MacOS")
+#define osWin95 BIGSTRING ("\x05" "Win95")
+#define osWinNT BIGSTRING ("\x05" "WinNT")
//Code change by Timothy Paustian Tuesday, July 11, 2000 9:42:50 PM
//Add a const to return for the carbon OS
-#define osCarbon "\x05" "MacCn"
+#define osCarbon BIGSTRING ("\x05" "MacCn")
typedef boolean (*langtreevisitcallback) (hdltreenode, ptrvoid);
Deleted: Frontier/branches/SQLite/Common/headers/langsqlite.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/langsqlite.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/langsqlite.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -1,61 +0,0 @@
-
-/* $Id: langsqlite.h,v 1.1.2.1 2006/03/24 01:31:35 davidgewirtz Exp $ */
-
-/******************************************************************************
-
- UserLand Frontier(tm) -- High performance Web content management,
- object database, system-level and Internet scripting environment,
- including source code editing and debugging.
-
- Copyright (C) 1992-2004 UserLand Software, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-******************************************************************************/
-
-/* prototypes */
-
-extern boolean sqliteopenverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-03-15 gewirtz */
-
-extern boolean sqlitecloseverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-03-17 gewirtz */
-
-extern boolean sqlitecompilequeryverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqliteclearqueryverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqliteexecutequeryverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumncountverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumntypeverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumnintverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumndoubleverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumntextverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumnnameverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-18 gewirtz */
-
-extern boolean sqlitegetcolumnverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-20 gewirtz */
-
-extern boolean sqlitegeterrormessageverb (hdltreenode, tyvaluerecord *, bigstring); /* 2006-04-20 gewirtz */
-
-extern boolean sqliteinitverbs (void); /* 2006-03-15 gewirtz */
-
-/* boolean hmacmd5 (unsigned char *, int, unsigned char *, int, unsigned char *);*/ /* 2006-03-05 creedon */
-
-/* boolean hmacsha1 (unsigned char *, int, unsigned char *, int, unsigned char *);*/ /* 2006-03-12 creedon */
-
Modified: Frontier/branches/SQLite/Common/headers/macconv.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/macconv.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/macconv.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -67,7 +67,9 @@
#define wmouseUp 38 //Windows Only
#define zoomEvt 39 //Windows Only
-
+#define suspendResumeMessage 0x0001
+#define resumeFlag 0x01
+
#define everyEvent -1
#define activeFlag 256
#define activMask 256
@@ -87,60 +89,6 @@
#define HiWord(x) HIWORD(x)
-static long dolongswap(long foo)
- {
-#if defined(__i386__) && defined(__GNUC__)
- /*
- 10.0a5 - TRT - 29 Dec 2004
- GNU by default uses the AT&T assembly code syntax;
- MSC/MWERKS uses the Intel assembly code syntax;
- some versions of 'gcc' accept -masm=att|intel to
- specify which syntax to use; but for those that don't...
- */
- __asm__("mov foo,%eax\nbswap %eax\nmov %eax,foo\n");
-#elif defined(__powerpc__) && defined(__GNUC__)
- foo = Endian32_Swap(foo);
-#else
- _asm
- {
- mov eax,foo
- bswap eax
- mov foo,eax
- }
-#endif
- return (foo);
- }
-
-static short doshortswap(short foo)
- {
-#if defined(__i386__) && defined(__GNUC__)
- /*
- 10.0a5 - TRT - 29 Dec 2004
- GNU by default uses the AT&T assembly code syntax;
- MSC/MWERKS uses the Intel assembly code syntax;
- some versions of 'gcc' accept -masm=att|intel to
- specify which syntax to use; but for those that don't...
- */
- __asm__("mov foo,%ax\n mov %al,%bh\nmov %ah,%bl\nmov %bx,foo");
-#elif defined(__powerpc__) && defined(__GNUC__)
- foo = Endian16_Swap(foo);
-#else
- _asm
- {
- mov ax,foo
- mov bh,al
- mov bl,ah
- mov foo,bx
- }
-#endif
- return (foo);
- }
-
-#define longswap(foo) do {foo = dolongswap(foo);} while (0)
-
-#define shortswap(foo) do {foo = doshortswap(foo);} while (0)
-
-
enum {
/* Apple event descriptor types */
typeBoolean = 'bool',
Modified: Frontier/branches/SQLite/Common/headers/osincludes.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/osincludes.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/osincludes.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -37,6 +37,8 @@
#ifdef WIN95VERSION
#define WIN32_LEAN_AND_MEAN 1
+ #define _WIN32_DCOM 1
+ #define CINTERFACE 1
#include <windows.h>
@@ -55,6 +57,10 @@
#include <winsock2.h>
#include <mswsock.h>
+ #undef __cplusplus
+ #include <objbase.h>
+ #include <mlang.h>
+
#endif /* WIN95VERSION */
@@ -307,19 +313,5 @@
#include <string.h>
#include <assert.h>
-/*
- 2006-04-07 aradke: determine native byte order.
- checking whether WIN32 is defined is rather crude,
- but I haven't found a better way yet.
-*/
-#if defined(__LITTLE_ENDIAN__) || defined(WIN32)
- #define PACKFLIPPED 1 /* enable little endian / big endian conversion for database file functions */
-#elif defined(__BIG_ENDIAN__)
- #undef PACKFLIPPED /* big endian is native database format, no need to convert */
-#else
- #error Failed to determine native byte order of target architecture, update osincludes.h
-#endif
-
-
#endif /* __osincludes_h__ */
Modified: Frontier/branches/SQLite/Common/headers/processinternal.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/processinternal.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/processinternal.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -195,6 +195,9 @@
ThreadEntryUPP threadEntryCallbackUPP;
#endif
+
+ boolean flcominitialized;
+
} tythreadglobals, *ptrthreadglobals, **hdlthreadglobals;
Modified: Frontier/branches/SQLite/Common/headers/shellprivate.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/shellprivate.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/shellprivate.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -63,17 +63,6 @@
} tymenustate;
-typedef struct tyjugglermessage {
-
- long eventtype: 8; /*bits 24 -- 31*/
-
- long reservedbits: 22; /*bits 2 -- 23*/
-
- long flconvertclipboard: 1; /*bit 1*/
-
- long flresume: 1; /*bit 0*/
- } tyjugglermessage;
-
#ifdef version42orgreater
#define cteditors 14
#else
Modified: Frontier/branches/SQLite/Common/headers/stringdefs.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/stringdefs.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/stringdefs.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -29,72 +29,73 @@
- #define STR_Cant_delete_XXX_because_it_hasnt_been_defined "\x31" "Can't delete \"^0\" because it hasn't been defined."
- #define STR_The_name_XXX_hasnt_been_defined "\x22" "The name \"^0\" hasn't been defined."
- #define STR_Address_value_doesnt_refer_to_a_valid_table "\x2d" "Address value doesn't refer to a valid table."
+ #define STR_Cant_delete_XXX_because_it_hasnt_been_defined BIGSTRING ("\x31" "Can't delete \"^0\" because it hasn't been defined.")
+ #define STR_The_name_XXX_hasnt_been_defined BIGSTRING ("\x22" "The name \"^0\" hasn't been defined.")
+ #define STR_Address_value_doesnt_refer_to_a_valid_table BIGSTRING ("\x2d" "Address value doesn't refer to a valid table.")
- #define STR_Assertion "\x5e" "Assertion failed in file ^1, at line ^2. Probably no big deal, but please tell Doug. Thanks!"
+ #define STR_Assertion BIGSTRING ("\x5e" "Assertion failed in file ^1, at line ^2. Probably no big deal, but please tell Doug. Thanks!")
- #define STR_unknown "\x07" "unknown"
- #define STR_char "\x04" "char"
- #define STR_int "\x03" "int"
- #define STR_long "\x04" "long"
- #define STR_unused1 "\x07" "unused1"
- #define STR_binary "\x06" "binary"
- #define STR_boolean "\x07" "boolean"
- #define STR_token "\x05" "token"
- #define STR_date "\x04" "date"
- #define STR_address "\x07" "address"
- #define STR_compiled_code "\x0d" "compiled code"
- #define STR_string "\x06" "string"
- #define STR_external "\x08" "external"
- #define STR_direction "\x09" "direction"
- #define STR_unused2 "\x07" "unused2"
- #define STR_string4 "\x07" "string4"
- #define STR_unused3 "\x07" "unused3"
- #define STR_point "\x05" "point"
- #define STR_rect "\x04" "rect"
- #define STR_pattern "\x07" "pattern"
- #define STR_rgb "\x03" "rgb"
- #define STR_fixed "\x05" "fixed"
- #define STR_single "\x06" "single"
- #define STR_double "\x06" "double"
- #define STR_objspec "\x07" "objspec"
- #define STR_filespec "\x08" "filespec"
- #define STR_alias "\x05" "alias"
- #define STR_enumerator "\x0a" "enumerator"
- #define STR_list "\x04" "list"
- #define STR_record "\x06" "record"
- #define STR_outline "\x07" "outline"
- #define STR_wptext "\x06" "wptext"
- #define STR_interface "\x09" "interface"
- #define STR_headline "\x08" "headline"
- #define STR_table "\x05" "table"
- #define STR_script "\x06" "script"
+ #define STR_unknown BIGSTRING ("\x07" "unknown")
+ #define STR_char BIGSTRING ("\x04" "char")
+ #define STR_int BIGSTRING ("\x03" "int")
+ #define STR_long BIGSTRING ("\x04" "long")
+ #define STR_unused1 BIGSTRING ("\x07" "unused1")
+ #define STR_binary BIGSTRING ("\x06" "binary")
+ #define STR_boolean BIGSTRING ("\x07" "boolean")
+ #define STR_token BIGSTRING ("\x05" "token")
+ #define STR_date BIGSTRING ("\x04" "date")
+ #define STR_address BIGSTRING ("\x07" "address")
+ #define STR_compiled_code BIGSTRING ("\x0d" "compiled code")
+ #define STR_string BIGSTRING ("\x06" "string")
+ #define STR_external BIGSTRING ("\x08" "external")
+ #define STR_direction BIGSTRING ("\x09" "direction")
+ #define STR_unused2 BIGSTRING ("\x07" "unused2")
+ #define STR_string4 BIGSTRING ("\x07" "string4")
+ #define STR_unused3 BIGSTRING ("\x07" "unused3")
+ #define STR_point BIGSTRING ("\x05" "point")
+ #define STR_rect BIGSTRING ("\x04" "rect")
+ #define STR_pattern BIGSTRING ("\x07" "pattern")
+ #define STR_rgb BIGSTRING ("\x03" "rgb")
+ #define STR_fixed BIGSTRING ("\x05" "fixed")
+ #define STR_single BIGSTRING ("\x06" "single")
+ #define STR_double BIGSTRING ("\x06" "double")
+ #define STR_objspec BIGSTRING ("\x07" "objspec")
+ #define STR_filespec BIGSTRING ("\x08" "filespec")
+ #define STR_alias BIGSTRING ("\x05" "alias")
+ #define STR_enumerator BIGSTRING ("\x0a" "enumerator")
+ #define STR_list BIGSTRING ("\x04" "list")
+ #define STR_record BIGSTRING ("\x06" "record")
+ #define STR_outline BIGSTRING ("\x07" "outline")
+ #define STR_wptext BIGSTRING ("\x06" "wptext")
+ #define STR_interface BIGSTRING ("\x09" "interface")
+ #define STR_headline BIGSTRING ("\x08" "headline")
+ #define STR_table BIGSTRING ("\x05" "table")
+ #define STR_script BIGSTRING ("\x06" "script")
#define STR_menubar "\x07" "menubar"
- #define STR_picture "\x07" "picture"
+ #define STR_picture BIGSTRING ("\x07" "picture")
- #define STR_with "\x04" "with"
- #define STR_this "\x04" "this"
+ #define STR_with BIGSTRING ("\x04" "with")
+ #define STR_this BIGSTRING ("\x04" "this")
#define STR_temp "\x04" "temp"
#define STR_environment "\x0b" "environment"
+ #define STR_charsets "\x08" "charsets"
- #define STR_Stack_overflow "\x0f" "Stack overflow!"
+ #define STR_Stack_overflow BIGSTRING ("\x0f" "Stack overflow!")
- #define STR_too_many_pophashtables "\x16" "too many pophashtables"
- #define STR_trying_to_dispose_global_symbol_table "\x26" "trying to dispose global symbol table!"
- #define STR_pushpackstack_no_room_on_stack "\x1f" "pushpackstack: no room on stack"
- #define STR_poppackstack_nothing_on_stack "\x1e" "poppackstack: nothing on stack"
- #define STR_Error_unpacking "\x11" "Error unpacking: "
+ #define STR_too_many_pophashtables BIGSTRING ("\x16" "too many pophashtables")
+ #define STR_trying_to_dispose_global_symbol_table BIGSTRING ("\x26" "trying to dispose global symbol table!")
+ #define STR_pushpackstack_no_room_on_stack BIGSTRING ("\x1f" "pushpackstack: no room on stack")
+ #define STR_poppackstack_nothing_on_stack BIGSTRING ("\x1e" "poppackstack: nothing on stack")
+ #define STR_Error_unpacking BIGSTRING ("\x11" "Error unpacking: ")
- #define STR_The_version_number_of_this_database_file_is_not_recognized_by_this_version_of_Frontier "\x57" "The version number of this database file is not recognized by this version of Frontier."
+ #define STR_The_version_number_of_this_database_file_is_not_recognized_by_this_version_of_Frontier BIGSTRING ("\x57" "The version number of this database file is not recognized by this version of Frontier.")
- #define STR_move "\x04" "move"
- #define STR_copy "\x04" "copy"
- #define STR_rename "\x06" "rename"
- #define STR_moveandrename "\x0d" "moveandrename"
- #define STR_assign "\x06" "assign"
- #define STR_nil_table_address__Creating_empty_table "\x2b" "nil table address. (Creating empty table.)"
+ #define STR_move BIGSTRING ("\x04" "move")
+ #define STR_copy BIGSTRING ("\x04" "copy")
+ #define STR_rename BIGSTRING ("\x06" "rename")
+ #define STR_moveandrename BIGSTRING ("\x0d" "moveandrename")
+ #define STR_assign BIGSTRING ("\x06" "assign")
+ #define STR_nil_table_address__Creating_empty_table BIGSTRING ("\x2b" "nil table address. (Creating empty table.)")
#define STR_compiler "\x08" "compiler"
@@ -118,40 +119,40 @@
#define STR_resume "\x06" "resume"
#define STR_shutdown "\x08" "shutdown"
#define STR_system "\x06" "system"
- #define STR_menus "\x05" "menus"
+ #define STR_menus BIGSTRING ("\x05" "menus")
#define STR_menubars "\x0b" "sharedmenus"
#define STR_macintosh "\x09" "macintosh"
#define STR_objectmodel "\x0b" "objectmodel"
#define STR_else "\x04" "else"
- #define STR_File_was_created_by_an_incompatible_version_of_this_program "\x3c" "File was created by an incompatible version of this program."
- #define STR_Internal_error_attempted_to_read_a_free_block "\x30" "Internal error: attempted to read a free block."
- #define STR_Internal_error_unimplemented_function_call "\x24" "Verb unimplemented on this platform."
- #define STR_Internal_error_bad_type_for_temp_data "\x28" "Internal error: bad type for temp data."
- #define STR_error "\x05" "error"
- #define STR_hash_table "\x0a" "hash table"
- #define STR_Stack_overflow_XXX_stack "\x1a" "Stack overflow: ^0 stack."
- #define STR_outline_stack_overflow "\x17" "outline stack overflow!"
- #define STR_wp_stack_overflow "\x12" "wp stack overflow!"
- #define STR_database_stack_overflow "\x18" "database stack overflow!"
- #define STR_bad_outline_version_number "\x1a" "bad outline version number"
- #define STR_bad_list_version_number "\x17" "bad list version number"
- #define STR_ourline_windowopen_inconsistency "\x20" "outline windowopen inconsistency"
- #define STR_increase_cteditors "\x24" "increase cteditors in shellprivate.h"
- #define STR_failed_to_load_a_button_list "\x1c" "failed to load a button list"
- #define STR_globals_stack_overflow "\x17" "globals stack overflow!"
- #define STR_increase_maxkeyboardhooks "\x19" "increase maxkeyboardhooks"
- #define STR_increase_maxdirtyhooks "\x16" "increase maxdirtyhooks"
- #define STR_increase_maxmenuhooks "\x15" "increase maxmenuhooks"
- #define STR_increase_maxeventhooks "\x16" "increase maxeventhooks"
- #define STR_increase_maxerrorhooks "\x16" "increase maxerrorhooks"
- #define STR_increase_maxscraphooks "\x16" "increase maxscraphooks"
- #define STR_increase_maxmemoryhooks "\x17" "increase maxmemoryhooks"
- #define STR_increase_maxfilehooks "\x15" "increase maxfilehooks"
+ #define STR_File_was_created_by_an_incompatible_version_of_this_program BIGSTRING ("\x3c" "File was created by an incompatible version of this program.")
+ #define STR_Internal_error_attempted_to_read_a_free_block BIGSTRING ("\x30" "Internal error: attempted to read a free block.")
+ #define STR_Internal_error_unimplemented_function_call BIGSTRING ("\x24" "Verb unimplemented on this platform.")
+ #define STR_Internal_error_bad_type_for_temp_data BIGSTRING ("\x28" "Internal error: bad type for temp data.")
+ #define STR_error BIGSTRING ("\x05" "error")
+ #define STR_hash_table BIGSTRING ("\x0a" "hash table")
+ #define STR_Stack_overflow_XXX_stack BIGSTRING ("\x1a" "Stack overflow: ^0 stack.")
+ #define STR_outline_stack_overflow BIGSTRING ("\x17" "outline stack overflow!")
+ #define STR_wp_stack_overflow BIGSTRING ("\x12" "wp stack overflow!")
+ #define STR_database_stack_overflow BIGSTRING ("\x18" "database stack overflow!")
+ #define STR_bad_outline_version_number BIGSTRING ("\x1a" "bad outline version number")
+ #define STR_bad_list_version_number BIGSTRING ("\x17" "bad list version number")
+ #define STR_ourline_windowopen_inconsistency BIGSTRING ("\x20" "outline windowopen inconsistency")
+ #define STR_increase_cteditors BIGSTRING ("\x24" "increase cteditors in shellprivate.h")
+ #define STR_failed_to_load_a_button_list BIGSTRING ("\x1c" "failed to load a button list")
+ #define STR_globals_stack_overflow BIGSTRING ("\x17" "globals stack overflow!")
+ #define STR_increase_maxkeyboardhooks BIGSTRING ("\x19" "increase maxkeyboardhooks")
+ #define STR_increase_maxdirtyhooks BIGSTRING ("\x16" "increase maxdirtyhooks")
+ #define STR_increase_maxmenuhooks BIGSTRING ("\x15" "increase maxmenuhooks")
+ #define STR_increase_maxeventhooks BIGSTRING ("\x16" "increase maxeventhooks")
+ #define STR_increase_maxerrorhooks BIGSTRING ("\x16" "increase maxerrorhooks")
+ #define STR_increase_maxscraphooks BIGSTRING ("\x16" "increase maxscraphooks")
+ #define STR_increase_maxmemoryhooks BIGSTRING ("\x17" "increase maxmemoryhooks")
+ #define STR_increase_maxfilehooks BIGSTRING ("\x15" "increase maxfilehooks")
- #define STR_Unknown_error "\x0e" "Unknown error."
- #define STR_Mac_OS_Error "\x0e" "Mac OS Error: "
+ #define STR_Unknown_error BIGSTRING ("\x0e" "Unknown error.")
+ #define STR_Mac_OS_Error BIGSTRING ("\x0e" "Mac OS Error: ")
- #define STR_menuseparator "\x02" "(-"
+ #define STR_menuseparator BIGSTRING ("\x02" "(-")
#define STR_hexprefix "\x02" "0x"
Modified: Frontier/branches/SQLite/Common/headers/strings.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/strings.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/strings.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -161,6 +161,8 @@
extern void copyctopstring (const char *, bigstring);
#ifdef WIN95VERSION
+extern boolean copyWideToPString (const wchar_t *, bigstring);
+extern boolean copyPStringToWide (bigstring, long *, wchar_t *);
extern void copyrezstring (const bigstring, bigstring);
#endif
@@ -266,5 +268,9 @@
extern boolean utf8tomacroman (Handle, Handle); /* 2006-02-25 creedon */
+extern boolean convertCharset( Handle, Handle, bigstring, bigstring );
+
+extern boolean isTextEncodingAvailable( bigstring ); /* 2006-04-23 smd */
+
#endif
Modified: Frontier/branches/SQLite/Common/headers/tablestructure.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/tablestructure.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/tablestructure.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -180,7 +180,9 @@
extern hdlhashtable environmenttable;
+extern hdlhashtable charsetstable;
+
extern byte nameinternaltable [];
extern byte namemenubar [];
@@ -227,7 +229,9 @@
extern byte nameenvironmenttable [];
+extern byte namecharsetstable [];
+
/*prototypes*/
extern boolean linksystemtablestructure (hdlhashtable); /*tablestructure.c*/
Modified: Frontier/branches/SQLite/Common/headers/versions.h
===================================================================
--- Frontier/branches/SQLite/Common/headers/versions.h 2006-08-30 18:53:23 UTC (rev 1488)
+++ Frontier/branches/SQLite/Common/headers/versions.h 2006-08-30 19:38:37 UTC (rev 1489)
@@ -56,10 +56,10 @@
#define APPNAME "Radio"
#define APP_COPYRIGHT_HOLDER "UserLand Software, Inc"
- #define bs_APP_NAME "\x05" "Radio"
- #define bs_APP_SLOGAN "\x2b" "The power of Web publishing on your desktop"
- #define bs_APP_COPYRIGHT "\x23" "\xA9 " APP_COPYRIGHT_FROM "-" APP_COPYRIGHT_TILL " UserLand Software, Inc."
- #define bs_APP_URL "\x26" "http://frontierkernel.sourceforge.net/"
+ #define bs_APP_NAME BIGSTRING ("\x05" "Radio")
+ #define bs_APP_SLOGAN BIGSTRING ("\x2b" "The power of Web publishing on your desktop")
+ #define bs_APP_COPYRIGHT BIGSTRING ("\x23" "\xA9 " APP_COPYRIGHT_FROM "-" APP_COPYRIGHT_TILL " UserLand Software, Inc.")
+ #define bs_APP_URL BIGSTRING ("\x26" "http://frontierkernel.sourceforge.net/")
#define APP_MAJOR_VERSION 10
#define APP_MAJOR_VERSION_BCD 0x10 /* major version in BCD notation */
@@ -69,10 +69,10 @@
#define APP_SUBMINOR_VERSION_BCD 0x10 /* sub and minor version in BCD notation */
#define APP_STAGE_CODE 0x40 /* dev = 0x20, alpha = 0x40, beta = 0x60, final = 0x80 */
- #define APP_REVISION_LEVEL 9 /* for non-final releases only */
- #define APP_BUILD_NUMBER 9 /* increment by one for every release, final or not */
+ #define APP_REVISION_LEVEL 10 /* for non-final releases only */
+ #define APP_BUILD_NUMBER 10 /* increment by one for every release, final or not */
- #define APP_VERSION_STRING "10.1a9"
+ #define APP_VERSION_STRING "10.1a10"
#else
@@ -82,10 +82,10 @@
#define APP_COPYRIGHT_HOLDER "Scripting News, Inc"
- #define bs_APP_NAME "\x04" "OPML"
- #define bs_APP_SLOGAN "\x25" "Powerful OPML editing on your desktop"
- #define bs_APP_COPYRIGHT "\x20" "\xA9 " APP_COPYRIG...
[truncated message content] |
|
From: <dav...@us...> - 2006-08-30 18:53:28
|
Revision: 1488
http://svn.sourceforge.net/frontierkernel/?rev=1488&view=rev
Author: davidgewirtz
Date: 2006-08-30 11:53:23 -0700 (Wed, 30 Aug 2006)
Log Message:
-----------
Fixing update attempt. Stay tuned. Maybe I'll get this right, soon. -- DG
Removed Paths:
-------------
Frontier/branches/SQLite/trunk/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2006-08-30 18:43:13
|
Revision: 1487
http://svn.sourceforge.net/frontierkernel/?rev=1487&view=rev
Author: davidgewirtz
Date: 2006-08-30 11:42:57 -0700 (Wed, 30 Aug 2006)
Log Message:
-----------
Updating SQLite branch with current trunk, will then merge the SQLite changes back into the SQLite branch. This is because it's been a while since the SQLite branch had updates from the trunk.
Added Paths:
-----------
Frontier/branches/SQLite/trunk/
Copied: Frontier/branches/SQLite/trunk (from rev 1486, Frontier/trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cre...@us...> - 2006-08-27 02:19:45
|
Revision: 1486 Author: creecode Date: 2006-08-26 19:19:41 -0700 (Sat, 26 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1486&view=rev Log Message: ----------- in shell(new/open)file functions on Mac, set the proxy icon to LAND/TABL in function shellsaveas on Mac, add object type extension to file name in function shellnew on Mac, add ".root" extension to file name Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/shellfile.c Modified: Frontier/branches/FSRef_Migration/Common/source/shellfile.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/shellfile.c 2006-08-25 23:39:13 UTC (rev 1485) +++ Frontier/branches/FSRef_Migration/Common/source/shellfile.c 2006-08-27 02:19:41 UTC (rev 1486) @@ -120,8 +120,10 @@ // // open the specified file in a new window. // - // 2006-06-23 creedon: for Mac, FSRef-ized + // 2006-08-26 creedon: for Mac, FSRef-ized // + // for Mac, set the proxy icon to LAND/TABL + // // 6.0a11 dmb: fixed wnew handling for already-open windows // // 3.0.2 dmb: if asked to open a file that's already open in a root window, just bring it to the front and return true @@ -225,6 +227,12 @@ if (!newfilewindow (fs, fnum, rnum, flhidden, &w)) goto error; + #ifdef MACVERSION + + SetWindowProxyCreatorAndType ( w, 'LAND', 'TABL', kOnSystemDisk ); + + #endif + if (wnew != nil) *wnew = w; @@ -603,8 +611,10 @@ // // if bspath is nil, use standard file to determine the new file location // - // 2006-06-23 creedon: for Mac FSRef-ized + // 2006-08-26 creedon: for Mac, FSRef-ized // + // for Mac, add object type extension to file name + // // 5.0d8 dmb: pass file type to sfdialog for Win // // 1991-12-12 dmb: make sure we don't use a full path as the default file name @@ -619,10 +629,10 @@ tyfilespec fs; tysftypelist filetypes; - if (!shellpushrootglobals (wsave)) /*save as only operates on root windows*/ + if (!shellpushrootglobals (wsave)) // save as only operates on root windows return (false); - w = shellwindow; /*move into register*/ + w = shellwindow; // move into register if (fspec != nil) { @@ -632,21 +642,42 @@ } else { - if (!windowgetfspec (w, &fs)) { + if ( ! windowgetfspec ( w, &fs ) ) { - bigstring bs; + bigstring bsname; - getfsfile ( &fs, bs ); + getdefaultfilename ( bsname ); - getdefaultfilename ( bs ); + #ifdef MACVERSION + bigstring bs; + + pushchar ( '.', bsname ); + + ostypetostring ( config.filetype, bs ); + + alllower ( bs ); + + pushstring ( bs, bsname ); + + fs.path = CFStringCreateWithPascalString ( kCFAllocatorDefault, bsname, + kCFStringEncodingMacRoman ); + + #endif + + #ifdef WIN95VERSION + + copystring ( bsname, fsname ( &fs ) ); + + #endif + } filetypes.cttypes = 1; filetypes.types [0] = config.filetype; - if (flrunnable) { //special case for desktop scripts. + if (flrunnable) { // special case for desktop scripts. bigstring bsfile, bssuffix; getfsfile (&fs, bsfile); @@ -663,7 +694,7 @@ filetypes.types [0] = type_desktopscript; } - fl = sfdialog (sfputfileverb, nil, &filetypes, &fs, 'LAND'); /* 2005-10-06 creedon - added 'LAND' */ + fl = sfdialog (sfputfileverb, nil, &filetypes, &fs, 'LAND'); // 2005-10-06 creedon - added 'LAND' } if (fl) { @@ -683,7 +714,8 @@ shellpopglobals (); return (fl); - } /*shellsaveas*/ + + } // shellsaveas boolean shellnewfile (ptrfilespec fspec, boolean flhidden, WindowPtr *wnew) { @@ -729,6 +761,12 @@ w = *wnew; + #ifdef MACVERSION + + SetWindowProxyCreatorAndType ( w, 'LAND', 'TABL', kOnSystemDisk ); + + #endif + shellpushglobals (w); (**shellwindowinfo).flneversaved = (boolean) config.flcreateonnew; @@ -772,8 +810,10 @@ // // new front end to shellnewfile, isolates user interface // - // 2006-06-23 creedon: for Mac, FSRef-ized + // 2006-08-26 creedon: for Mac, FSRef-ized // + // for Mac, add ".root" to bsname + // // 2005-10-06 creedon - added 'LAND' to sfdialog call // // 5.0d8 dmb: pass file type to sfdialog for Win @@ -783,16 +823,28 @@ tyfilespec fspec; tysftypelist filetypes; WindowPtr w; - bigstring bs; + bigstring bsname; shellgetconfig (iddefaultconfig, &lconfig); clearbytes (&fspec, sizeof (fspec)); - getfsfile ( &fspec, bs ); + getuntitledfilename ( bsname ); - getuntitledfilename ( bs ); + #ifdef MACVERSION + pushstring ( "\x05"".root", bsname ); + + fspec.path = CFStringCreateWithPascalString ( kCFAllocatorDefault, bsname, kCFStringEncodingMacRoman ); + + #endif + + #ifdef WIN95VERSION + + copystring ( bsname, fsname ( &fspec ) ); + + #endif + if (lconfig.flcreateonnew) { filetypes.cttypes = 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-25 23:39:19
|
Revision: 1485 Author: creecode Date: 2006-08-25 16:39:13 -0700 (Fri, 25 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1485&view=rev Log Message: ----------- in folderfrompathverb function fix problems with returning erroneous resutls Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/fileverbs.c Modified: Frontier/branches/FSRef_Migration/Common/source/fileverbs.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/fileverbs.c 2006-08-25 23:35:59 UTC (rev 1484) +++ Frontier/branches/FSRef_Migration/Common/source/fileverbs.c 2006-08-25 23:39:13 UTC (rev 1485) @@ -580,7 +580,7 @@ static boolean folderfrompathverb (hdltreenode hparam1, tyvaluerecord *vreturned) { // - // 2006-06-18 creedon: for Mac, FSRef-ized + // 2006-08-24 creedon: for Mac, FSRef-ized // // 2.1b2 dmb: do string manipulation if given a string, but otherwise work with filespecs. in addition to avoiding string // overflow, this preserves ability to distinguish between identically-named volumes @@ -621,25 +621,22 @@ tyfilespec fs; - if (!coercetofilespec (&v)) - return (false); + if ( ! coercetofilespec ( &v ) ) + return ( false ); fs = **v.data.filespecvalue; - ( void ) extendfilespec ( &fs, &fs ); - - if (!getfileparentfolder (&fs, &fs)) - return (false); + if ( ! getfileparentfolder ( &fs, &fs ) ) + return ( false ); - getfilespecparent ( &fs ); + return ( setfilespecvalue ( &fs, vreturned ) ); - return (setfilespecvalue (&fs, vreturned)); - #else - return (false); + return ( false ); #endif + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-25 23:36:02
|
Revision: 1484 Author: creecode Date: 2006-08-25 16:35:59 -0700 (Fri, 25 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1484&view=rev Log Message: ----------- in sfdialog function try to deal better with various states of undefined/partially defined tyfilespecs Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/filedialog.c Modified: Frontier/branches/FSRef_Migration/Common/source/filedialog.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/filedialog.c 2006-08-25 23:31:17 UTC (rev 1483) +++ Frontier/branches/FSRef_Migration/Common/source/filedialog.c 2006-08-25 23:35:59 UTC (rev 1484) @@ -495,7 +495,7 @@ #ifdef MACVERSION // - // 2006-08-16 creedon: minimally FSRef-ized + // 2006-08-25 creedon: minimally FSRef-ized // // 2005-10-06 creedon: added filecreator parameter, used for get file // dialog @@ -539,27 +539,27 @@ FSSpec *fs = &sfdata.sfreply.sfFile, fspect; OSErr err = noErr; - extendfilespec ( fspec, fspec ); + clearbytes ( &fspect, sizeof ( fspect ) ); - if ( ( *fspec ).path == NULL ) - FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoNone, NULL, NULL, &fspect, NULL ); - else { - FSCatalogInfo catalogInfo; + if ( extendfilespec ( fspec, fspec ) ) { - FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoVolume | kFSCatInfoNodeID, &catalogInfo, NULL, NULL, NULL ); - - fspect.vRefNum = catalogInfo.volume; - fspect.parID = catalogInfo.nodeID; - - CFStringRefToStr255 ( ( *fspec ).path, fspect.name ); + if ( ( *fspec ).path == NULL ) + FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoNone, NULL, NULL, &fspect, NULL ); + else { + FSCatalogInfo catalogInfo; + + FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoVolume | kFSCatInfoNodeID, &catalogInfo, NULL, NULL, NULL ); + + fspect.vRefNum = catalogInfo.volume; + fspect.parID = catalogInfo.nodeID; + + CFStringRefToStr255 ( ( *fspec ).path, fspect.name ); + } } - - #ifdef flcomponent - - long appA5; - - #endif - + else + if ( ( *fspec ).path != NULL ) + CFStringRefToStr255 ( ( *fspec ).path, fspect.name ); + // move the switch statement to below because it's smarter to call it there when using the new routines for Nav services. clearbytes (&sfdata, sizeof (sfdata)); @@ -588,12 +588,6 @@ shellactivate (); - #ifdef flcomponent - - appA5 = SetUpCurA5 (); /*for system*/ - - #endif - switch (sfverb) { case sfputfileverb: @@ -621,12 +615,6 @@ break; } - #ifdef flcomponent - - RestoreA5 (appA5); - - #endif - //if the user canceled return false //I know that oserror can handle this, but lets make it //obvious that we are checking. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-25 23:31:21
|
Revision: 1483 Author: creecode Date: 2006-08-25 16:31:17 -0700 (Fri, 25 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1483&view=rev Log Message: ----------- in function getspecialfolderpath use FSFindFolder in getfileparentfolder function, deal better with tyfilespec that may point to no longer existing file objects Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/fileops.c Modified: Frontier/branches/FSRef_Migration/Common/source/fileops.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/fileops.c 2006-08-19 18:39:05 UTC (rev 1482) +++ Frontier/branches/FSRef_Migration/Common/source/fileops.c 2006-08-25 23:31:17 UTC (rev 1483) @@ -1953,11 +1953,13 @@ boolean getspecialfolderpath ( bigstring bsvol, bigstring bsfolder, boolean flcreate, ptrfilespec fs ) { // - // 2006-06-17 creedon: for Mac, FSRef-ized + // 2006-08-24 creedon: for Mac, FSRef-ized // // 2006-04-11 creedon: windows now honors flcreate + // // for windows added; CSIDL_PROGRAM_FILES, CSIDL_MYDOCUMENTS, CSIDL_MYMUSIC, - // CSIDL_MYPICTURES, CSIDL_MYVIDEO; + // CSIDL_MYPICTURES, CSIDL_MYVIDEO + // // for windows replaced more complex code with CSIDL_SYSTEM, CSIDL_WINDOWS // // 1992-09-01 dmb: last new verb for 2.0. (?) @@ -1967,7 +1969,6 @@ short vnum; short ixlist; - long dirid; OSType foldertype; long attrs; OSErr err = errorNone; @@ -2007,20 +2008,16 @@ err = dirNFErr; } - if (err == noErr) - err = FindFolder (vnum, foldertype, flcreate, &vnum, &dirid); + if ( err == noErr ) { + + err = FSFindFolder ( vnum, foldertype, flcreate, &( *fs ).fsref ); - - if (err == noErr) { - - err = FSMakeFSRef ( vnum, dirid, nil, &( *fs ).fsref ); - getfilespecparent ( fs ); } - - return (!oserror (err)); + return ( ! oserror ( err ) ); + #endif #ifdef WIN95VERSION @@ -3021,11 +3018,31 @@ boolean getfileparentfolder ( const ptrfilespec fs, ptrfilespec fsparent ) { // - // 2006-06-18 creedon: FSRef-ized + // 2006-08-24 creedon: FSRef-ized // - return ( ! oserror ( FSGetCatalogInfo ( &( *fs ).fsref, kFSCatInfoNone, NULL, NULL, NULL, &( *fsparent ).fsref ) ) ); + // this function used to use oserror but I don't think oserror can handle osstatus properly + HFSUniStr255 name; + OSStatus status; + + status = FSGetCatalogInfo ( &( *fs ).fsref, kFSCatInfoNone, NULL, &name, NULL, &( *fsparent ).fsref ); + + if ( status != noErr ) + return ( false ); + + if ( ( *fs ).path == NULL ) { + + status = FSGetCatalogInfo ( &( *fsparent ).fsref, kFSCatInfoNone, NULL, &name, NULL, &( *fsparent ).fsref ); + + if ( status != noErr ) + return ( false ); + } + + ( *fsparent ).path = CFStringCreateWithCharacters ( kCFAllocatorDefault, name.unicode, name.length ); + + return ( true ); + } // getfileparentfolder This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-19 18:39:13
|
Revision: 1482 Author: creecode Date: 2006-08-19 11:39:05 -0700 (Sat, 19 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1482&view=rev Log Message: ----------- fix problem with open and save dialogs not working properly with items created from the New command of the File menu. Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/filedialog.c Frontier/branches/FSRef_Migration/Common/source/fileverbs.c Frontier/branches/FSRef_Migration/Common/source/shellwindow.c Modified: Frontier/branches/FSRef_Migration/Common/source/filedialog.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/filedialog.c 2006-08-19 18:34:18 UTC (rev 1481) +++ Frontier/branches/FSRef_Migration/Common/source/filedialog.c 2006-08-19 18:39:05 UTC (rev 1482) @@ -495,7 +495,7 @@ #ifdef MACVERSION // - // 2006-06-26 creedon: minimally FSRef-ized + // 2006-08-16 creedon: minimally FSRef-ized // // 2005-10-06 creedon: added filecreator parameter, used for get file // dialog @@ -535,13 +535,25 @@ // 8/1/90 dmb: if filetype is zero, show all files by passing zero to SFGetFile // - // Str255 bs; tysfdata sfdata; FSSpec *fs = &sfdata.sfreply.sfFile, fspect; OSErr err = noErr; + + extendfilespec ( fspec, fspec ); + + if ( ( *fspec ).path == NULL ) + FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoNone, NULL, NULL, &fspect, NULL ); + else { + FSCatalogInfo catalogInfo; + + FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoVolume | kFSCatInfoNodeID, &catalogInfo, NULL, NULL, NULL ); + + fspect.vRefNum = catalogInfo.volume; + fspect.parID = catalogInfo.nodeID; + + CFStringRefToStr255 ( ( *fspec ).path, fspect.name ); + } - FSGetCatalogInfo ( &( *fspec ).fsref, kFSCatInfoNone, NULL, NULL, &fspect, NULL ); - #ifdef flcomponent long appA5; @@ -624,11 +636,17 @@ if(oserror(err)) return false; - if (sfdata.sfreply.sfGood) { + if ( sfdata.sfreply.sfGood ) { // canonize + + HFSUniStr255 name; - FSMakeFSRef ( ( *fs ).vRefNum, ( *fs ).parID, ( *fs ).name, &( *fspec ).fsref ); // canonize - - return (true); + FSMakeFSRef ( ( *fs ).vRefNum, ( *fs ).parID, NULL, &( *fspec ).fsref ); + + err = HFSNameGetUnicodeName ( ( *fs ).name, kTextEncodingUnknown, &name ); + + ( *fspec ).path = CFStringCreateWithCharacters ( kCFAllocatorDefault, name.unicode, name.length ); + + return ( true ); } return (false); Modified: Frontier/branches/FSRef_Migration/Common/source/fileverbs.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/fileverbs.c 2006-08-19 18:34:18 UTC (rev 1481) +++ Frontier/branches/FSRef_Migration/Common/source/fileverbs.c 2006-08-19 18:39:05 UTC (rev 1482) @@ -717,13 +717,13 @@ // // if it's the getfile dialog, we take a second parameter -- it indicates the type of the file. // - // 2006-06-24 creedon: FSRef-ized + // 2006-08-16 creedon: FSRef-ized // - // 1991-12-27 dmb: in all cases, check the current value of the filename variable, and pass it on to sf dialog so it can - // potentially set default directory. - // // 2005-10-06 creedon: added creator parameter // + // 1991-12-27 dmb: in all cases, check the current value of the filename variable, and pass it on to sf dialog so it can + // potentially set default directory. + // bigstring bsprompt; bigstring bsvarname; @@ -807,8 +807,6 @@ if (!sfdialog (sfverb, bsprompt, typelist, &fs, oscreator)) // user hit cancel return (true); - getfilespecparent ( &fs ); - if (!setfilespecvalue (&fs, &val)) return (false); Modified: Frontier/branches/FSRef_Migration/Common/source/shellwindow.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/shellwindow.c 2006-08-19 18:34:18 UTC (rev 1481) +++ Frontier/branches/FSRef_Migration/Common/source/shellwindow.c 2006-08-19 18:39:05 UTC (rev 1482) @@ -506,10 +506,11 @@ boolean windowgetfspec ( WindowPtr w, ptrfilespec fspec ) { - /* - 6.18.97 dmb: return boolean value indicating whether or not the - fspec actually points to an existing file - */ + // + // 2006-08-16 creedon: for Mac, FSRef-ized + // + // 1997-06-18 dmb: return boolean value indicating whether or not the fspec actually points to an existing file + // hdlwindowinfo hinfo; long vnum; @@ -522,11 +523,14 @@ *fspec = (**hinfo).fspec; - if (!getfsvolume (fspec, &vnum)) //don't allow default vol to satisfy fileexists + if (!getfsvolume (fspec, &vnum)) // don't allow default vol to satisfy fileexists return (false); + + extendfilespec ( fspec, fspec ); - return (fileexists (fspec, &flfolder)); - } /*windowgetfspec*/ + return ( fileexists ( fspec, &flfolder ) ); + + } // windowgetfspec boolean windowgetpath (WindowPtr w, bigstring bspath) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-19 18:34:23
|
Revision: 1481 Author: creecode Date: 2006-08-19 11:34:18 -0700 (Sat, 19 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1481&view=rev Log Message: ----------- make function pathtofilespec, work with paths that have / ( forward slash ) as part of a folder or file name. Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/filepath.c Modified: Frontier/branches/FSRef_Migration/Common/source/filepath.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/filepath.c 2006-08-12 02:57:56 UTC (rev 1480) +++ Frontier/branches/FSRef_Migration/Common/source/filepath.c 2006-08-19 18:34:18 UTC (rev 1481) @@ -255,7 +255,7 @@ boolean pathtofilespec ( bigstring bspath, ptrfilespec fs ) { // - // 2006-08-11 creedon: for Mac, FSRef-ized + // 2006-08-19 creedon: for Mac, FSRef-ized // // 5.0d8 dmb: clear fs first thing // @@ -288,6 +288,7 @@ bigstring bs, bspathtmp; FSRef fsr; OSStatus status; + short ix = 1, ixslashpos = 0, slashpos [ 255 ]; copystring ( bspath, bspathtmp ); @@ -305,8 +306,14 @@ copystring ( bsfullpath, bs); + while ( scanstring ( '/', bs, &ix ) ) + slashpos [ ixslashpos++ ] = ix++; + stringreplaceall ( ':', '/', bs ); + while ( ixslashpos > 0 ) + setstringcharacter ( bs, slashpos [ --ixslashpos ] - 1, ':' ); + convertpstring ( bs ); status = FSPathMakeRef ( bs, &fsr, NULL ); @@ -327,10 +334,19 @@ /* emulate behaviour of FSSpec */ { + ix = 1; + ixslashpos = 0; + folderfrompath ( bsfullpath, bs ); + while ( scanstring ( '/', bs, &ix ) ) + slashpos [ ixslashpos++ ] = ix++; + stringreplaceall ( ':', '/', bs ); + while ( ixslashpos > 0 ) + setstringcharacter ( bs, slashpos [ --ixslashpos ] - 1, ':' ); + convertpstring ( bs ); status = FSPathMakeRef ( bs, &fsr, NULL ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-12 02:58:01
|
Revision: 1480 Author: creecode Date: 2006-08-11 19:57:56 -0700 (Fri, 11 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1480&view=rev Log Message: ----------- fix bugs mainly related to Mac Roman characters in the range 128 - 255 and filespecs < http://sourceforge.net/tracker/index.php?func=detail&aid=1536162&group_id=120666&atid=687798 >. note: I think I have found a bug in the Finder related to naming files with the not equal character, which doesn't manifest if the files are named with Frontier, TextEdit, Script Editor, etc. Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/headers/file.h Frontier/branches/FSRef_Migration/Common/source/file.c Frontier/branches/FSRef_Migration/Common/source/fileops.c Frontier/branches/FSRef_Migration/Common/source/filepath.c Modified: Frontier/branches/FSRef_Migration/Common/headers/file.h =================================================================== --- Frontier/branches/FSRef_Migration/Common/headers/file.h 2006-08-12 00:21:41 UTC (rev 1479) +++ Frontier/branches/FSRef_Migration/Common/headers/file.h 2006-08-12 02:57:56 UTC (rev 1480) @@ -441,6 +441,30 @@ extern boolean getmacfileinfocipbr ( const FSSpecPtr, CInfoPBRec * ); +/* 2006-08-11 creedon: cribbed from MoreFilesX.c and modded to work with Str255 */ + +OSErr +HFSNameGetUnicodeName255 ( + ConstStr255Param hfsName, + TextEncoding textEncodingHint, + HFSUniStr255 *unicodeName); + +/* + The HFSNameGetUnicodeName function converts a Pascal Str255 string to an + Unicode HFSUniStr255 string using the same routines as the File Manager. + + hfsName --> The Pascal string to convert. + textEncodingHint --> The text encoding hint used for the conversion. + You can pass kTextEncodingUnknown to use the + "default" textEncodingHint. + unicodeName <-- The Unicode string. + + __________ + + Also see: HFSNameGetUnicodeName in MoreFilesX.c + +*/ + #endif Modified: Frontier/branches/FSRef_Migration/Common/source/file.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/file.c 2006-08-12 00:21:41 UTC (rev 1479) +++ Frontier/branches/FSRef_Migration/Common/source/file.c 2006-08-12 02:57:56 UTC (rev 1480) @@ -923,15 +923,19 @@ boolean CFStringRefToStr255 ( CFStringRef input, StringPtr output ) { // - // 2006-07-06 creedon: created, cribbed from < http://developer.apple.com/carbon/tipsandtricks.html#CFStringFromUnicode > + // 2006-08-08 creedon: created, cribbed from < http://developer.apple.com/carbon/tipsandtricks.html#CFStringFromUnicode > // - - output [ 0 ] = CFStringGetBytes ( input, CFRangeMake ( 0, MIN ( CFStringGetLength ( input ), 255 ) ), - kTextEncodingMacRoman, '^', false, &( output [ 1 ] ), 255, NULL ); - + + CFIndex usedBufLen; + + CFStringGetBytes ( input, CFRangeMake ( 0, MIN ( CFStringGetLength ( input ), 255 ) ), + kCFStringEncodingMacRoman, '^', false, &( output [ 1 ] ), 255, &usedBufLen ); + + output [ 0 ] = usedBufLen; + if ( output [ 0 ] == 0 ) return ( false ); - + return ( true ); } // CFStringRefToStr255 @@ -1003,11 +1007,11 @@ boolean CFStringRefToHFSUniStr255 ( CFStringRef input, HFSUniStr255 *output ) { // - // 2006-07-06 creedon: created, cribbed from < http://developer.apple.com/carbon/tipsandtricks.html#CFStringFromUnicode > + // 2006-08-11 creedon: created, cribbed from < http://developer.apple.com/carbon/tipsandtricks.html#CFStringFromUnicode > // - + ( *output ).length = CFStringGetBytes ( input, CFRangeMake (0, MIN ( CFStringGetLength ( input ), 255 ) ), - kCFStringEncodingUnicode, 0, false, ( UInt8 * ) ( *output).unicode, 255, NULL ); + kCFStringEncodingUnicode, 0, false, ( UInt8 * ) ( *output ).unicode, 255, NULL ); if ( ( *output ).length == 0 ) return ( false ); @@ -1016,5 +1020,88 @@ } // CFStringRefToHFSUniStr255 + +/* 2006-08-11 creedon: cribbed from MoreFilesX.c and modded to work with Str255 */ + +/* macro for casting away const when you really have to */ +#define CONST_CAST(type, const_var) (*(type*)((void *)&(const_var))) + +OSErr +HFSNameGetUnicodeName255 ( + ConstStr255Param hfsName, + TextEncoding textEncodingHint, + HFSUniStr255 *unicodeName) +{ + ByteCount unicodeByteLength; + OSStatus result; + UnicodeMapping uMapping; + TextToUnicodeInfo tuInfo; + ByteCount pascalCharsRead; + + /* check parameters */ + require_action(NULL != unicodeName, BadParameter, result = paramErr); + + /* make sure output is valid in case we get errors or there's nothing to convert */ + unicodeName->length = 0; + + if ( 0 == StrLength(CONST_CAST(StringPtr, hfsName)) ) + { + result = noErr; + } + else + { + /* if textEncodingHint is kTextEncodingUnknown, get a "default" textEncodingHint */ + if ( kTextEncodingUnknown == textEncodingHint ) + { + ScriptCode script; + RegionCode region; + + script = GetScriptManagerVariable(smSysScript); + region = GetScriptManagerVariable(smRegionCode); + result = UpgradeScriptInfoToTextEncoding(script, kTextLanguageDontCare, region, + NULL, &textEncodingHint); + if ( paramErr == result ) + { + /* ok, ignore the region and try again */ + result = UpgradeScriptInfoToTextEncoding(script, kTextLanguageDontCare, + kTextRegionDontCare, NULL, &textEncodingHint); + } + if ( noErr != result ) + { + /* ok... try something */ + textEncodingHint = kTextEncodingMacRoman; + } + } + + uMapping.unicodeEncoding = CreateTextEncoding(kTextEncodingUnicodeDefault, + kUnicodeCanonicalDecompVariant, kUnicode16BitFormat); + uMapping.otherEncoding = GetTextEncodingBase(textEncodingHint); + uMapping.mappingVersion = kUnicodeUseHFSPlusMapping; + + result = CreateTextToUnicodeInfo(&uMapping, &tuInfo); + require_noerr(result, CreateTextToUnicodeInfo); + + result = ConvertFromTextToUnicode(tuInfo, hfsName[0], &hfsName[1], + 0, /* no control flag bits */ + 0, NULL, 0, NULL, /* offsetCounts & offsetArrays */ + sizeof(unicodeName->unicode), /* output buffer size in bytes */ + &pascalCharsRead, &unicodeByteLength, unicodeName->unicode); + require_noerr(result, ConvertFromTextToUnicode); + + /* convert from byte count to char count */ + unicodeName->length = unicodeByteLength / sizeof(UniChar); + +ConvertFromTextToUnicode: + + /* verify the result in debug builds -- there's really not anything you can do if it fails */ + verify_noerr(DisposeTextToUnicodeInfo(&tuInfo)); + } + +CreateTextToUnicodeInfo: +BadParameter: + + return ( result ); +} + #endif Modified: Frontier/branches/FSRef_Migration/Common/source/fileops.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/fileops.c 2006-08-12 00:21:41 UTC (rev 1479) +++ Frontier/branches/FSRef_Migration/Common/source/fileops.c 2006-08-12 02:57:56 UTC (rev 1480) @@ -52,6 +52,7 @@ #include "MoreFilesX.h" #include "FSCopyObject.h" + #include <sys/param.h> // 2006-08-11 creedon #ifdef flcomponent #include "SetUpA5.h" @@ -3618,14 +3619,14 @@ HFSUniStr255 name; OSErr err; - + CFStringRefToHFSUniStr255 ( ( *fsin ).path, &name ); - err = FSMakeFSRefUnicode ( &( *fsin ).fsref, name.length, name.unicode, kTextEncodingUnknown, &fst.fsref ); + err = FSMakeFSRefUnicode ( &( *fsin ).fsref, name.length, name.unicode, kTextEncodingUnknown, &fst.fsref ); // kTextEncodingUnicodeDefault if ( err != noErr ) return ( false ); - + *fsout = fst; #endif // MACVERSION Modified: Frontier/branches/FSRef_Migration/Common/source/filepath.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/filepath.c 2006-08-12 00:21:41 UTC (rev 1479) +++ Frontier/branches/FSRef_Migration/Common/source/filepath.c 2006-08-12 02:57:56 UTC (rev 1480) @@ -38,6 +38,7 @@ #ifdef MACVERSION #include "MoreFilesX.h" // 2006-05-31 creedon + #include <CoreFoundation/CFString.h> // 2006-08-10 creedon #endif // MACVERSION @@ -254,7 +255,7 @@ boolean pathtofilespec ( bigstring bspath, ptrfilespec fs ) { // - // 2006-06-25 creedon: for Mac, FSRef-ized + // 2006-08-11 creedon: for Mac, FSRef-ized // // 5.0d8 dmb: clear fs first thing // @@ -344,13 +345,18 @@ if ( FSCompareFSRefs ( &fsr, &volumesfsref ) != noErr ) { + HFSUniStr255 name; + OSErr err; + filefrompath ( bsfullpath, bs ); ( *fs ).fsref = fsr; - ( *fs ).path = CFStringCreateWithPascalString ( kCFAllocatorDefault, bs, - kCFStringEncodingMacRoman ); + err = HFSNameGetUnicodeName255 ( bs, kTextEncodingUnknown, &name ); + ( *fs ).path = CFStringCreateWithCharacters ( kCFAllocatorDefault, name.unicode, + name.length ); + return ( true ); } // if This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-12 00:21:45
|
Revision: 1479 Author: creecode Date: 2006-08-11 17:21:41 -0700 (Fri, 11 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1479&view=rev Log Message: ----------- minor formatting tweak Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/filedialog.c Modified: Frontier/branches/FSRef_Migration/Common/source/filedialog.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/filedialog.c 2006-08-01 20:31:32 UTC (rev 1478) +++ Frontier/branches/FSRef_Migration/Common/source/filedialog.c 2006-08-12 00:21:41 UTC (rev 1479) @@ -626,7 +626,7 @@ if (sfdata.sfreply.sfGood) { - FSMakeFSRef ( ( *fs ).vRefNum, ( *fs ).parID, ( *fs ).name, &( *fspec ).fsref); // canonize + FSMakeFSRef ( ( *fs ).vRefNum, ( *fs ).parID, ( *fs ).name, &( *fspec ).fsref ); // canonize return (true); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-01 20:31:35
|
Revision: 1478 Author: creecode Date: 2006-08-01 13:31:32 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1478&view=rev Log Message: ----------- changed check of mainresponderresources to resources to access mainResponder.resources Modified Paths: -------------- ODBs/trunk/mainResponderRoot/mainResponder/adminSite/callbacks/pathEvaluation.fvc Modified: ODBs/trunk/mainResponderRoot/mainResponder/adminSite/callbacks/pathEvaluation.fvc =================================================================== --- ODBs/trunk/mainResponderRoot/mainResponder/adminSite/callbacks/pathEvaluation.fvc 2006-08-01 20:31:17 UTC (rev 1477) +++ ODBs/trunk/mainResponderRoot/mainResponder/adminSite/callbacks/pathEvaluation.fvc 2006-08-01 20:31:32 UTC (rev 1478) @@ -1,111 +1,159 @@ -FrontierVcsFile:1:scpt:mainResponder.adminSite.callbacks.pathEvaluation +FrontierVcsFile:3:scpt:mainResponder.adminSite.callbacks.pathEvaluation -on pathEvaluation () { - \xC7Changes - \xC76/12/02; 4:33:05 PM by JES - \xC7Allow loads of controlPanel and mainResponderResources URLs to pass through unmodified. - \xC76/6/02; 12:26:36 PM by JES - \xC7Created. If the port is the one specified by user.inetd.config.http2, set the address of the object to serve, to the address of the specified object in the admin site table. - local (pta, port); - if defined (host) { //This strange construction allows for easier debugging. See notes below. - \xC7When called from mainResponder.respond, host will be defined, and its parent is the page table. - pta = parentOf (host); - port = pta^.port; - \xC7bundle //debugging code. NOTE: comment this out when done debugging. - \xC7workspace.pt = pta^} - else { //for debugging - \xC7Since host was not defined, we assume that we've got a saved page table from a previous browser hit, and get the port and pageTableAddress from there. +on pathEvaluation ( ) { + «Changes + «8/1/06; 12:17:09 PM by TAC + «changed check of mainresponderresources to resources to access mainResponder.resources + «6/12/02; 4:33:05 PM by JES + «Allow loads of controlPanel and mainResponderResources URLs to pass through unmodified. + «6/6/02; 12:26:36 PM by JES + «Created. If the port is the one specified by user.inetd.config.http2, set the address of the object to serve, to the address of the specified object in the admin site table. + + local ( pta, port ); + + if defined ( host ) { // This strange construction allows for easier debugging. See notes below. + «When called from mainResponder.respond, host will be defined, and its parent is the page table. + pta = parentOf ( host ); + port = pta^.port} + «bundle // debugging code. NOTE: comment this out when done debugging. + «workspace.pt = pta^} + else { // for debugging + «Since host was not defined, we assume that we've got a saved page table from a previous browser hit, and get the port and pageTableAddress from there. port = workspace.pt.port; pta = @workspace.pt}; - on gatherAttributes () { - local (adratt); + + on gatherAttributes ( ) { + local ( adratt ); + pta^.responderAttributes.allowScriptsToRun = true; - for adratt in @mainResponder.adminSite.website.["#prefs"] { - pta^.[nameOf (adratt^)] = adratt^}}; - on adminSiteDive (pathstring) { - local (flSetPageTableAddress = false); - local (nomad = @mainResponder.adminSite.website); - if pathstring == "" { //the admin site home page + + for adratt in @mainResponder.adminSite.website.[ "#prefs" ] { + pta^.[ nameOf ( adratt^ ) ] = adratt^}}; + + on adminSiteDive ( pathstring ) { + local ( flSetPageTableAddress = false ); + local ( nomad = @mainResponder.adminSite.website ); + + if pathstring == "" { // the admin site home page pta^.adrObjectToServe = @nomad^.default; - return (true)}; - while sizeOf (pathstring) > 0 { + return ( true )}; + + while sizeOf ( pathstring ) > 0 { if flSetPageTableAddress { - html.setPageTableAddress (pta)} + html.setPageTableAddress ( pta )} else { flSetPageTableAddress = true}; - local (s = string.nthField (pathstring, "/", 1)); - pathstring = string.delete (pathstring, 1, sizeOf (s) + 1); - nomad = @nomad^.[s]; - if not defined (nomad^) { - return (false)}}; - pta^.title = nameOf (nomad^); //default title + + local ( s = string.nthField ( pathstring, "/", 1 ) ); + + pathstring = string.delete ( pathstring, 1, sizeOf ( s ) + 1 ); + nomad = @nomad^.[ s ]; + + if not defined ( nomad^ ) { + return ( false )}}; + + pta^.title = nameOf ( nomad^ ); // default title pta^.adrObjectToServe = nomad; - \xC7gatherAttributes () - return (true)}; - on toolsDive (pathstring) { - local (pathpart = string.nthfield (pathstring, "/", 1)); - pathstring = string.delete (pathstring, 1, sizeOf (pathpart) + 1); - local (nomad = @user.tools.databases); - if defined (nomad^.[pathpart]) { - nomad = @nomad^.[pathpart]} + + «gatherAttributes ( ) + + return ( true )}; + + on toolsDive ( pathstring ) { + local ( pathpart = string.nthfield ( pathstring, "/", 1 ) ); + + pathstring = string.delete ( pathstring, 1, sizeOf ( pathpart ) + 1 ); + + local ( nomad = @user.tools.databases ); + + if defined ( nomad^.[ pathpart ] ) { + nomad = @nomad^.[ pathpart ]} else { - return (false)}; + return ( false )}; + if nomad^.flInstalled { if nomad^.flEnabled { - local (toolname = Frontier.tools.cleanToolName (file.fileFromPath (nomad^.path)) ); - nomad = @[nomad^.path]; //the Tool's database - nomad = @nomad^.[toolname + "Website"]; - if defined (nomad^) { - if not defined (system.temp.mainResponder.misc) { - new (tableType, @system.temp.mainResponder.misc)}; - local (adrtempsite = @system.temp.mainResponder.misc.adminSite); - if not defined (adrtempsite^) { + local ( toolname = Frontier.tools.cleanToolName ( file.fileFromPath ( nomad^.path ) ) ); + + nomad = @[ nomad^.path ]; // the Tool's database + nomad = @nomad^.[ toolname + "Website" ]; + + if defined ( nomad^ ) { + if not defined ( system.temp.mainResponder.misc ) { + new ( tableType, @system.temp.mainResponder.misc )}; + + local ( adrtempsite = @system.temp.mainResponder.misc.adminSite ); + + if not defined ( adrtempsite^ ) { adrtempsite^ = mainResponder.adminSite.website}; - if pathstring == "" { //default or index page - if defined (nomad^.default) { - table.assign (@adrtempsite^.default, nomad^.default); + + if pathstring == "" { // default or index page + if defined ( nomad^.default ) { + table.assign ( @adrtempsite^.default, nomad^.default ); + pta^.title = "default"; pta^.adrObjectToServe = @adrtempsite^.default; - return (true)}; - if defined (nomad^.index) { - table.assign (@adrtempsite^.index, nomad^.index); + + return ( true )}; + + if defined ( nomad^.index ) { + table.assign ( @adrtempsite^.index, nomad^.index ); pta^.title = "index"; pta^.adrObjectToServe = @adrtempsite^.index; - return (true)}}; - while sizeOf (pathstring) > 0 { - local (s = string.nthField (pathstring, "/", 1)); - pathstring = string.delete (pathstring, 1, sizeOf (s) + 1); - nomad = @nomad^.[s]; - if not defined (nomad^) { - return (false)}; - if typeOf (nomad^) == tableType { - adrtempsite = @adrtempsite^.[s]; - new (tableType, adrtempsite); - continue}; //recurse - adrtempsite^.[s] = nomad^; + return ( true )}}; + + while sizeOf ( pathstring ) > 0 { + local ( s = string.nthField ( pathstring, "/", 1 ) ); + + pathstring = string.delete ( pathstring, 1, sizeOf ( s ) + 1 ); + nomad = @nomad^.[ s ]; + + if not defined ( nomad^ ) { + return ( false )}; + + if typeOf ( nomad^ ) == tableType { + adrtempsite = @adrtempsite^.[ s ]; + + new ( tableType, adrtempsite ); + + continue}; // recurse + + adrtempsite^.[ s ] = nomad^; pta^.title = s; - pta^.adrObjectToServe = @adrtempsite^.[s]; - \xC7gatherAttributes () - return (true)}}}}; - return (false)}; + pta^.adrObjectToServe = @adrtempsite^.[ s ]; + + «gatherAttributes ( ) + + return ( true )}}}}; + + return ( false )}; if port == user.inetd.config.http2.port { - local (pathstring = string.popLeading (pta^.uri, "/")); - if string.lower (pathstring) beginsWith "controlpanel" { - return (true)}; - if string.lower (pathstring) beginsWith "mainresponderresources" { - return (true)}; - if adminSiteDive (pathstring) { - return (true)}; - if toolsDive (pathstring) { - return (true)}; - bundle { //didn't find the page in the admin site or in a Tool -- return a 404 page + local ( pathstring = string.popLeading ( pta^.uri, "/" ) ); + + if string.lower ( pathstring ) beginsWith "controlpanel" { + return ( true )}; + + if string.lower ( pathstring ) beginsWith "resources" { + return ( true )}; + + if adminSiteDive ( pathstring ) { + return ( true )}; + + if toolsDive ( pathstring ) { + return ( true )}; + + bundle { // didn't find the page in the admin site or in a Tool -- return a 404 page pta^.code = 404; - pta^.responseBody = mainResponder.adminSite.html.errorPage ("404 Not Found", "The requested URL http://" + pta^.host + pta^.uri + " was not found on this server."); - try {delete (@pta^.responseHeaders.["Content-Type"])}; - scriptError ("!404 notFound")}}; + pta^.responseBody = mainResponder.adminSite.html.errorPage ( "404 Not Found", "The requested URL http://" + pta^.host + pta^.uri + " was not found on this server." ); + + try { delete ( @pta^.responseHeaders.[ "Content-Type" ] ) }; + + scriptError ( "!404 notFound" )}}; - return (true)}; + return ( true )}; -bundle { //test code - pathEvaluation ()} \ No newline at end of file +«bundle // test code + «pathEvaluation ( ) + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-08-01 20:31:21
|
Revision: 1477 Author: creecode Date: 2006-08-01 13:31:17 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1477&view=rev Log Message: ----------- created Added Paths: ----------- ODBs/trunk/mainResponderRoot/mainResponder/adminSite/macros/baseUrl.fvc Added: ODBs/trunk/mainResponderRoot/mainResponder/adminSite/macros/baseUrl.fvc =================================================================== --- ODBs/trunk/mainResponderRoot/mainResponder/adminSite/macros/baseUrl.fvc (rev 0) +++ ODBs/trunk/mainResponderRoot/mainResponder/adminSite/macros/baseUrl.fvc 2006-08-01 20:31:17 UTC (rev 1477) @@ -0,0 +1,14 @@ +FrontierVcsFile:3:scpt:mainResponder.adminSite.macros.baseUrl + +on baseUrl ( ) { + «Changes + «8/1/06; 12:46:15 PM by TAC + «created + + local ( pta = html.getPageTableAddress ( ), url = config.mainresponder.prefs.baseUrl, urlParts = string.urlSplit ( url ) ); + + url = urlParts [ 1 ] + urlParts [ 2 ] + ":" + pta^.port + "/"; + + return ( url )} + + Property changes on: ODBs/trunk/mainResponderRoot/mainResponder/adminSite/macros/baseUrl.fvc ___________________________________________________________________ Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-30 17:46:41
|
Revision: 1476 Author: creecode Date: 2006-07-30 10:46:37 -0700 (Sun, 30 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1476&view=rev Log Message: ----------- minor formatting tweaks Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/headers/file.h Frontier/branches/FSRef_Migration/Common/source/file.c Frontier/branches/FSRef_Migration/Common/source/fileops.c Frontier/branches/FSRef_Migration/Common/source/langvalue.c Modified: Frontier/branches/FSRef_Migration/Common/headers/file.h =================================================================== --- Frontier/branches/FSRef_Migration/Common/headers/file.h 2006-07-30 17:45:17 UTC (rev 1475) +++ Frontier/branches/FSRef_Migration/Common/headers/file.h 2006-07-30 17:46:37 UTC (rev 1476) @@ -199,7 +199,7 @@ #endif -extern void setfserrorparam ( const tyfilespec * ); +extern void setfserrorparam ( const ptrfilespec ); extern boolean endswithpathsep (bigstring bs); Modified: Frontier/branches/FSRef_Migration/Common/source/file.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/file.c 2006-07-30 17:45:17 UTC (rev 1475) +++ Frontier/branches/FSRef_Migration/Common/source/file.c 2006-07-30 17:46:37 UTC (rev 1476) @@ -987,7 +987,7 @@ // 2006-07-06 creedon; created // - CFStringRef csr = CFStringCreateWithPascalString (kCFAllocatorDefault, bs, kCFStringEncodingMacRoman ); + CFStringRef csr = CFStringCreateWithPascalString ( kCFAllocatorDefault, bs, kCFStringEncodingMacRoman ); ( *output ).length = CFStringGetLength ( csr ); Modified: Frontier/branches/FSRef_Migration/Common/source/fileops.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/fileops.c 2006-07-30 17:45:17 UTC (rev 1475) +++ Frontier/branches/FSRef_Migration/Common/source/fileops.c 2006-07-30 17:46:37 UTC (rev 1476) @@ -129,7 +129,7 @@ typedef struct tyfileinfo tyvolinfo; -void setfserrorparam ( const tyfilespec *fs ) { +void setfserrorparam ( const ptrfilespec fs ) { // // 2006-07-05 creedon; for Mac, FSRef-ized Modified: Frontier/branches/FSRef_Migration/Common/source/langvalue.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/langvalue.c 2006-07-30 17:45:17 UTC (rev 1475) +++ Frontier/branches/FSRef_Migration/Common/source/langvalue.c 2006-07-30 17:46:37 UTC (rev 1476) @@ -8724,19 +8724,23 @@ case unpackfunc: return (langunpackverb (hp1, v)); -#if isFrontier && (MACVERSION || RABNOTIMPEMENTED) - case appleeventfunc: - return (langipcmessage (hp1, normalmsg, v)); - - case findereventfunc: - return (langipcmessage (hp1, noreplymsg, v)); - - case complexeventfunc: - return (langipccomplexmessage (hp1, v)); - - case tableeventfunc: - return (langipctablemessage (hp1, v)); -#endif + + #if isFrontier && (MACVERSION || RABNOTIMPEMENTED) + + case appleeventfunc: + return (langipcmessage (hp1, normalmsg, v)); + + case findereventfunc: + return (langipcmessage (hp1, noreplymsg, v)); + + case complexeventfunc: + return (langipccomplexmessage (hp1, v)); + + case tableeventfunc: + return (langipctablemessage (hp1, v)); + + #endif + case objspecfunc: flnextparamislast = true; @@ -8745,23 +8749,24 @@ case setobjspecfunc: return (setobjspecverb (hp1, v)); -#ifdef MACVERSION - case gestaltfunc: { - OSType selector; - long result; + #ifdef MACVERSION + + case gestaltfunc: { + OSType selector; + long result; + + flnextparamislast = true; + + if (!getostypevalue (hp1, 1, &selector)) + return (false); + + if (!gestalt (selector, &result)) + result = -1; + + return (setlongvalue (result, v)); + } + #endif - flnextparamislast = true; - - if (!getostypevalue (hp1, 1, &selector)) - return (false); - - if (!gestalt (selector, &result)) - result = -1; - - return (setlongvalue (result, v)); - } -#endif - case syscrashfunc: { bigstring bs; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-30 17:45:24
|
Revision: 1475 Author: creecode Date: 2006-07-30 10:45:17 -0700 (Sun, 30 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1475&view=rev Log Message: ----------- minor formatting tweaks in aliastostring function, clearbytes of fs first thing in aliastofilespec function, fix crash,most of the function needed to be tweaked Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/langsystypes.c Modified: Frontier/branches/FSRef_Migration/Common/source/langsystypes.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/langsystypes.c 2006-07-30 17:37:30 UTC (rev 1474) +++ Frontier/branches/FSRef_Migration/Common/source/langsystypes.c 2006-07-30 17:45:17 UTC (rev 1475) @@ -651,7 +651,7 @@ #ifdef MACVERSION // - // 2006-06-24 creedon: FSRef-ized + // 2006-07-26 creedon: FSRef-ized // // 1996-04-26 dmb: restored FollowFinderAlias code; must use if we get fnfErr. // @@ -669,6 +669,8 @@ AliasInfoType ix = asiAliasName; OSErr err; + clearbytes ( &fs, sizeof ( fs ) ); + if (!langcanusealiases ()) return (false); @@ -739,7 +741,7 @@ boolean aliastofilespec ( AliasHandle halias, ptrfilespec fs ) { // - // 2006-06-17 creedon: for Mac FSRef-ized + // 2006-07-29 creedon: for Mac FSRef-ized // // 7.0b34 PBS: Can't use ResolveAliasWithMountFlags on pre-Carbon Macs reliably, so fall back to FollowFinderAlias. // @@ -755,41 +757,56 @@ boolean flchanged; bigstring bs; OSErr err; + OSStatus status; - if (!langcanusealiases ()) - return (false); + if ( ! langcanusealiases ( ) ) + return ( false ); err = FSResolveAliasWithMountFlags ( NULL, halias, &( *fs ).fsref, &flchanged, kARMNoUI ); if ( ( err == noErr ) || ( err == fnfErr ) ) { - HFSUniStr255 name; - OSStatus status; - - status = FSGetCatalogInfo ( &( *fs ).fsref, kFSCatInfoNone, NULL, &name, NULL, &( *fs ).fsref ); + getfilespecparent ( fs ); + + return ( true ); - ( *fs ).path = CFStringCreateWithCharacters ( kCFAllocatorDefault, name.unicode, name.length ); + } + + FSAliasInfoBitmap whichAliasInfo = kFSAliasInfoNone; + HFSUniStr255 targetName; + HFSUniStr255 volumeName; + + status = FSCopyAliasInfo ( halias, NULL, &volumeName, NULL, &whichAliasInfo, NULL ); + + if ( status == noErr ) { // try to get vol info + + HFSUniStr255ToStr255 ( &volumeName, bs ); - return ( true ); + fileparsevolname ( bs, fs ); } - if (GetAliasInfo (halias, asiVolumeName, bs) == noErr) // try to get vol info - fileparsevolname (bs, fs); + status = FSCopyAliasInfo ( halias, &targetName, NULL, NULL, &whichAliasInfo, NULL ); - getfsfile ( fs, bs ); + if ( status == noErr ) + HFSUniStr255ToStr255 ( &targetName, bs ); + else { - if (GetAliasInfo (halias, asiAliasName, bs ) != noErr) // try to set file name - langgetmiscstring (unknownstring, bs ); + langgetmiscstring ( unknownstring, bs ); + + } - if (langerrorenabled ()) { + ( *fs ).path = CFStringCreateWithPascalString ( kCFAllocatorDefault, bs, kCFStringEncodingMacRoman ); + + if ( langerrorenabled ( ) ) { - setfserrorparam ( fs ); + setoserrorparam ( bs ); - oserror (err); + oserror ( err ); + } - return (false); + return ( false ); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-30 17:37:33
|
Revision: 1474 Author: creecode Date: 2006-07-30 10:37:30 -0700 (Sun, 30 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1474&view=rev Log Message: ----------- minor formatting tweaks in langipchandleverb and langipcopendocroutine functions, clearbytes of fs first thing in langipcbuildmessage function, for call to landsetverbattr pass typeFSRef for third param Modified Paths: -------------- Frontier/branches/FSRef_Migration/Common/source/langipc.c Modified: Frontier/branches/FSRef_Migration/Common/source/langipc.c =================================================================== --- Frontier/branches/FSRef_Migration/Common/source/langipc.c 2006-07-26 17:48:23 UTC (rev 1473) +++ Frontier/branches/FSRef_Migration/Common/source/langipc.c 2006-07-30 17:37:30 UTC (rev 1474) @@ -1629,7 +1629,7 @@ static pascal boolean langipchandleverb (hdlverbrecord hverb) { // - // 2006-06-25 creedon: FSRef-ized + // 2006-07-25 creedon: FSRef-ized // // 4.1b7 dmb: allow a specific root file to be targed with the "subject" // event attribute. Bug: right now, langipcfindhandler doesn't have this @@ -1644,14 +1644,16 @@ AEDesc subject; WindowPtr wroot = nil; - oserror (noErr); /*make sure it's clear*/ + oserror ( noErr ); // make sure it's clear - if (landgetverbattr (hverb, 'subj', typeFSS, &subject) == noErr) { /*4.1b7 dmb*/ + if ( landgetverbattr ( hverb, 'subj', typeFSS, &subject ) == noErr ) { FSSpec fs; Handle h; tyfilespec fst; + clearbytes ( &fst, sizeof ( fst ) ); + copydatahandle (&subject, &h); fs = **(FSSpec **) h; @@ -1665,10 +1667,11 @@ if (wroot == nil) { // landreturnerror + } else { - (**hverb).landrefcon = 0; /*don't use trap script found in other root*/ + (**hverb).landrefcon = 0; // don't use trap script found in other root shellpushglobals (wroot); @@ -1679,7 +1682,7 @@ switch ((**hverb).verbtoken) { case idrunning: - fl = landreturnboolean (hverb, true); /*for old IACTK compatibility*/ + fl = landreturnboolean (hverb, true); // for old IACTK compatibility break; @@ -1689,48 +1692,22 @@ break; case runscripttoken: - fl = langipchandletrapverb (hverb, &flfoundhandler); /*let traps have a shot at it first*/ + fl = langipchandletrapverb (hverb, &flfoundhandler); // let traps have a shot at it first if (!flfoundhandler) fl = langipchandlerunscript (hverb); break; - /* - case schedulescripttoken: - fl = langipchandleschedulescript (hverb); - - break; - */ + // case schedulescripttoken: + // fl = langipchandleschedulescript (hverb); + // + // break; -#ifndef PIKE - #if TARGET_API_MAC_OS8 - case getmenuarraytoken: - fl = langipcgetmenuarrayverb (hverb); - - break; - - case getmenuhandletoken: - fl = langipcgetmenuhandleverb (hverb); - - break; - - case idrunmenuitem: - fl = langipcrunmenuitemverb (hverb); - - break; - - case killscripttoken: - fl = langipckillscriptverb (hverb); - - break; - #endif -#endif - default: fl = langipchandletrapverb (hverb, &flfoundhandler); - if (!flfoundhandler) /*getoserror () == noErr*/ + if (!flfoundhandler) // getoserror () == noErr landreturnerror (hverb, undefinedverberror); break; @@ -1750,7 +1727,8 @@ } return (fl); - } /*langipchandleverb*/ + + } // langipchandleverb static pascal boolean langipcfindhandler (hdlverbrecord hverb) { @@ -2869,7 +2847,7 @@ tyfilespec fs = **ipcaddress.val.data.filespecvalue; - landsetverbattr (hv, 'subj', typeFSS, &fs, sizeof (fs)); + landsetverbattr ( hv, 'subj', typeFSRef, &fs, sizeof ( fs ) ); } while (true) { /*pop off pairs of key+param combos*/ @@ -4132,21 +4110,24 @@ } /*langipcopenapproutine*/ -static pascal OSErr langipcopendocroutine (FSSpec *fs) { +static pascal OSErr langipcopendocroutine ( FSSpec *fs ) { // - // 2006-06-25 creedon: FSRef=ized + // 2006-07-25 creedon: FSRef=ized // tyfilespec fst; + clearbytes ( &fst, sizeof ( fst ) ); + FSpMakeFSRef ( fs, &fst.fsref ); - if (!shellopenfile ( &fst, false, nil)) - return (getoserror ()); + if ( ! shellopenfile ( &fst, false, nil ) ) + return ( getoserror ( ) ); - return (noErr); - } /*langipcopendocroutine*/ + return ( noErr ); + + } // langipcopendocroutine static pascal OSErr langipcquitapproutine (void) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-27 22:37:44
|
Revision: 1469 Author: creecode Date: 2006-07-26 10:33:51 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1469&view=rev Log Message: ----------- updated copyright Modified Paths: -------------- ODBs/trunk/frontierRoot/system/startup/license.fvc Modified: ODBs/trunk/frontierRoot/system/startup/license.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/startup/license.fvc 2006-07-26 17:29:14 UTC (rev 1468) +++ ODBs/trunk/frontierRoot/system/startup/license.fvc 2006-07-26 17:33:51 UTC (rev 1469) @@ -1,11 +1,14 @@ -FrontierVcsFile:1:wptx:system.startup.license +FrontierVcsFile:3:wptx:system.startup.license -UserLand Frontier(tm) -- High performance Web content management, object database, system-level and Internet scripting environment, including source code editing and debugging. +Frontier™ -- High performance Web content management, object database, system-level and Internet scripting environment, including source code editing and debugging. -Copyright (C) 1992-2004 UserLand Software, Inc. +Copyright © 1992-2004 UserLand Software, Inc. +Copyright © 2004-2006 Frontier Kernel Project This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. -You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA \ No newline at end of file +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-27 22:30:49
|
Revision: 1472 Author: creecode Date: 2006-07-26 10:43:04 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1472&view=rev Log Message: ----------- coerce adrPageData to address when working with it in the context of a guest database when adding hint for guest databases we don't care if a top level item is a table or not Modified Paths: -------------- ODBs/trunk/frontierRoot/system/verbs/builtins/fatPages/buildFileAtts.fvc Modified: ODBs/trunk/frontierRoot/system/verbs/builtins/fatPages/buildFileAtts.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/verbs/builtins/fatPages/buildFileAtts.fvc 2006-07-26 17:39:52 UTC (rev 1471) +++ ODBs/trunk/frontierRoot/system/verbs/builtins/fatPages/buildFileAtts.fvc 2006-07-26 17:43:04 UTC (rev 1472) @@ -1,65 +1,77 @@ -FrontierVcsFile:1:scpt:system.verbs.builtins.fatPages.buildFileAtts +FrontierVcsFile:3:scpt:system.verbs.builtins.fatPages.buildFileAtts on buildFileAtts (w, runnable = false) { - \xC7Changes - \xC712/12/04; 5:19:43 PM by TAC - \xC7don't store guest database file path - \xC7added hint for top level items in guest databases that are not tables - \xC7bumped fatPage version to 1.0.1 - \xC705/24/01; 10:12:48 PM by PBS - \xC7Added support for file-based OPML documents. - \xC7Thursday, July 17, 1997 at 12:22:23 PM by PBS - \xC7w may also be an odb address. - \xC7New parameter: runnable. Desktop scripts are saved with runnable set to true. - \xC7Fri, Jun 13, 1997 at 5:49:06 PM by dmb - \xC7w may be a window title, or a filespec, depending on whether or not the window has ever been saved. - local (htmltext = ""); + «Changes + «5/27/06; 6:54:03 PM by TAC + «coerce adrPageData to address when working with it in the context of a guest database + «when adding hint for guest databases we don't care if a top level item is a table or not + «12/12/04; 5:19:43 PM by TAC + «don't store guest database file path + «added hint for top level items in guest databases that are not tables + «bumped fatPage version to 1.0.1 + «05/24/01; 10:12:48 PM by PBS + «Added support for file-based OPML documents. + «Thursday, July 17, 1997 at 12:22:23 PM by PBS + «w may also be an odb address. + «New parameter: runnable. Desktop scripts are saved with runnable set to true. + «Fri, Jun 13, 1997 at 5:49:06 PM by dmb + «w may be a window title, or a filespec, depending on whether or not the window has ever been saved. + + local ( htmlText = "" ); + on add (s) { - htmltext = htmltext + s}; + htmlText = htmlText + s}; + add ("\r<!--\r#fatPage\r"); //Wed, Feb 26, 1997 at 7:44:57 AM by DW, added extra \r before # + on addHint (name, value, flencode=false) { local (s = string (value)); if flencode { s = base64.encode (string (value), 0)}; add ("#" + name + " " + s + "\r")}; - addHint ("version", "1.0.1"); // 12/12/04; 4:07:01 PM by TAC - bumped version for guest database hinting + + addHint ("version", "1.0.1"); // bumped version for guest database hinting addHint ("docs", "http://www.scripting.com/fatPages/faq.html"); - \xC7bundle \xC7add window rect hint - \xC7local (x, y, w, h) - \xC7window.getPosition (w, @x, @y) - \xC7window.getSize (w, @w, @h) - \xC7addHint ("windowRect", string (y) + ',' + x + ',' + (y + h) + ',' + (x + w)) + «bundle «add window rect hint + «local (x, y, w, h) + «window.getPosition (w, @x, @y) + «window.getSize (w, @w, @h) + «addHint ("windowRect", string (y) + ',' + x + ',' + (y + h) + ',' + (x + w)) local (data); + if (defined (w) && (parentOf (w^) == "" || parentOf (w^) == "system.compiler.files") && w != @root) { //It's a file-based object. packWindow (w, @data); if file.exists (w) { if string.lower (file.type (w)) == "text" || string.lower (file.type (w)) == "txt" { - \xC7Sun, Oct 19, 1997 at 12:49:51 AM by PBS + «Sun, Oct 19, 1997 at 12:49:51 AM by PBS unpack (@data, @temp.lasttextfile); - htmltext = string (temp.lasttextfile); - htmltext = string.replaceall (htmltext, cr + lf, cr); - return (htmltext)}; + htmlText = string (temp.lasttextfile); + htmlText = string.replaceall (htmlText, cr + lf, cr); + return (htmlText)}; if string.lower (file.type (w)) == "opml" { //PBS 05/24/01: support for OPML files local (xmlText = op.outlineToXml (@[w])); return (xmlText)}}} else { //It's an odb object. adrPageData = w; data = binary (fatPages.encodePageData (adrPageData)); - \xC7setBinaryType (@data, getBinaryType (adrpagedata)) - setBinaryType (@data, typeof (adrpagedata^))}; + «setBinaryType (@data, getBinaryType (adrPageData)) + setBinaryType (@data, typeof (adrPageData^))}; - if defined (adrPageData) { \xC7Thu, Mar 20, 1997 at 7:24:45 AM by DW - addHint ("adrPageData", string.popFileFromAddress (adrPageData)); // 12/12/04; 5:15:46 PM by TAC - don't store the guest database file path - if table.inGuestDatabase (adrPageData) { // 12/12/04; 4:06:11 PM by TAC - hint for top level guest database item that is not a table - local (addressList = string.parseAddress (adrPageData)); + if defined (adrPageData) { «Thu, Mar 20, 1997 at 7:24:45 AM by DW + addHint ("adrPageData", string.popFileFromAddress (adrPageData)); // don't store the guest database file path + if table.inGuestDatabase ( address ( adrPageData ) ) { // hint for top level guest database item + local ( addressList = string.parseAddress ( address ( adrPageData ) ) ); + if sizeOf (addressList) == 2 { // it is a top level item - if typeOf (adrPageData) != tableType { - addHint ("guestDatabaseName", file.fileFromPath (addressList [1]))}}}}; + addHint ("guestDatabaseName", file.fileFromPath (addressList [1]))}}}; addHint ("objectType", "application/x-frontier-" + getbinarytype (data)); addHint ("runnable", string (runnable)); //Thursday, July 17, 1997 at 12:22:11 PM by PBS addHint ("pageData", string (data), true); add ("-->\r"); - return (htmltext)}; -\xC7bundle // test - \xC7buildFileAtts (@["Macintosh HD:Users:creedon:Development:Frontier:build_XCode:build:Guest Databases:apps:mainResponder.root"].["#startup"]) \ No newline at end of file + return (htmlText)}; + +«bundle // testing + «buildFileAtts ( "sampleMrWs" ) + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-27 22:02:29
|
Revision: 1473 Author: creecode Date: 2006-07-26 10:48:23 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1473&view=rev Log Message: ----------- changed logic so that the script can be run again if the script failed for some reason, without having to fiddle with tables Modified Paths: -------------- ODBs/trunk/frontierRoot/system/startup/startupScript.fvc Modified: ODBs/trunk/frontierRoot/system/startup/startupScript.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/startup/startupScript.fvc 2006-07-26 17:43:04 UTC (rev 1472) +++ ODBs/trunk/frontierRoot/system/startup/startupScript.fvc 2006-07-26 17:48:23 UTC (rev 1473) @@ -1,6 +1,8 @@ -FrontierVcsFile:2:scpt:system.startup.startupScript +FrontierVcsFile:3:scpt:system.startup.startupScript «Changes + «7/16/06; 2:26:14 PM by TAC and KW + «changed logic so that the script can be run again if the script failed for some reason, without having to fiddle with tables «5/19/06; 3:37:07 PM by TAC «open docServer.root «4/24/06; 3:00:21 PM by TAC @@ -82,47 +84,50 @@ «http://discuss.userland.com/msgReader$9658 «This script runs when Frontier opens the Frontier.root file. -if defined (system.temp.Frontier) { // only run the startup script once - return}; +if defined ( system.temp.Frontier.flStartupComplete ) { // only run the startup script once + if system.temp.Frontier.flStartupComplete { + return}}; -local (flEnableAgents = true, flOpenDatabases = true, flEnableHttpServer = true); // can be set by the external startup script -local (flFirstRootRun = true); +local ( flEnableAgents = true, flOpenDatabases = true, flEnableHttpServer = true ); // can be set by the external startup script +local ( flFirstRootRun = true ); bundle { // miscellaneous initializations, checks, and etc., phase 1 of 2 - Frontier.enableAgents (false); // try to keep agents from reporting errors and causing problems + Frontier.enableAgents ( false ); // try to keep agents from reporting errors and causing problems - Frontier.pathString = file.folderFromPath (Frontier.getFilePath ()); + Frontier.pathString = file.folderFromPath ( Frontier.getFilePath ( ) ); - if defined (user.prefs.firstRootRun) { + if defined ( user.prefs.firstRootRun ) { flFirstRootRun = user.prefs.firstRootRun}}; if flFirstRootRun { - while window.frontmost () != "" { // open windows can mess things up later on - window.hide (window.frontmost ())}; + while window.frontmost ( ) != "" { // open windows can mess things up later on + window.hide ( window.frontmost ( ) )}; - «return (false) // enable for testing + «return ( false ) // enable for testing - new (tableType, @system.temp); - new (tableType, @root.user)}; + new ( tableType, @system.temp ); + new ( tableType, @root.user )}; bundle { // system.temp.Frontier, we are starting up - new (tableType, @system.temp.Frontier); - system.temp.Frontier.startupTime = clock.now (); + new ( tableType, @system.temp.Frontier ); + + system.temp.Frontier.flStartupComplete = false; + system.temp.Frontier.startupTime = clock.now ( ); system.temp.Frontier.startingUp = true}; -backups.init (); -batchExporter.init (); -export.init (); -rootUpdates.init (); // set up user.rootUpdates, even though root updates uses tcp, its ok to set up here as no tcp calls are made at this time -webEdit.init (); +backups.init ( ); +batchExporter.init ( ); +export.init ( ); +rootUpdates.init ( ); // set up user.rootUpdates, even though root updates uses tcp, its ok to set up here as no tcp calls are made at this time +webEdit.init ( ); bundle { // set up user.prefs if flFirstRootRun { - new (tableType, @user.prefs); + new ( tableType, @user.prefs ); bundle { // set up user.prefs.commonStyles - case sys.os () { + case sys.os ( ) { "MacOS" { if system.environment.isCarbon { user.prefs.commonStyles = Frontier.data.commonStylesMacCarbon} @@ -132,77 +137,77 @@ "WinNT" { user.prefs.commonStyles = Frontier.data.commonStylesWin}}}}; - table.copyUndefinedContents (@Frontier.data.userPrefs, @user.prefs); + table.copyUndefinedContents ( @Frontier.data.userPrefs, @user.prefs ); bundle { // set up user.prefs.dialogs if flFirstRootRun { - new (tableType, @user.prefs.dialogs)}; + new ( tableType, @user.prefs.dialogs )}; - table.copyUndefinedContents (@Frontier.data.userPrefs.dialogs, @user.prefs.dialogs)}; + table.copyUndefinedContents ( @Frontier.data.userPrefs.dialogs, @user.prefs.dialogs )}; bundle { // set up user.prefs.search if flFirstRootRun { - new (tableType, @user.prefs.search)}; + new ( tableType, @user.prefs.search )}; - table.copyUndefinedContents (@Frontier.data.userPrefs.search, @user.prefs.search); + table.copyUndefinedContents ( @Frontier.data.userPrefs.search, @user.prefs.search ); - if not (defined (user.prefs.search.replaceWith)) { - user.prefs.search.replaceWith = Frontier.version ()}}; + if not ( defined ( user.prefs.search.replaceWith ) ) { + user.prefs.search.replaceWith = Frontier.version ( )}}; - Frontier.setupUserPrefsFonts ()}; + Frontier.setupUserPrefsFonts ( )}; if flFirstRootRun { bundle { // set up the quick script window if system.environment.isWindows { - Frontier.showApplication ()}; - Frontier.bringToFront (); - clipboard.putvalue ("dialog.notify (\"Hello World!\")"); - window.quickScript (); - editmenu.selectAll (); - editmenu.paste (); - window.close ("Quick Script")}; + Frontier.showApplication ( )}; + Frontier.bringToFront ( ); + clipboard.putvalue ( "dialog.notify ( \"Hello World!\" )" ); + window.quickScript ( ); + editmenu.selectAll ( ); + editmenu.paste ( ); + window.close ( "Quick Script" )}; bundle { // set up root window - local (w = "root"); - target.set (w); - window.setPosition (w, 0, 0); - editMenu.setFont (user.prefs.fonts.tableFont); - editMenu.setFontSize (user.prefs.fonts.tableFontSize); - window.zoom (w); - window.open (w)}; + local ( w = "root" ); + target.set ( w ); + window.setPosition ( w, 0, 0 ); + editMenu.setFont ( user.prefs.fonts.tableFont ); + editMenu.setFontSize ( user.prefs.fonts.tableFontSize ); + window.zoom ( w ); + window.open ( w )}; bundle { // set up user.callbacks - new (tableType, @user.callbacks); - new (tableType, @user.callbacks.closeWindow); - new (tableType, @user.callbacks.cmd2click); - new (tableType, @user.callbacks.compileChangedScript); - new (tableType, @user.callbacks.control2click); - new (tableType, @user.callbacks.fileSetModified); - new (tableType, @user.callbacks.fileWriteWholeFile); - new (tableType, @user.callbacks.opCollapse); - new (tableType, @user.callbacks.opCursorMoved); - new (tableType, @user.callbacks.openWindow); - new (tableType, @user.callbacks.opExpand); - new (tableType, @user.callbacks.opInsert); - new (tableType, @user.callbacks.opReturnKey); - new (tableType, @user.callbacks.opRightClick); - new (tableType, @user.callbacks.opStruct2Click); - new (tableType, @user.callbacks.option2click); - new (tableType, @user.callbacks.resume); - new (tableType, @user.callbacks.saveWindow); - new (tableType, @user.callbacks.shutdown); - new (tableType, @user.callbacks.startup); - new (tableType, @user.callbacks.statusMessage); - new (tableType, @user.callbacks.suspend); - new (tableType, @user.callbacks.systemTrayIcon2Click); - new (tableType, @user.callbacks.systemTrayIconRightClick); - new (tableType, @user.callbacks.tcpSendMail)}; + new ( tableType, @user.callbacks ); + new ( tableType, @user.callbacks.closeWindow ); + new ( tableType, @user.callbacks.cmd2click ); + new ( tableType, @user.callbacks.compileChangedScript ); + new ( tableType, @user.callbacks.control2click ); + new ( tableType, @user.callbacks.fileSetModified ); + new ( tableType, @user.callbacks.fileWriteWholeFile ); + new ( tableType, @user.callbacks.opCollapse ); + new ( tableType, @user.callbacks.opCursorMoved ); + new ( tableType, @user.callbacks.openWindow ); + new ( tableType, @user.callbacks.opExpand ); + new ( tableType, @user.callbacks.opInsert ); + new ( tableType, @user.callbacks.opReturnKey ); + new ( tableType, @user.callbacks.opRightClick ); + new ( tableType, @user.callbacks.opStruct2Click ); + new ( tableType, @user.callbacks.option2click ); + new ( tableType, @user.callbacks.resume ); + new ( tableType, @user.callbacks.saveWindow ); + new ( tableType, @user.callbacks.shutdown ); + new ( tableType, @user.callbacks.startup ); + new ( tableType, @user.callbacks.statusMessage ); + new ( tableType, @user.callbacks.suspend ); + new ( tableType, @user.callbacks.systemTrayIcon2Click ); + new ( tableType, @user.callbacks.systemTrayIconRightClick ); + new ( tableType, @user.callbacks.tcpSendMail )}; bundle { // clear applications paths in system.verbs.apps - local (adrAppsTable = @system.verbs.apps, i); - for i = 1 to sizeof (adrAppsTable^) { - local (adrAppInfo = @adrAppsTable^ [i].appInfo); - if defined (adrAppInfo^) { + local ( adrAppsTable = @system.verbs.apps, i ); + for i = 1 to sizeof ( adrAppsTable^ ) { + local ( adrAppInfo = @adrAppsTable^ [i].appInfo ); + if defined ( adrAppInfo^ ) { adrAppInfo^.path = ""}}}; bundle { // set up Frontier.tools.thread @@ -210,40 +215,40 @@ Frontier.tools.thread.enabled = true}; bundle { // set up workspace - new (tableType, @root.workspace); - new (outlineType, @workspace.notepad)}; + new ( tableType, @root.workspace ); + new ( outlineType, @workspace.notepad )}; bundle { // miscellaneous - new (tableType, @root.scratchpad); - new (tableType, @system.deskscripts); - new (tableType, @user.databases); - new (tableType, @user.protocols)}}; - «new (tableType, @websites.["#data"]) + new ( tableType, @root.scratchpad ); + new ( tableType, @system.deskscripts ); + new ( tableType, @user.databases ); + new ( tableType, @user.protocols )}}; + «new ( tableType, @websites.["#data"] ) -Frontier.data.DLLs.install (); +Frontier.data.DLLs.install ( ); bundle { // set up user.menus if flFirstRootRun { - new (tableType, @user.menus)}; + new ( tableType, @user.menus )}; «user.menus.bookmarkMenu = userland.virginBookmarkMenu - if not (defined (user.menus.customMenu)) { + if not ( defined ( user.menus.customMenu ) ) { user.menus.customMenu = Frontier.data.virginCustomMenu}}; if flFirstRootRun { «we don't run startup scripts at this time because they are run later in the open all databases section of the scrpt - Frontier.installApp ("mainResponder.root", false); // open mainResponder.root, hidden and add to user.databases - Frontier.installApp ("prefs.root", false, "www"); // open prefs.root, hidden and add to user.databases - Frontier.installApp ("docServer.root", false, "www"); // open docServer.root, hidden and add to user.databases + Frontier.installApp ( "mainResponder.root", false ); // open mainResponder.root, hidden and add to user.databases + Frontier.installApp ( "prefs.root", false, "www" ); // open prefs.root, hidden and add to user.databases + Frontier.installApp ( "docServer.root", false, "www" );; // open docServer.root, hidden and add to user.databases }; «bundle // open prefs.root, hidden and add to user.databases - «local (f = file.getPathChar () + ((Frontier.getSubFolder ("www") + "prefs.root") - Frontier.pathString), s = f) + «local (f = file.getPathChar ( ) + ( ( Frontier.getSubFolder ( "www" ) + "prefs.root" ) - Frontier.pathString ), s = f ) « «if system.environment.isWindows «if s [1] == '\\' «delete (@s [1]) « - «if not (defined ([string (fileSpec (s))])) + «if not (defined ([string (fileSpec (s ) )] ) ) «fileMenu.open (f, true); //open hidden « «Add an entry to the user.databases table. @@ -256,7 +261,7 @@ «adrTable^.runStartupScript = true «adrTable^.supportsSubscribe = false -«bundle //initialize responders +«bundle // initialize responders «user.webserver.responders.websiteFramework.data.docTree.samples = @websites.samples «try «delete (@user.webserver.responders.websiteFramework.data.docTree.allSites) @@ -274,172 +279,172 @@ system.menus.data.currentmenu = 0; bundle { // check for presence of Psapi.dll - if sys.os () == "WinNT" { - if not (sys.appIsRunning (file.fileFromPath (Frontier.getProgramPath ()))) { // 11/27/04; 12:14:40 PM by TAC - would it be possible for Frontier to install this on its own? - dialog.alert ("You need to run the Frontier Psapi Installer for certain Frontier verbs to work properly.")}}}}; + if sys.os ( ) == "WinNT" { + if not ( sys.appIsRunning ( file.fileFromPath ( Frontier.getProgramPath ( ) ) ) ) { // 11/27/04; 12:14:40 PM by TAC - would it be possible for Frontier to install this on its own? + dialog.alert ( "You need to run the Frontier Psapi Installer for certain Frontier verbs to work properly." )}}}}; -bundle { //open the about window if the pref says we should +bundle { // open the about window if the pref says we should «added 12/16/98; 6:47:28 PM by DW - if not defined (user.prefs.openAboutWindow) { + if not defined ( user.prefs.openAboutWindow ) { user.prefs.openAboutWindow = true}; if user.prefs.openAboutWindow { - window.about ()}}; + window.about ( )}}; -bundle { //initialize the log, next bit of code could add a log item +bundle { // initialize the log, next bit of code could add a log item «added 12/16/98; 6:52:40 PM by DW - if defined (log.startup) { - log.startup ()}}; + if defined ( log.startup ) { + log.startup ( )}}; -bundle { //run the external startup script - local (fname = "frontierStartupCommands.txt"); - local (f = file.folderFromPath (Frontier.getProgramPath ()) + fname); - if file.exists (f) { +bundle { // run the external startup script + local ( fname = "frontierStartupCommands.txt" ); + local ( f = file.folderFromPath ( Frontier.getProgramPath ( ) ) + fname ); + if file.exists ( f ) { try { - evaluate (string (file.readWholeFile (f)))} + evaluate ( string ( file.readWholeFile ( f ) ) )} else { - log.add ("Error running " + fname + ": \"" + tryError + "\"", "startupError", flwptext:true)}}}; + log.add ( "Error running " + fname + ": \"" + tryError + "\"", "startupError", flwptext:true )}}}; bundle { // tcp based services - webserver.init (); // needs to load first - betty.init (); // needs to load second - soap.init ()}; + webserver.init ( ); // needs to load first + betty.init ( ); // needs to load second + soap.init ( )}; bundle { // people based services - people.init (); // needs to load first - custody.init (); - webEditServer.init ()}; + people.init ( ); // needs to load first + custody.init ( ); + webEditServer.init ( )}; -bundle { //open all the databases that have openOnStartup true +bundle { // open all the databases that have openOnStartup true «added 12/16/98; 6:23:16 PM by DW - if defined (user.databases) { + if defined ( user.databases ) { if flOpenDatabases { - local (i, flMsg = false, t = user.databases); + local ( i, flMsg = false, t = user.databases ); - for i = 1 to sizeOf (t) { - if typeOf (t [i]) == tableType { //06/08/01 JES: avert item #1 errors + for i = 1 to sizeOf ( t ) { + if typeOf ( t [i] ) == tableType { //06/08/01 JES: avert item #1 errors with t [i] { - local (flOpened = false, s); + local ( flOpened = false, s ); try { if openOnStartup { - msg (this + ": Opening " + file.fileFromPath (f)); + msg ( this + ": Opening " + file.fileFromPath ( f ) ); flMsg = true; s = f; if system.environment.isWindows { if s [1] == '\\' { - delete (@s [1])}}; + delete ( @s [1] )}}; - s = string (fileSpec (s)); + s = string ( fileSpec ( s ) ); - if not (defined ([s])) { - fileMenu.open (f, hidden:true)}; + if not ( defined ( [s] ) ) { + fileMenu.open ( f, hidden:true )}; flOpened = true}} else { - log.add ("Startup error opening guest database " + nameof (t [i]) + ": \"" + tryError + "\"", "startupError", flwptext:true)}; + log.add ( "Startup error opening guest database " + nameof ( t [i] ) + ": \"" + tryError + "\"", "startupError", flwptext:true )}; if flOpened { - if defined (runStartupScript) { + if defined ( runStartupScript ) { if runStartupScript { //PBS 10/7/99: check the value of runStartupScript: only run the script if the boolean is true - local (adrScript = @[s].["#startup"]); + local ( adrScript = @[s].["#startup"] ); - if defined (adrScript^) { + if defined ( adrScript^ ) { try { - adrScript^ ()} + adrScript^ ( )} else { - log.add ("Error running #startup script in guest database " + nameOf (t [i]) + ": \"" + tryError + "\"", "startupError", flwptext: true)}}}}}}}}; + log.add ( "Error running #startup script in guest database " + nameOf ( t [i] ) + ": \"" + tryError + "\"", "startupError", flwptext: true )}}}}}}}}; if flMsg { - msg ("")}}}}; + msg ( "" )}}}}; -scheduler.init (); +scheduler.init ( ); bundle { // webBrowser - webBrowser.init (); + webBrowser.init ( ); if system.environment.isMac { - try {new (tableType, @user.odbEditors.data.openFiles)}}}; //Empty out the list of externally-edited files. + try {new ( tableType, @user.odbEditors.data.openFiles )}}}; //Empty out the list of externally-edited files. «if system.environment.isWindows - «user.webBrowser.winDefaultBrowserApp = file.findApplication ("htm") + «user.webBrowser.winDefaultBrowserApp = file.findApplication ( "htm" ) -html.init (); +html.init ( ); -try { //04/28/2001 JES: prevent startup from failing if Tool installation fails. - Frontier.tools.startup ()}; +try { // 04/28/2001 JES: prevent startup from failing if Tool installation fails. + Frontier.tools.startup ( )}; if flFirstRootRun { bundle { // set up websites table and related with websites.["#ftpSite"] { - folder = file.folderFromPath (Frontier.getProgramPath ()) + "Websites" + file.getPathChar (); + folder = file.folderFromPath ( Frontier.getProgramPath ( ) ) + "Websites" + file.getPathChar ( ); «file.sureFolder (folder) - url = file.fileToURL (folder); + url = file.fileToURL ( folder ); isLocal = true}; user.html.sites.default = websites.["#ftpSite"]}; bundle { // personalize this copy of Frontier, configure network settings, and complete the installation - local (flWebBasedInstall = defined (system.temp.mainResponder)); + local ( flWebBasedInstall = defined ( system.temp.mainResponder ) ); if flWebBasedInstall { «11/29/04; 11:17:45 AM by TAC - the following seems like it should be done as part of mainRepsonder startup, init. IIRC, members.root is a feature of mainResponder bundle { //create the Admin membership group if needed - local (adrRoot = @[system.temp.mainResponder.membersRootFile]); - local (adrGroup = @adrRoot^.admin); + local ( adrRoot = @[system.temp.mainResponder.membersRootFile] ); + local ( adrGroup = @adrRoot^.admin ); - if not defined (adrGroup^) { - new (tableType, adrGroup)}; - if not defined (adrGroup^.callbacks) { - new (tableType, @adrGroup^.callbacks)}; - if not defined (adrGroup^.cookieDomain) { + if not defined ( adrGroup^ ) { + new ( tableType, adrGroup )}; + if not defined ( adrGroup^.callbacks ) { + new ( tableType, @adrGroup^.callbacks )}; + if not defined ( adrGroup^.cookieDomain ) { adrGroup^.cookieDomain = ""}; - if not defined (adrGroup^.cookieExpires) { + if not defined ( adrGroup^.cookieExpires ) { adrGroup^.cookieExpires = "Mon, 01 Apr 2030 07:00:00 GMT"}; - if not defined (adrGroup^.cookieName) { + if not defined ( adrGroup^.cookieName ) { adrGroup^.cookieName = "Admin"}; - if not defined (adrGroup^.mailReturnAddress) { + if not defined ( adrGroup^.mailReturnAddress ) { adrGroup^.mailReturnAddress = user.prefs.mailAddress}; - if not defined (adrGroup^.mailSubject) { + if not defined ( adrGroup^.mailSubject ) { adrGroup^.mailSubject = "Admin"}; - if not defined (adrGroup^.mailTemplate) { - wp.newTextObject ("", @adrGroup^.mailTemplate)}; - if not defined (adrGroup^.openToPublic) { + if not defined ( adrGroup^.mailTemplate ) { + wp.newTextObject ( "", @adrGroup^.mailTemplate )}; + if not defined ( adrGroup^.openToPublic ) { adrGroup^.openToPublic = false}; - if not defined (adrGroup^.users) { - new (tableType, @adrGroup^.users)}}; + if not defined ( adrGroup^.users ) { + new ( tableType, @adrGroup^.users )}}; bundle { // prep for web based install via mainResponder admin website - local (portString = ""); + local ( portString = "" ); if user.inetd.config.http2.port != 80 { portString = ":" + user.inetd.config.http2.port}; - if not defined (system.temp.Frontier.setupFrontier) { - new (tableType, @system.temp.Frontier.setupFrontier)}; + if not defined ( system.temp.Frontier.setupFrontier ) { + new ( tableType, @system.temp.Frontier.setupFrontier )}; system.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = true; - local (setupUrl = "http://127.0.0.1" + portString + "/setupFrontier"); + local ( setupUrl = "http://127.0.0.1" + portString + "/setupFrontier" ); - if not defined (system.temp.installer) { - new (tableType, @system.temp.installer)}; + if not defined ( system.temp.installer ) { + new ( tableType, @system.temp.installer )}; system.temp.installer.urlToOpen = setupUrl}} else { - on infoDialog () { //prompt the user for name, org and initials - on kernelCall (adrName, adrInitials, adrOrg, adrEmail) { - kernel (dialog.getUserInfo)}; + on infoDialog ( ) { //prompt the user for name, org and initials + on kernelCall ( adrName, adrInitials, adrOrg, adrEmail ) { + kernel ( dialog.getUserInfo )}; - local (name, initials, organization, email); + local ( name, initials, organization, email ); - case sys.os () { + case sys.os ( ) { "Win95"; "WinNT" { - if not (kernelCall (@name, @initials, @organization, @email)) { - return (false)}; + if not ( kernelCall ( @name, @initials, @organization, @email ) ) { + return ( false )}; if initials == "" { - dialog.alert ("You must specify your initials."); - infoDialog ()}; + dialog.alert ( "You must specify your initials." ); + infoDialog ( )}; user.prefs.name = name; user.prefs.initials = initials; user.prefs.organization = organization; @@ -447,67 +452,75 @@ "MacOS" { bundle { //initialize user.prefs.name etc using info from Internet Config try { - name = ic.geticpreference (ic.eventinfo.realName)}; + name = ic.geticpreference ( ic.eventinfo.realName )}; try { - organization = ic.geticpreference (ic.eventinfo.organization)}; + organization = ic.geticpreference ( ic.eventinfo.organization )}; try { - email = ic.geticpreferece (ic.eventinfo.emailAddress)}; + email = ic.geticpreferece ( ic.eventinfo.emailAddress )}; user.prefs.name = name; user.prefs.organization = organization; if name != "" { - local (i); + local ( i ); user.prefs.initials = name [1]; - for i = 3 to sizeof (name) { + for i = 3 to sizeof ( name ) { if name [i] == ' ' { user.prefs.initials = user.prefs.initials + name [i+1]}}}}; - card.run (@system.cards.userInfoDialog)}}; - return (true)}; - infoDialog ()}}; //AR 09/27/04 : personalize install + card.run ( @system.cards.userInfoDialog )}}; + return ( true )}; + infoDialog ( )}}; //AR 09/27/04 : personalize install - «rootUpdates.getCurrent ("Frontier") // 11/29/04; 6:57:54 PM by TAC - if we get a root update then we'll need to use rootUpdates.update + «rootUpdates.getCurrent ( "Frontier" ) // 11/29/04; 6:57:54 PM by TAC - if we get a root update then we'll need to use rootUpdates.update bundle { // about window - local (w); + local ( w ); - window.about (); - w = window.frontMost (); - window.zoom (w); - menus.scripts.styleCommand ("medium"); - window.setPosition (w, 25, 75)}; - «window.close (s) + window.about ( ); + w = window.frontMost ( ); + window.zoom ( w ); + menus.scripts.styleCommand ( "medium" ); + window.setPosition ( w, 25, 75 )}; + «window.close ( s ) bundle { // license - local (adrWindow = @system.startup.license); - target.set (adrWindow); - window.setPosition (adrWindow, 50, 100); - window.setSize (adrWindow, infinity, infinity); - window.zoom (adrWindow); - wp.setSelect (0, 0); - edit (adrWindow)}}; // 12/4/04; 9:26:35 PM by TAC - i rather do this near the beginning of phase 1 firstRootRun but had a problem with this window and setting up the quick script window + local ( adrWindow = @system.startup.license, sH, sV ); + + target.set ( adrWindow ); + window.setPosition ( adrWindow, 0, 0 ); + window.setSize ( adrWindow, infinity, infinity ); + window.zoom ( adrWindow ); + window.getSize ( adrWindow, @sH, @sV ); + window.setSize ( adrWindow, sH + 50, sV - 100 ); + window.setPosition ( adrWindow, 50, 100 ); + window.scroll ( down, infinity ); + wp.setSelect ( 0, 0 ); + edit ( adrWindow )}}; // 12/4/04; 9:26:35 PM by TAC - i rather do this near the beginning of phase 1 firstRootRun but had a problem with this window and setting up the quick script window bundle { // build menu bar - system.menus.buildMenuBar (); - system.menus.buildSuitesSubmenu ()}; //5.0 + system.menus.buildMenuBar ( ); + system.menus.buildSuitesSubmenu ( )}; // 5.0 -system.callbacks.startup (); // call user's startup scripts +system.callbacks.startup ( ); // call user's startup scripts -Frontier.enableAgents (flEnableAgents); +Frontier.enableAgents ( flEnableAgents ); -if flEnableHttpServer { //6.0, daemons don't start up until all the startup code has run - new (tableType, @user.inetd.listens); - inetd.start ()}; //start up all daemons with startup set true +if flEnableHttpServer { // 6.0, daemons don't start up until all the startup code has run + new ( tableType, @user.inetd.listens ); + inetd.start ( )}; // start up all daemons with startup set true if flFirstRootRun { - if defined (system.temp.installer.urlToOpen) { - dialog.alert ("Frontier is going to use your web browser to complete its installation."); - webBrowser.openUrl (system.temp.installer.urlToOpen); - webBrowser.bringToFront ()}; + if defined ( system.temp.installer.urlToOpen ) { + dialog.alert ( "Frontier is going to use your web browser to complete its installation." ); + webBrowser.openUrl ( system.temp.installer.urlToOpen ); + webBrowser.bringToFront ( )}; user.prefs.firstRootRun = false}; -system.temp.Frontier.startingUp = false; //signal to all who care, let the hits begin! +system.temp.Frontier.flStartupComplete = true; // startup completed succesfully +system.temp.Frontier.startingUp = false; // signal to all who care, let the hits begin! -msg (""); +msg ( "" ); -fileMenu.save () \ No newline at end of file +fileMenu.save ( ) + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-26 21:51:23
|
Revision: 1464 Author: creecode Date: 2006-07-26 10:18:57 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1464&view=rev Log Message: ----------- add Operations menu, Web menu item from system.menus.webMenu Modified Paths: -------------- ODBs/trunk/frontierRoot/system/menus/buildMenuBar.fvc Added Paths: ----------- ODBs/trunk/frontierRoot/system/menus/webMenu.fvc Modified: ODBs/trunk/frontierRoot/system/menus/buildMenuBar.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/menus/buildMenuBar.fvc 2006-07-15 22:17:37 UTC (rev 1463) +++ ODBs/trunk/frontierRoot/system/menus/buildMenuBar.fvc 2006-07-26 17:18:57 UTC (rev 1464) @@ -1,6 +1,8 @@ -FrontierVcsFile:2:scpt:system.menus.buildMenuBar +FrontierVcsFile:3:scpt:system.menus.buildMenuBar «Changes + «7/16/06; 3:26:50 PM by TAC + «add Web menu from system.menus.webMenu «4/25/06; 1:36:18 PM by SSL & TAC «minor formatting tweaks «add handler can dereference through a mixture of addresses and addresses as strings @@ -36,7 +38,9 @@ if defined (user.menus.menubar) { add (@user.menus.menubar)} else { - add (@system.menus.menubar)}; + add (@system.menus.menubar); + + menu.addSubMenu ( @system.menus.menubar, "Operations", @system.menus.webMenu )}; add (@user.menus.customMenu); @@ -52,4 +56,6 @@ system.menus.buildHelpMenu ()}; -menu.buildMenuBar () // force update \ No newline at end of file +menu.buildMenuBar () // force update + + Added: ODBs/trunk/frontierRoot/system/menus/webMenu.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/menus/webMenu.fvc (rev 0) +++ ODBs/trunk/frontierRoot/system/menus/webMenu.fvc 2006-07-26 17:18:57 UTC (rev 1464) @@ -0,0 +1,5 @@ +FrontierVcsFile:3:mbar:system.menus.webMenu + +AAEFAQAAA+gAAQAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgArAAMCxQILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAFcAAABpAAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAwOAGosDgDUYAAAAXAAAAsQC2AS4ByUxBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAAV2ViDQlXZWIgU2VydmVyDQkJPSBzeXN0ZW0ubWVudXMuc2NyaXB0cy5zZXJ2ZXJNZW51SXRlbSAoKQ0JCVNldCBQb3J0Li4uDQktDQlQcmV2aWV3IFBhZ2UNCS0NCVB1Ymxpc2ggUGFnZQ0JUHVibGlzaCBUYWJsZS4uLg0JLQ0JTmV3IFdlYnNpdGUuLi4NCUltcG9ydCBXZWJzaXRlLi4uDQktDQlOZXcgUGFnZS4uLg0JLQ0JTG9hZCBJbWFnZSBGaWxlLi4uDQlCdWlsZCBHbG9zc2FyeS4uLg0JQnVpbGQgTmV4dFByZXYgTGlzdC4uLg0JQ29weSBVUkwNCVZpZXcgUGFnZSBpbiBGaW5kZXINCS0NCUNoYW5nZWQgUGFnZXMNCQlQdWJsaXNoIEFsbC4uLg0JCUFkZCBTZWxlY3RlZCBDZWxsLi4uDQkJT3BlbiBMaXN0DQkJQ2xlYXIgTGlzdC4uLg0JCS0NCQk9IHN5c3RlbS5tZW51cy5zY3JpcHRzLmFkZFRvQ2hhbmdlZFBhZ2VzTWVudUl0ZW0gKCkNgAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAX8JwAAAAAAACgAAAAAAAAF/CcQAAAAAAAAAAAAAAAoAAAAAAAABfwnIAAAAAAAAAAAAAAAKJwAAAAAAAX8KUAAAAAAACgAAAAAAAAF/CqgAAAAAAAAAAAAAAAoAAAAAAAABfwq0AAAAAAAKAAAAAAAAAX8KwAAAAAAAAAAAAAAACgAAAAAAAAF/CtAAAAAAAAAAAAAAAAoAAAAAAAABfwrcAAAAAAAKAAAAAAAAAX8K6AAAAAAACgAAAAAAAAF/CvQAAAAAAAoAAAAAAAABfwsAAAAAAAAKAAAAAAAAAX8LDAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAF/C1wAAAAAAAoAAAAAAAABfwuAAAAAAAAKAAAAAAAAAX8L+AAAAAAACgAAAAAAAAF3BaAAAAAAAAAAAAAAAAoAAAAAAAABdwWwAAIAAABOAAABcgAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAsXgRLb28/dwAAABBAAABJgE/Ae4CwExBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAAbG9jYWwgKGFkclRhYmxlID0gQHVzZXIuaW5ldGQuY29uZmlnLmh0dHApDWlmIGluZXRkLmlzRGFlbW9uUnVubmluZyAoYWRyVGFibGUpDQlpbmV0ZC5zdG9wT25lIChhZHJUYWJsZSkNCWFkclRhYmxlXi5zdGFydHVwID0gZmFsc2UNCXRyeQ0JCWluZXRkLnN0b3BPbmUgKEB1c2VyLmluZXRkLmNvbmZpZy5odHRwMikNCQl1c2VyLmluZXRkLmNvbmZpZy5odHRwMi5zdGFydHVwID0gZmFsc2UNZWxzZQ0JYWRyVGFibGVeLnN0YXJ0dXAgPSB0cnVlDQlpbmV0ZC5zdGFydE9uZSAoYWRyVGFibGUpDQl0cnkNCQl1c2VyLmluZXRkLmNvbmZpZy5odHRwMi5zdGFydHVwID0gdHJ1ZQ0JCWluZXRkLnN0YXJ0T25lIChAdXNlci5pbmV0ZC5jb25maWcuaHR0cDIpDYAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAAACAAAAPAAAAWkAAAIAAA8GR2VuZXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAMAAAAAAAAAALF4EMu+3O7BAAAAQAAAASYBPwHuAsBMQU5E////////AAAAAAAAbWFjIAAAAAAAAAAAAAAAAGxvY2FsIChvbGRwb3J0ID0gdXNlci5pbmV0ZC5jb25maWcuaHR0cC5wb3J0KQ1sb2NhbCAocG9ydCA9IG9sZHBvcnQpDWxvY2FsIChpc1J1bm5pbmcgPSBpbmV0ZC5pc0RhZW1vblJ1bm5pbmcgKEB1c2VyLmluZXRkLmNvbmZpZy5odHRwKSkNaWYgZGlhbG9nLmdldEludCAoIlBvcnQgZm9yIGh0dHAgc2VydmVyOiIsIEBwb3J0KQ0JaWYgcG9ydCAhPSBvbGRwb3J0DQkJaWYgaXNSdW5uaW5nDQkJCWluZXRkLnN0b3BPbmUgKEB1c2VyLmluZXRkLmNvbmZpZy5odHRwKQ0JCXVzZXIuaW5ldGQuY29uZmlnLmh0dHAucG9ydCA9IHBvcnQNCQlpZiBpc1J1bm5pbmcNCQkJaW5ldGQuc3RhcnRPbmUgKEB1c2VyLmluZXRkLmNvbmZpZy5odHRwKQ2AAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAgAAAAYAAAAdAAAAAAAPBkdlbmV2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAACwpXswvdkPVAAAAGkBAADxARsBuQKcTEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABodG1sLmNvbW1hbmRzLnByZXZpZXdQYWdlICgpDYAAAAAAAAACAAAABgAAACUAAAIAAA8GR2VuZXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAK1+0u2/ZzC3AAAAqgEAASYBPwHuAsBMQU5E////////AAAAAAAAbWFjIAAAAAAAAAAAAAAAAGh0bWwuY29tbWFuZHMucmVsZWFzZVJlbmRlcmVkUGFnZSAoKQ2AAAAAAAAAAgAAAAYAAAAeAAACAAAPBkdlbmV2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAACudXR2wFQuogAAAIYBAADeAN8BpgJgTEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABodG1sLmNvbW1hbmRzLnJlbGVhc2VUYWJsZSAoKQ2AAAAAAAAAAgAAAAYAAAAZAAACAAAPBkdlbmV2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAACuwubLvddgBAAAAIMAAAEmAT8B7gLATEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABodG1sLmNvbW1hbmRzLm5ld1NpdGUgKCkNgAAAAAAAAAIAAAAGAAAAHwAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAArurtxr3ZQFoAAAB/AAABJgE/Ae4CwExBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAAaHRtbC5jb21tYW5kcy5pbXBvcnRXZWJzaXRlICgpDYAAAAAAAAACAAAABgAAABkAAAIAAA8GR2VuZXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAABlQAALF/kIOxgfYKAAAAPAAAASYBPwHuAsBMQU5E////////AAAAAAAAbWFjIAAAAAAAAAAAAAAAAGh0bWwuY29tbWFuZHMubmV3UGFnZSAoKQ2AAAAAAAAAAgAAAAYAAAAfAAACAAAPBkdlbmV2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAACu0fvyvcpKmAAAAIIAAAEmAT8B7gLATEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABodG1sLmNvbW1hbmRzLmxvYWRJbWFnZUZpbGUgKCkNgAAAAAAAAAIAAAAGAAAAJQAAAAAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAsJdTYL3ZRicAAAB1AQAA8QEbAbkCnExBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAAaHRtbC5idWlsZEdsb3NzYXJ5IChmbGludGVyYWN0OnRydWUpDYAAAAAAAAACAAAANgAAAc8AAAIAAA8GR2VuZXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAK7apEq92UavAAAAfgAAASYBPwHuAsBMQU5E////////AAAAAAAAbWFjIAAAAAAAAAAAAAAAAGlmIGRpYWxvZy5hc2sgKCJCdWlsZCBpbml0aWFsIG91dGxpbmUgZm9yIHdoaWNoIHNpdGU/IiwgQHVzZXIuaHRtbC5wcmVmcy5sYXN0d2Vic2l0ZSkNCWxvY2FsIChhZHJzaXRlID0gdXNlci5odG1sLnByZWZzLmxhc3R3ZWJzaXRlKQ0JaWYgbm90IGRlZmluZWQgKGFkcnNpdGVeKQ0JCWlmIG5vdCBkZWZpbmVkICgoIndlYnNpdGVzLiIgKyBhZHJzaXRlKV4pDQkJCXJldHVybiAoZGlhbG9nLmFsZXJ0ICgiQ2FuJ3QgYnVpbGQgdGhlIE5leHRQcmV2IGxpc3QgYmVjYXVzZSBcIiIgKyBhZHJzaXRlICsgIlwiIGlzbid0IGRlZmluZWQuIikpDQkJYWRyc2l0ZSA9ICJ3ZWJzaXRlcy4iICsgYWRyc2l0ZQ0JbG9jYWwgKGFkcm91dGxpbmUgPSBAYWRyc2l0ZV4uWyIjbmV4dFByZXZzIl0pDQlodG1sLm5leHRQcmV2LmJ1aWxkT3V0bGluZSAoYWRyc2l0ZSwgYWRyb3V0bGluZSkNCXdpbmRvdy56b29tIChhZHJvdXRsaW5lKQ2AAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAgAAABgAAAB5AAICAAAPBUFyaWFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAbAAACu0vIasNHpzQAAAH0AAAEmAT8B7gLATEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABsb2NhbCAoaW5mbykNbmV3ICh0YWJsZXR5cGUsIEBpbmZvKQ1odG1sLmJ1aWxkUGFnZVRhYmxlICh0YWJsZS5nZXRDdXJzb3JBZGRyZXNzICgpLCBAaW5mbykNY2xpcGJvYXJkLnB1dHZhbHVlIChpbmZvLnVybCkNgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAIAAABOAAAB/wAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAArrMoCb3ZR6wAAABLAAABJgE/Ae4CwExBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAAbG9jYWwgKGFkcm9iamVjdCA9IHRhYmxlLmdldGN1cnNvcmFkZHJlc3MgKCkpDWxvY2FsIChub21hZCA9IHBhcmVudE9mIChhZHJvYmplY3ReKSwgc3ViZGlycGF0aCA9ICIiLCBwYXRoKQ1sb29wDQlsb2NhbCAoYWRyZnRwc2l0ZSA9IEBub21hZF4uWyIjZnRwc2l0ZSJdKQ0JaWYgZGVmaW5lZCAoYWRyZnRwc2l0ZV4pDQkJaWYgbm90IGFkcmZ0cHNpdGVeLmlzbG9jYWwNCQkJc2NyaXB0ZXJyb3IgKCJUaGlzIGNvbW1hbmQgd29ya3Mgb25seSBvbiBsb2NhbCB3ZWJzaXRlcy4iKQ0JCXBhdGggPSBhZHJmdHBzaXRlXi5mb2xkZXIgKyBzdWJkaXJwYXRoICsgbmFtZW9mIChhZHJvYmplY3ReKSArIGh0bWwuZ2V0UGFnZVByZWYgKCJmaWxlRXh0ZW5zaW9uIiwgYWRyb2JqZWN0KQ0JCWJyZWFrDQlzdWJkaXJwYXRoID0gbmFtZW9mIChub21hZF4pICsgIjoiICsgc3ViZGlycGF0aA0Jbm9tYWQgPSBwYXJlbnRPZiAobm9tYWReKQ1maW5kZXIucmV2ZWFsIChwYXRoKQ1maW5kZXIuYnJpbmd0b2Zyb250ICgpDYAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAAACAAAAKgAAAPkABgIAAA8GR2VuZXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAABsAAAK7f64Sw0e+dAAAAggAAASYBPwHuAsBMQU5E////////AAAAAAAAbWFjIAAAAAAAAAAAAAAAAGVkaXQgKEB1c2VyLmh0bWwuY2hhbmdlZFBhZ2VzKQ1pZiBkaWFsb2cuY29uZmlybSAoIlB1Ymxpc2ggYWxsIGl0ZW1zIGluIENoYW5nZWQgUGFnZXMgbGlzdD8iKQ0JY3QgPSBodG1sLmJ1aWxkRnJvbU91dGxpbmUgKEB1c2VyLmh0bWwuY2hhbmdlZFBhZ2VzKQ0JaWYgY3QgPT0gMA0JCWRpYWxvZy5ub3RpZnkgKCJObyBwYWdlcyB3ZXJlIHB1Ymxpc2hlZC4iKQ0JZWxzZQ0JCW1zZyAoY3QgKyAiIHBhZ2VzIHdlcmUgcHVibGlzaGVkLiIpDYAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAAACAAAAcgA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 + + Property changes on: ODBs/trunk/frontierRoot/system/menus/webMenu.fvc ___________________________________________________________________ Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-26 19:44:20
|
Revision: 1467 Author: creecode Date: 2006-07-26 10:28:04 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1467&view=rev Log Message: ----------- moved Web menu to system.menus.webMenu Modified Paths: -------------- ODBs/trunk/frontierRoot/system/menus/menubar.fvc Modified: ODBs/trunk/frontierRoot/system/menus/menubar.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/menus/menubar.fvc 2006-07-26 17:27:05 UTC (rev 1466) +++ ODBs/trunk/frontierRoot/system/menus/menubar.fvc 2006-07-26 17:28:04 UTC (rev 1467) @@ -1,3 +1,5 @@ -FrontierVcsFile:1:mbar:system.menus.menubar +FrontierVcsFile:3:mbar:system.menus.menubar -AAEFAQAACeAAAQAAAAAAAAAAAAAAKwADA/0E/QAAAAAAAAZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgArAAMD/QT9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAN0AAAFhAAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAApJOSS7+jYkQAASaoAAAAsQC2AS4ByUxBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAARGF0YWJhc2UNCUp1bXAuLi4NCVNlYXJjaC4uLg0JLQ0JPSBzeXN0ZW0ubWVudXMuc2NyaXB0cy51cGRhdGVNZW51SXRlbSAoKQ0JLQ0JQWRkIHRvIHVzZXIuZGF0YWJhc2VzLi4uDQktDQk9ICJCYWNrdXAgIiArIGZpbGUuZmlsZUZyb21QYXRoIChGcm9udGllci5nZXRGaWxlcGF0aCAoKSkgKyAiLi4uIg0JRXhwb3J0Li4uDQlCYXRjaCBFeHBvcnQNCQlPcGVuIExpc3QNCQlPcGVuIFRhYmxlDQkJLQ0JCUV4cG9ydCBmcm9tIExpc3QuLi4NCQlJbXBvcnQgZnJvbSBGb2xkZXIuLi4NCQktDQkJTmlnaHRseSBFeHBvcnQuLi4NCS0NCUFwcGxlU2NyaXB0cw0JCUxvYWQgQXBwbGVTY3JpcHQuLi4NCQlMb2FkIGEgRm9sZGVyLi4uDQkJTG9hZCBhbiBvc2F4Li4uDQktDQlFZGl0IHdpdGggQXBwDU9wZXJhdGlvbnMNCVF1aWNrIFNjcmlwdA0JLQ0JV2ViDQkJV2ViIFNlcnZlcg0JCQk9IHN5c3RlbS5tZW51cy5zY3JpcHRzLnNlcnZlck1lbnVJdGVtICgpDQkJCVNldCBQb3J0Li4uDQkJLQ0JCVByZXZpZXcgUGFnZQ0JCS0NCQlQdWJsaXNoIFBhZ2UNCQlQdWJsaXNoIFRhYmxlLi4uDQkJLQ0JCU5ldyBXZWJzaXRlLi4uDQkJSW1wb3J0IFdlYnNpdGUuLi4NCQktDQkJTmV3IFBhZ2UuLi4NCQktDQkJTG9hZCBJbWFnZSBGaWxlLi4uDQkJQnVpbGQgR2xvc3NhcnkuLi4NCQlCdWlsZCBOZXh0UHJldiBMaXN0Li4uDQkJQ29weSBVUkwNCQlWaWV3IFBhZ2UgaW4gRmluZGVyDQkJLQ0JCUNoYW5nZWQgUGFnZXMNCQkJUHVibGlzaCBBbGwuLi4NCQkJQWRkIFNlbGVjdGVkIENlbGwuLi4NCQkJT3BlbiBMaXN0DQkJCUNsZWFyIExpc3QuLi4NCQkJLQ0JCQk9IHN5c3RlbS5tZW51cy5zY3JpcHRzLmFkZFRvQ2hhbmdlZFBhZ2VzTWVudUl0ZW0gKCkNCS0NCVRvb2xzDQlTdWl0ZXMNCVNjaGVkdWxlcg0JCUFkZCBhbiBFdmVyeSBNaW51dGUgVGFzay4uLg0JCUFkZCBhbiBIb3VybHkgVGFzay4uLg0JCUFkZCBhbiBPdmVybmlnaHQgVGFzay4uLg0JCS0NCQk9IGlmIHVzZXIuc2NoZWR1bGVyLnByZWZzLnJ1blRocmVhZHMgeyJEaXNhYmxlIFRocmVhZHMifSBlbHNlIHsiRW5hYmxlIFRocmVhZHMifQ0JCS0NCQlPcGVuIHVzZXIuc2NoZWR1bGVyIFRhYmxlDQk9IHN5c3RlbS5tZW51cy5zY3JpcHRzLmFnZW50c01lbnVJdGVtICgpDQlVbmxvY2sgU2VtYXBob3Jlcy4uLg0JLQ0JUnVuIFNlbGVjdGlvbg0JLQ0JPSBsb2NhbCAocyA9ICIgQ29tcGFjdCBNb2RhbCBNZW51cyIpOyBpZiB1c2VyLnByZWZzLmZsQ29tcGFjdE1vZGFsTWVudXMgeyJEaXNhYmxlIiArIHN9IGVsc2UgeyJFbmFibGUiICsgc30NCT0gbG9jYWwgKHMgPSAiIFJlcGxhY2UgRGlhbG9nIEV4cGVydCBNb2RlIik7IGlmIHVzZXIucHJlZnMuZmxSZXBsYWNlRGlhbG9nRXhwZXJ0TW9kZSB7IkRpc2FibGUiICsgc30gZWxzZSB7IkVuYWJsZSIgKyBzfQ2AAAAAAAAAAAAAAApKAAAAAAABRlkYAAAAAAAKAAAAAAAAAUZZHAAAAAAAAAAAAAAACgAAAAAAAAFGWSAAAAAAAAAAAAAAAAoAAAAAAAABRlksAAAAAAAAAAAAAAAKAAAAAAAAAUZZOAAAAAAACjMAAAAAAAFGWUQAAAAAAAAAAAAAAAoAAAAAAAABRllQAAAAAAAK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YWwgKGZvbGRlciA9IHVzZXIuYmF0Y2hFeHBvcnRlci5mb2xkZXIpDWlmIGZpbGUuZ2V0Rm9sZGVyRGlhbG9nICgiSW1wb3J0IG9iamVjdHMgZnJvbToiLCBAZm9sZGVyKQ0JYmF0Y2hFeHBvcnRlci5iYXRjaEltcG9ydCAoZm9sZGVyKQ2AAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAgAAACQAAADnAAQCAAAPBkdlbmV2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAACvGiJwvdphxQAAAF4BAAEmAT8B7gLATEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABpZiBkaWFsb2cuY29uZmlybSAoIkRvIGEgQmF0Y2ggRXhwb3J0IGV2ZXJ5IG5pZ2h0PyIpDQlsb2NhbCAoYWRyc2NyaXB0ID0gQHVzZXIuc2NoZWR1bGVyLm92ZXJuaWdodC5iYXRjaEV4cG9ydCkNCW5ldyAoc2NyaXB0dHlwZSwgYWRyc2NyaXB0KQ0JdGFyZ2V0LnNldCAoYWRyc2NyaXB0KQ0Jb3Auc2V0TGluZVRleHQgKCJiYXRjaEV4cG9ydGVyLmJhdGNoRXhwb3J0ICgpIikNCXRhcmdldC5jbGVhciAoKQ2AAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAgAAACQAAAEEAAACAAAPBkdlbmV2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAACt2Zs1vc4NpgAAAFsAAAEmAT8B7gLATEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABhcHBsZXNjcmlwdHMuaW5pdCAoKQ1pZiBmaWxlLmdldEZpbGVEaWFsb2cgKCJDaG9vc2UgYSBTY3JpcHQgRWRpdG9yLWNvbXBhdGlibGUgZmlsZS4iLCBAdXNlci5hcHBsZXNjcmlwdHMucHJlZnMubGFzdEZpbGVMb2FkZWQsIDApDQlsb2NhbCAoYWRyKQ0JYWRyID0gYXBwbGVzY3JpcHRzLmxvYWRGaWxlICh1c2VyLmFwcGxlc2NyaXB0cy5wcmVmcy5sYXN0RmlsZUxvYWRlZCwgQHdvcmtzcGFjZSwgZmFsc2UpDQlp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b250aWVyJ3MgbWFpbiB3aW5kb3cuIikNCWFkcm9iamVjdCA9IGFkZHJlc3MgKHdmcm9udCkNCWlmIHR5cGVPZiAoYWRyb2JqZWN0XikgPT0gdGFibGV0eXBlDQkJYWRyb2JqZWN0ID0gdGFibGUuZ2V0Y3Vyc29yICgpDWVsc2UNCXNjcmlwdEVycm9yICgiQ2FuJ3QgZWRpdCB0aGUgY3VycmVudCBvYmplY3QgZXh0ZXJuYWxseS4iKQ0Nb2RiRWRpdG9yLmVkaXQgKGFkcm9iamVjdCkNgAAAAAAAgAAAAAAAhAAAAAAAAAAAAAAAgAAAAAAAhAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAIAAAAGAAAAFgAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAo8nKk73OEFEAAACAAQAAsQC2AS4ByUxBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAAd2luZG93LnF1aWNrU2NyaXB0ICgpDYAAAAAAAAACAAAATgAAAXIAAAIAAA8GR2VuZXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAALF4ES29vP3cAAAAPQAAASYBPwHuAsBMQU5E////////AAAAAAAAbWFjIAAAAAAAAAAAAAAAAGxvY2FsIChhZHJUYWJsZSA9IEB1c2VyLmluZXRkLmNvbmZpZy5odHRwKQ1pZiBpbmV0ZC5pc0RhZW1vblJ1bm5pbmcgKGFkclRhYmxlKQ0JaW5ldGQuc3RvcE9uZSAoYWRyVGFibGUpDQlhZHJUYWJsZV4uc3RhcnR1cCA9IGZhbHNlDQl0cnkNCQlpbmV0ZC5zdG9wT25lIChAdXNlci5pbmV0ZC5jb25maWcuaHR0cDIpDQkJdXNlci5pbmV0ZC5jb25maWcuaHR0cDIuc3RhcnR1cCA9IGZhbHNlDWVsc2UNCWFkclRhYmxlXi5zdGFydHVwID0gdHJ1ZQ0JaW5ldGQuc3RhcnRPbmUgKGFkclRhYmxlKQ0JdHJ5DQkJdXNlci5pbmV0ZC5jb25maWcuaHR0cDIuc3RhcnR1cCA9IHRydWUNCQlpbmV0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Y3JpcHRTdHJpbmcgPSAic3BlYWtlci5iZWVwICgpIiwgYWRyc2NyaXB0KQ1pZiBkaWFsb2cuYXNrICgiRW50ZXIgc2NyaXB0IHRvIGJlIHJ1biBldmVyeSBob3VyIG9uIHRoZSBob3VyOiIsIEBzY3JpcHRTdHJpbmcpDQlhZHJzY3JpcHQgPSB0YWJsZS51bmlxdWVOYW1lICgic2NyaXB0IiwgQHVzZXIuc2NoZWR1bGVyLmhvdXJseSwgMykNCW5ldyAoc2NyaXB0VHlwZSwgYWRyc2NyaXB0KQ0JdGFyZ2V0LnNldCAoYWRyc2NyaXB0KQ0Jb3Auc2V0TGluZVRleHQgKHNjcmlwdFN0cmluZykNCXRhcmdldC5jbGVhciAoKQ0JZWRpdCAoYWRyc2NyaXB0KQ2AAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAgAAADYAAAFVAAACAAAPBUFyaWFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAABAAAAAAZUAACl6hz3sv+knwAAANsAAAFZAX8CIQMATEFORP///////wAAAAAAAG1hYyAAAAAAAAAAAAAAAABzY2hlZHVsZXIuaW5pdCAoKQ1sb2NhbCAoc2NyaXB0U3RyaW5nID0gInNwZWFrZXIuYmVlcCAoKSIsIGFkcnNjcmlwdCkNaWYgZGlhbG9nLmFzayAoIkVudGVyIHNjcmlwdCB0byBiZSBydW4gYXQgbWlkbmlnaHQgZXZlcnkgbmlnaHQ6IiwgQHNjcmlwdFN0cmluZykNCWFkcnNjcmlwdCA9IHRhYmxlLnVuaXF1ZU5hbWUgKCJzY3JpcHQiLCBAdXNlci5zY2hlZHVsZXIub3Zlcm5pZ2h0LCAzKQ0JbmV3IChzY3JpcHRUeXBlLCBhZHJzY3JpcHQpDQl0YXJnZXQuc2V0IChhZHJzY3JpcHQpDQlvcC5zZXRMaW5lVGV4dCAoc2NyaXB0U3RyaW5nKQ0JdGFyZ2V0LmNsZWFyICgpDQllZGl0IChhZHJzY3JpcHQpDYAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAAACAAAADAAAAGIAAAAAAA8GR2Vu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 \ No newline at end of file +AAEFAQAABs8AAQAAAAAAAAAAAAAAKwADA/0E/QAAAAAAAAZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgArAAMD/QOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIeAAADyQAAAgAADwZHZW5ldmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAApJOSS8DgDgoAASarAAAAsQC2AS4ByUxBTkT///////8AAAAAAABtYWMgAAAAAAAAAAAAAAAARGF0YWJhc2UNCUp1bXAuLi4NCVNlYXJjaC4uLg0JLQ0JPSBzeXN0ZW0ubWVudXMuc2NyaXB0cy51cGRhdGVNZW51SXRlbSAoKQ0JLQ0JQWRkIHRvIHVzZXIuZGF0YWJhc2VzLi4uDQktDQk9ICJCYWNrdXAgIiArIGZpbGUuZmlsZUZyb21QYXRoIChGcm9udGllci5nZXRGaWxlcGF0aCAoKSkgKyAiLi4uIg0JRXhwb3J0Li4uDQlCYXRjaCBFeHBvcnQNCQlPcGVuIExpc3QNCQlPcGVuIFRhYmxlDQkJLQ0JCUV4cG9ydCBmcm9tIExpc3QuLi4NCQlJbXBvcnQgZnJvbSBGb2xkZXIuLi4NCQktDQkJTmlnaHRseSBFeHBvcnQuLi4NCS0NCUFwcGxlU2NyaXB0cw0JCUxvYWQgQXBwbGVTY3JpcHQuLi4NCQlMb2FkIGEgRm9sZGVyLi4uDQkJTG9hZCBhbiBvc2F4Li4uDQktDQlFZGl0IHdpdGggQXBwDU9wZXJhdGlvbnMNCVF1aWNrIFNjcmlwdA0JLQ0JV2ViDQktDQlUb29scw0JU3VpdGVzDQlTY2hlZHVsZXINCQlBZGQgYW4gRXZlcnkgTWludXRlIFRhc2suLi4NCQlBZGQgYW4gSG91cmx5IFRhc2suLi4NCQlBZGQgYW4gT3Zlcm5pZ2h0IFRhc2suLi4NCQktDQkJPSBpZiB1c2VyLnNjaGVkdWxlci5wcmVmcy5ydW5UaHJlYWRzIHsiRGlzYWJsZSBUaHJlYWRzIn0gZWxzZSB7IkVuYWJsZSBUaHJlYWRzIn0NCQktDQkJT3BlbiB1c2VyLnNjaGVkdWxlciBUYWJsZQ0JPSBzeXN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 + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-26 19:44:19
|
Revision: 1468 Author: creecode Date: 2006-07-26 10:29:14 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1468&view=rev Log Message: ----------- minor formatting tweaks Modified Paths: -------------- ODBs/trunk/frontierRoot/system/verbs/builtins/export/init.fvc Modified: ODBs/trunk/frontierRoot/system/verbs/builtins/export/init.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/verbs/builtins/export/init.fvc 2006-07-26 17:28:04 UTC (rev 1467) +++ ODBs/trunk/frontierRoot/system/verbs/builtins/export/init.fvc 2006-07-26 17:29:14 UTC (rev 1468) @@ -1,24 +1,40 @@ -FrontierVcsFile:1:scpt:system.verbs.builtins.export.init +FrontierVcsFile:3:scpt:system.verbs.builtins.export.init -\xC7Changes - \xC711/27/04; 3:32:01 PM by TAC - \xC7moved some initializations from firstRootRun +«Changes + «5/14/06; 6:41:15 PM by TAC + «minor formatting tweaks + «11/27/04; 3:35:19 PM by TAC + «set lastLocation to "File" + «set lastKind to "Packed object" + «set lastAddress to @workspace.notepad + «moved some initializations from firstRootRun + if not defined (user.export) { new (tabletype, @user.export)}; -if not defined (user.export.lastaddress) { - user.export.lastaddress = @workspace.notepad}; // 11/27/04; 3:32:38 PM by TAC - replaced "" with @workspace.notepad -if not defined (user.export.lastkind) { - user.export.lastkind = "Packed object"}; // 11/27/04; 3:34:33 PM by TAC - replaced "" with "Packed object" -if not defined (user.export.lastlocation) { - user.export.lastlocation = "File"}; // 11/27/04; 3:35:19 PM by TAC - replaced "" with "File" -if not defined (user.export.lastfolder) { - user.export.lastfolder = ""}; -if not defined (user.export.lastcompression) { - user.export.lastcompression = "None"}; + +if not defined (user.export.lastAddress) { + user.export.lastAddress = @workspace.notepad}; + +if not defined (user.export.lastKind) { + user.export.lastKind = "Packed object"}; + +if not defined (user.export.lastLocation) { + user.export.lastLocation = "File"}; + +if not defined (user.export.lastFolder) { + user.export.lastFolder = ""}; + +if not defined (user.export.lastCompression) { + user.export.lastCompression = "None"}; + if not defined (user.export.importLogEnabled) { user.export.importLogEnabled = true}; + if not defined (user.export.importLog) { if user.export.importLogEnabled { new (outlineType, @user.export.importLog)}}; + if not defined (user.export.importLogOpen) { - user.export.importLogOpen = false} \ No newline at end of file + user.export.importLogOpen = false} + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-26 19:44:10
|
Revision: 1471 Author: creecode Date: 2006-07-26 10:39:52 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1471&view=rev Log Message: ----------- minor formatting tweaks Modified Paths: -------------- ODBs/trunk/frontierRoot/system/verbs/builtins/export/card/doExport.fvc Modified: ODBs/trunk/frontierRoot/system/verbs/builtins/export/card/doExport.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/verbs/builtins/export/card/doExport.fvc 2006-07-26 17:37:58 UTC (rev 1470) +++ ODBs/trunk/frontierRoot/system/verbs/builtins/export/card/doExport.fvc 2006-07-26 17:39:52 UTC (rev 1471) @@ -1,111 +1,151 @@ -FrontierVcsFile:1:scpt:system.verbs.builtins.export.card.doExport +FrontierVcsFile:3:scpt:system.verbs.builtins.export.card.doExport on doExport (adr, kind, location, compression) { - \xC7Changes - \xC73/18/04; 7:42:04 PM by JES - \xC7Add file extenion on Mac as well as Windows -- needed for proper OS X typing, and mime-type sending in static web servers. Also, smart-limit file name to 31 characters (limit imposed by OS 9 and Carbon API). - bundle { \xC7be sure kind and type are compatible + «Changes + «5/14/06; 6:52:35 PM by TAC + «minor formatting tweaks + «3/18/04; 7:42:04 PM by JES + «Add file extenion on Mac as well as Windows -- needed for proper OS X typing, and mime-type sending in static web servers. Also, smart-limit file name to 31 characters (limit imposed by OS 9 and Carbon API). + «Mon, Jan 26, 1998 at 5:10:25 PM by PBS + «Append file suffixes if pref is set to true + + bundle { // be sure kind and type are compatible on check () { if kind == "Folder" { if typeOf (adr^) != tableType { scriptError ("Only tables can be exported in this format.")} else { - return}}; \xC7it's ok + return}}; // it's ok + if typeOf (adr^) != scriptType { if kind != "Packed object" { scriptError ("Only scripts can be exported in this format.")} else { return}}}; check ()}; - local (f, fname, objectname); - bundle { \xC7set fname - local (tablename, quotedname); - objectname = nameOf (adr^); - if string.hasSuffix (\xD2"]\xD3, adr) { - quotedname = \xD2["\xD3 + objectname + \xD2"]\xD3} + + local (f, fName, objectName); + + bundle { // set fName + local (tableName, quotedName); + + objectName = nameOf (adr^); + + if string.hasSuffix ("\"]", adr) { + quotedName = "[\"" + objectName + "\"]"} else { - quotedname = objectname}; - tablename = nameOf (address (string (adr) - ('.' + quotedname))^); + quotedName = objectName}; + + tableName = nameOf (address (string (adr) - ('.' + quotedName))^); + if kind == "Desktop script" { - fname = objectname} - else { //calculate name based on object name and parent table name - local (longname = tablename + '.' + objectname); - if system.environment.isMac { //limit to 31 chars (with extension) - if sizeOf (longname) > 26 { //don't add table name - longname = objectname}; - if sizeOf (longname) > 26 { //truncate object name - longname = string.mid (longname, 1, 26)}}; - fname = longname}; - objectname = fname; + fName = objectName} + else { // calculate name based on object name and parent table name + local (longName = tableName + '.' + objectName); + + if system.environment.isMac { // limit to 31 chars (with extension) + if sizeOf (longName) > 26 { // don't add table name + longName = objectName}; + + if sizeOf (longName) > 26 { // truncate object name + longName = string.mid (longName, 1, 26)}}; + + fName = longName}; + + objectName = fName; + case typeOf (adr^) { scriptType { if kind == "Desktop script" { - fname = fname + ".ftds"} + fName = fName + ".ftds"} else { - fname = fname + ".ftsc"}}; + fName = fName + ".ftsc"}}; wptextType { - fname = fname + ".ftwp"}; + fName = fName + ".ftwp"}; outlineType { - fname = fname + ".ftop"}; + fName = fName + ".ftop"}; tableType { - fname = fname + ".fttb"}} + fName = fName + ".fttb"}} else { - fname = fname + ".fatp"}; + fName = fName + ".fatp"}; + if compression != "None" { - fname = fname + compression}}; + fName = fName + compression}}; + case location { "File" { - local (lastfolder = user.export.lastfolder); - if not (lastfolder endswith file.getPathChar ()) { - lastfolder = lastfolder + file.getPathChar ()}; - if not file.exists (lastfolder) { - lastfolder = file.folderFromPath (Frontier.getProgramPath ())}; - f = lastfolder + fname; - \xC7Append file suffixes if pref is set to true - \xC7Mon, Jan 26, 1998 at 5:10:25 PM by PBS + local (lastFolder = user.export.lastFolder, pc = file.getPathChar ()); + + if not (lastFolder endsWith pc) { + lastFolder = lastFolder + pc}; + + if not file.exists (lastFolder) { + lastFolder = file.folderFromPath (Frontier.getProgramPath ())}; + + f = lastFolder + fName; + if not defined (user.prefs.appendFileSuffixes) { user.prefs.appendFileSuffixes = false}; + if user.prefs.appendFileSuffixes { local (suffix = "." + string.lower (Frontier.getFileType (typeOf (adr^)))); + if kind == "Desktop script" { suffix = ".ftds"}; + f = f + suffix}; + if not file.putFileDialog ("Export to what file?", @f) { return (false)}; - user.export.lastfolder = file.folderFromPath (f)}; + + user.export.lastFolder = file.folderFromPath (f)}; "Eudora attachment" { local (folder = Eudora.getScriptPrefsFolder () + "Outgoing Frontier Objects:"); file.sureFolder (folder); - f = folder + fname}}; - local (packedfile); + f = folder + fName}}; + + local (packedFile); + if compression == "None" { - packedfile = f} - else { \xC7must create it in a temporary location + packedFile = f} + else { // must create it in a temporary location local (tempfolder = file.getSpecialFolderPath ("", "Temporary Items", true)); - packedfile = tempfolder + objectname}; + + packedFile = tempfolder + objectName}; + case kind { "Packed object" { - export.sendObject (adr, packedfile)}; + export.sendObject (adr, packedFile)}; "Desktop script" { - export.sendToDesktop (adr, packedfile)}; + export.sendToDesktop (adr, packedFile)}; "Script Editor format" { - export.sendOSAScript (adr, packedfile)}; + export.sendOSAScript (adr, packedFile)}; "Folder" { - export.sendFolder (adr, packedfile + file.getPathChar ())}}; + export.sendFolder (adr, packedFile + file.getPathChar ())}}; + if compression != "None" { - local (sitfile = f); - if sitfile endsWith ".hqx" { - sitfile = sitfile - ".hqx"}; - local (flbinhex = compression == ".sit.hqx"); - stuff.createArchive (sitfile, {packedfile}, flbinhex); - file.delete (packedfile); + local (sitFile = f); + + if sitFile endsWith ".hqx" { + sitFile = sitFile - ".hqx"}; + + local (flBinHex = compression == ".sit.hqx"); + + stuff.createArchive (sitFile, {packedFile}, flBinHex); + + file.delete (packedFile); + Frontier.bringToFront ()}; + if location == "Eudora attachment" { Eudora.launch (); + try { Eudora.attachFiles (Eudora.getCurrentMessageObject (), f)} else { try { Eudora.attachFiles (Eudora.createMessage (), f)} else { - scriptError ("Couldn't attach the exported object to a Eudora message.")}}}} \ No newline at end of file + scriptError ("Couldn't attach the exported object to a Eudora message.")}}}} + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <cre...@us...> - 2006-07-26 18:49:45
|
Revision: 1470 Author: creecode Date: 2006-07-26 10:37:58 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1470&view=rev Log Message: ----------- initialize domains table initialize flServerDomains, handle multiple domains Modified Paths: -------------- ODBs/trunk/frontierRoot/system/verbs/builtins/betty/init.fvc Modified: ODBs/trunk/frontierRoot/system/verbs/builtins/betty/init.fvc =================================================================== --- ODBs/trunk/frontierRoot/system/verbs/builtins/betty/init.fvc 2006-07-26 17:33:51 UTC (rev 1469) +++ ODBs/trunk/frontierRoot/system/verbs/builtins/betty/init.fvc 2006-07-26 17:37:58 UTC (rev 1470) @@ -1,26 +1,31 @@ -FrontierVcsFile:1:scpt:system.verbs.builtins.betty.init +FrontierVcsFile:3:scpt:system.verbs.builtins.betty.init -\xC7Changes - \xC711/28/04; 10:52:16 AM by TAC - \xC7initialize user.betty.rpcHandlers.examples - \xC7changed timeout from 60 * 30 to 7200 - \xC79/6/02; 12:22:47 AM by JES - \xC7Initialize the user.betty.queueOutgoing table and sub-elements. - \xC79/5/02; 11:54:01 PM by JES - \xC7If running in Frontier, user.betty.prefs.flKeepServerLog defaults to false. - \xC78/20/02; 4:42:33 AM by JES - \xC7Init user.betty.prefs.flSaveDatabaseAfterAsynchRpcCall to false. Let mainResponder's every minute save script handle this. - \xC71/4/02; 7:13:56 PM by DW - \xC7Init user.betty.prefs.flKeepClientCallTicks. - \xC710/25/1999 by AR - \xC7user.betty.prefs.flKeepServerLog: If it's true, betty.rpc.server will log all incoming requests to the rpcServer section of the daily log GDB. - \xC711/04/1999 by AR - \xC7If user.betty.prefs.flAllowByIpOnly is true we block XML-RPC requests form anyone except those IP addresses listed in user.betty.prefs.allowedIpAddresses. - \xC711/23/99; 9:58:11 PM by PBS - \xC7XML-RPC logging is now true by default. flKeepServerLog is set to true. +«Changes + «5/28/06; 11:24:00 PM by DW and TAC + «initialize domains table + «initialize flServerDomains, handle multiple domains + «11/28/04; 10:52:16 AM by TAC + «initialize user.betty.rpcHandlers.examples + «changed timeout from 60 * 30 to 7200 + «9/6/02; 12:22:47 AM by JES + «Initialize the user.betty.queueOutgoing table and sub-elements. + «9/5/02; 11:54:01 PM by JES + «If running in Frontier, user.betty.prefs.flKeepServerLog defaults to false. + «8/20/02; 4:42:33 AM by JES + «Init user.betty.prefs.flSaveDatabaseAfterAsynchRpcCall to false. Let mainResponder's every minute save script handle this. + «1/4/02; 7:13:56 PM by DW + «Init user.betty.prefs.flKeepClientCallTicks. + «10/25/1999 by AR + «user.betty.prefs.flKeepServerLog: If it's true, betty.rpc.server will log all incoming requests to the rpcServer section of the daily log GDB. + «11/04/1999 by AR + «If user.betty.prefs.flAllowByIpOnly is true we block XML-RPC requests form anyone except those IP addresses listed in user.betty.prefs.allowedIpAddresses. + «11/23/99; 9:58:11 PM by PBS + «XML-RPC logging is now true by default. flKeepServerLog is set to true. if not defined (user.betty) { new (tabletype, @user.betty)}; +if not ( defined ( user.betty.domains ) ) { + new ( tabletype, @user.betty.domains )}; if not defined (user.betty.prefs) { new (tabletype, @user.betty.prefs)}; if not defined (user.betty.prefs.allowedIpAddresses) { @@ -36,6 +41,8 @@ user.betty.prefs.flKeepServerLog = false}}; if not defined (user.betty.prefs.flSaveDatabaseAfterAsynchRpcCall) { user.betty.prefs.flSaveDatabaseAfterAsynchRpcCall = false}; +if not ( defined ( user.betty.prefs.flServerDomains ) ) { + user.betty.prefs.flServerDomains = false}; if not defined (user.betty.prefs.rpcClientDefaultPath) { user.betty.prefs.rpcClientDefaultPath = "/RPC2"}; if not defined (user.betty.prefs.rpcClientDefaultTimeout) { @@ -48,8 +55,10 @@ new (tableType, @user.betty.queueOutgoing.table)}; if not defined (user.betty.rpcHandlers) { user.betty.rpcHandlers = system.verbs.builtins.betty.data.rpcHandlers}; -if not defined (user.betty.rpcHandlers.examples) { // 11/28/04; 10:51:43 AM by TAC +if not defined (user.betty.rpcHandlers.examples) { user.betty.rpcHandlers.examples = betty.data.rpcHandlers.examples}; if not defined (user.webserver.responders.RPC2) { user.webserver.responders.RPC2 = betty.data.responders.RPC2}; -try {delete (@user.betty.prefs.bettyInit)} \ No newline at end of file +try {delete (@user.betty.prefs.bettyInit)} + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |