Commit Graph

520 Commits

Author SHA1 Message Date
sperber 32953f94c0 It had to happen: the first post-0.6.3 bug fix.
The SELECT* operations take a timeout argument, specified to be in
seconds.  Instead, they took milliseconds.  Fix this.
2003-01-13 16:52:26 +00:00
mainzelm 52c50f9410 Check whether the file is opened non-blocking and call read-block with
'immediate in this case.
2003-01-08 17:59:48 +00:00
mainzelm 658e5bca96 Consistently use size_t for optlen in getsockopt. 2003-01-08 10:17:06 +00:00
mainzelm 10cebaf941 Use tm.tm_zone only when defined. 2003-01-08 10:14:11 +00:00
mainzelm 804362834b Extend with-errno to capture all I/O exceptions of the VM:
+ add errno as first argument to raise-exception os-error in prim-io.scm

+ capture os-error in with-errno-handler* and adjust exception
  arguments to fit errno-handlers
2003-01-08 09:16:47 +00:00
mainzelm edddbd2925 Partially rewrite of read-string(!)/partial:
- immediately return on vacuous request

- try to avoid copying in read-string!/partial

- don't use read-string!/partial in read-string/partial to avoid
  duplicate copying

- if argument is fd, set port-buffer to bufpol/none as usual
2003-01-07 17:32:57 +00:00
mainzelm 7fb1d585b2 Set bufpol/none for current-input-port. 2003-01-07 16:01:14 +00:00
mainzelm f35bd77442 Check string indices and simplify calls to set-port-buffering. 2003-01-07 14:58:13 +00:00
mainzelm 2a352215df Clarifications and fixes for set-port-buffering. 2003-01-07 13:35:54 +00:00
mainzelm 5cd0763723 In socket-option operator and operand were swapped two times. 2003-01-07 10:51:28 +00:00
mainzelm 02e2c02e38 Ugly kludge to fix (glob "/*"): The code treats "" as "/" but
directory-files doesn't.
2003-01-07 10:45:01 +00:00
mainzelm 76536c0f37 comment on kludge for ->char-set. 2002-12-17 15:43:23 +00:00
sperber aa1481450d Make LET-MATCH/IF-MATCH conform to documentation & comments.
In the process, rewrite LET-MATCH as a SYNTAX-RULES macro.
2002-12-17 13:33:33 +00:00
mainzelm d57d0d9fbb Ignore result of -e: It's not needed anyway and it may be a multiple value result. 2002-12-16 15:44:16 +00:00
mainzelm 1efc0c03ba Export the new file-info-blabla? procedures 2002-12-15 18:03:41 +00:00
mainzelm 4acf723ba9 Don't ignore static.scm, its presence is an error. 2002-12-12 09:12:19 +00:00
mainzelm a3332290c6 port->socket now dups both ports. This is also documented. 2002-12-11 10:01:01 +00:00
eknauel e17a183ffe Initial version of scshql: The original scsh ODBC API for 0.5.x
written with the new ODBC bindings. Missing: All FETCH functions
2002-12-09 16:14:48 +00:00
mainzelm e47611a0ae + Check arguments of select-ports/port-channels
+ Fix typo in really-select-port-channels
2002-12-06 12:53:55 +00:00
sperber 923ada9986 Added SELECT-PORT-CHANNELS. 2002-11-28 14:31:57 +00:00
sperber b01518b4d9 Rename WAIT-PORTS to SELECT-PORTS. 2002-11-28 14:15:34 +00:00
sperber a6ec3b5bb5 Add WAIT-PORTS. 2002-11-28 10:42:09 +00:00
mainzelm a45bcf41e9 Export connect-socket-no-wait and connect-socket-successful?. 2002-11-27 07:37:58 +00:00
mainzelm c3d776a279 Removed superfluous saving of s48 ports. They are no longer imported anyway. 2002-11-27 07:37:23 +00:00
mainzelm 2cc6f3f087 Removed export declaration of removed repl procedure. 2002-11-27 07:29:54 +00:00
mainzelm 2dda7c9888 Removed repl procedure: it wasn't working anyway. 2002-11-26 12:04:44 +00:00
mainzelm 21364665ee Introduced connect-socket-no-wait and connect-socket-successful?. 2002-11-22 12:26:08 +00:00
mainzelm b2f0570a86 + when importing scheme, hide the procedures which are about to be
overwritten

+ introduce structure scheme-with-scsh which exports the compound
  interface of scheme and scsh. Instead of the fragile (open scsh
  scheme) you can now use (open scheme-with-scsh).

+ removed superfluous partial-s48-ports
2002-11-19 12:16:08 +00:00
sperber 883117ae06 Change SELECT! in the same way as SELECT: only ask the buffers of
ports that were passed in, not those of raw file descriptors.
2002-11-12 14:26:02 +00:00
sperber a73f146a23 Change CONNECT-SOCKET to pass underlying file descriptor to SELECT to
prevent SELECT non-blocking because there's space in the buffer.
2002-11-12 13:14:44 +00:00
sperber a206e4f70a Change the semantics of select so that it doesn't check the underlying
port buffer for fdes arguments.
2002-11-12 13:13:27 +00:00
mainzelm 8900f05fd2 call select in connect only on EINPROGRESS, loop on other errors
(which should not happend anyway according to POSIX).
2002-10-31 09:51:48 +00:00
mainzelm bcd64a2b3a + Use select on socket:outport if connect returned EINPROGRESS.
+ Clearer return values for %connect: return a pair that indicates
  whether an recoverable error occured and if this error was EINPROGRESS
  or something else.
2002-10-30 13:12:00 +00:00
sperber 4290ccae21 Remove the Olinist CONDITITIONALS package, also fixing some atrocious
uses of whitespace, newline, and indentation.
This saves another 60k or so in scsh.image, actually getting us below
the level of 0.6.2.
2002-10-30 12:33:51 +00:00
sperber 20b65e6bfa Make dynamic sub-regexps of regexps involving repetition work. 2002-10-30 12:13:20 +00:00
sperber c7e49f9274 Rework CONNECT-SOCKET to use SELECT.
Note: this is presently broken because of a wrong input-port/output
port classification of the port passed into SELECT.
2002-10-30 12:01:19 +00:00
sperber d0977ea4d4 Revamped the SELECT implementation to properly distinguish between
input and output port.  Also, SELECT and SELECT! are no longer
squashed into one silly procedure.
2002-10-30 12:00:15 +00:00
sperber a8ad3e0c71 Cater to dynamic subforms of SUBMATCH. 2002-10-29 15:57:00 +00:00
mainzelm c5c913b129 Fixes for some bugs introduced by the last commit. 2002-10-23 11:51:21 +00:00
mainzelm 96060828fa Use "compare" und "rename" to compare symbols. 2002-10-21 17:30:49 +00:00
eknauel d1142b703c - Support for odbc 1.0 alloc functions 2002-10-11 08:06:45 +00:00
eknauel 41d219a5c1 + define SQLLEN if not defined (libiodbc on OS X doesn't have it)
+ new (less, but still) broken version of SQLGetData()
2002-10-05 18:00:59 +00:00
eknauel ce96216d41 + This version introduces the all new SQLBindCol(), which might (in
contrast to former versions) someday be capable of returning things
  like SQL_TIME_STRUCT, SQL_DATE_STRUCT, SQL_TIMESTAMP_STRUCT and
  SQL_NUMERIC_STRUCT.
+ However, SQLGetData() is now even more broken than before (if used
  on integer columns). It seems, that I failed to understand the API
  reference on SQLGetData() completly!
2002-09-30 18:20:47 +00:00
eknauel dc07184b5d + support for SQLBrowseConnect()
+ finalizers for connection-handles, environment-handles
  and statement-handles
+ finalizers need more testing!
2002-09-25 15:58:30 +00:00
mainzelm 8b451fe673 + Factor out exit hooks into a separate package.
+ Let exit call the exit hooks.
2002-09-25 11:40:07 +00:00
mainzelm 6bb8778437 Introduced new predicates working on file-info records. 2002-09-25 06:26:19 +00:00
eknauel 96238c00c8 fixed a missing s48_enter_integer() in odbc_sql_fetch() 2002-09-24 14:15:52 +00:00
eknauel 4651284138 Fixed a braindead bug in odbc-sql-bindcol() buffer bookkeeping that
would raise an buffer-exceeded-error even if buffer_needed <
buffer_len after the buffer has been rebound
2002-09-24 13:48:20 +00:00
eknauel eb4b60db6f added a few comments 2002-09-24 13:29:24 +00:00
eknauel 7cc0537ed4 Basic support for using SQLBindCol() from Scheme. Reading integer
values from result set is broken. Unbinding columns is not implemented
yet.
2002-09-24 13:29:03 +00:00
sperber 938182d4b1 Fix the most obvious insanities that's to do with dynamic parts of the
RX syntax.  Namely, a lot of code (used to) assume(s) that the
total-number-of-submatches (TSM) quantity is static even for dynamic
regexps.

Specifically, RE-TSM now returns an unspecific value instead of 0 for
non-regexps which should break most of the code that used to just
silently do the wrong thing.  It's likely that more examples involving
dynamic sub-regexps will fail.

In the process, I also removed some of Olin's naming craziness (using
"%" signs to convey meaning) which I needed to do to halfway
understand what's going on.
2002-09-23 12:59:28 +00:00
sperber 7062ec4f17 Long obsolete. 2002-09-19 07:08:29 +00:00
mainzelm 45388f2c12 Remove debugging output. 2002-09-18 11:21:06 +00:00
mainzelm 5b001c5720 Convert optional timeout argument before calling wait-for-channels. 2002-09-17 21:24:04 +00:00
eknauel 1b7c49c33c - support for SQLNumParams() (odbc_sql_num_params)
- support for SQLColAttribute() (odbc_sql_col_attribute)
2002-09-12 14:31:31 +00:00
mainzelm 64d35131f3 Fixed a subtle bug in the macro for the << redirection: The port
opened by open-input-string could be closed by the GC before the exec().
Now << stores the port in a global variable.
The test to reveal the bug was:

(let lp ()
  (run (head) (<< "a"))
  (lp))

printing a "closed channel" message after some a few hundred interations.
2002-09-12 07:30:30 +00:00
eknauel 87846eef58 - support for SQLNativeSql()
- dynamic memory allocation for return values in these functions:
  - odbc_sql_get_info_string()
  - odbc_sql_get_connect_attr_string()
  - odbc_sql_get_stmt_attr_string()
  - odbc_sql_get_desc_field_string()
  - odbc_sql_get_cursor_name()
  - odbc_sql_native_sql()
  - odbc_sql_get_data()
  - odbc_sql_describe_col()
  - odbc_sql_get_diag_recs()
- odbc_sql_data_sources() is still broken: sometimes the result string
  is truncated. I'm not sure if this not a unixODBC-bug...
2002-09-11 14:12:30 +00:00
mainzelm e811e1d729 Direct interface to directory streams (stolen from S48). 2002-09-06 13:22:16 +00:00
mainzelm aa57bec9c2 Support for uname. 2002-09-06 12:23:18 +00:00
mainzelm 48a009c698 Create a fresh vector of handlers on startup. 2002-09-06 11:25:59 +00:00
mainzelm ff0ce8fdfb + user-effective-uid and -gid per thread.
+ alignments for euid- and egid-resource
+ argument to chdir is now optional and defaults to (home-dir)
2002-09-06 09:57:32 +00:00
eknauel 97744da0da - Support for SQLGetDescField() (odbc-sql-get-desc-field-int and
odbc-sql-get-desc-field-string)

- Support for SQLNativeSql() (odbc-sql-native-sql)
2002-09-05 14:23:52 +00:00
eknauel 2e4ac7c244 Support for SQLMoreResults() (odbc-sql-more-results) 2002-09-04 13:53:10 +00:00
eknauel 78b653e815 Support for SQLSetPos() (odbc-sql-set-pos) and SQLBulkOperations()
(odbc-sql-bulk-operations)
2002-09-04 13:32:21 +00:00
eknauel 7ddfc3211c Added support for catalog functions:
- SQLColumPrivileges() (odbc-sql-column-privileges)
- SQLColumns() (odbc-sql-columns)
- SQLForeignKeys() (odbc-sql-foreign-keys)
- SQLPrimaryKeys() (odbc-sql-primary-keys)
- SQLProcedureColumns() (odbc-sql-proecedure-columns)
- SQLProcedures() (odbc-sql-procedures)
- SQLSpecialColumns() (odbc-sql-special-columns)
- SQLStatistics() (odbc-sql-statistics)
- SQLTablePrivileges() (odbc-sql-table-privileges)
- SQLTables() (odbc-sql-tables)
2002-09-04 12:09:35 +00:00
eknauel 7b409e8371 Support for SQLRowCount() (odbc-sql-row-count) 2002-09-03 14:08:04 +00:00
eknauel f0fdf618fe Support for SQLGetCursorName() and SQLSetCursorName() 2002-09-03 13:44:06 +00:00
sperber 3d7f50ada2 Cosmetic fix: the file uses explicit STRUCTURE-REFs for all
references to THREADS-INTERNAL except one.  Make that one reference
into a STRUCTURE-REF also.
2002-09-03 13:23:54 +00:00
sperber efb2ad6bed Factor SCSH-ENDIAN out of SCSH-LEVEL-0. 2002-09-03 13:12:32 +00:00
sperber 5eda8d0713 Fix some obscure import issues with DELIMITED-READERS. 2002-09-03 12:53:47 +00:00
sperber 416769997a Factored DELIMITED-READERS out of SCSH-LEVEL-0. 2002-09-03 12:41:45 +00:00
eknauel 64b6410756 New record type odbc-column for SQLDescribeCol()
(odbc-sql-describe-col) return values.
2002-09-03 12:34:18 +00:00
eknauel a76fdbfe59 Fixed SQLDescribeCol (odbc-sql-describe-col) 2002-09-03 12:33:17 +00:00
sperber 9772b62b54 Factored STRING-COLLECTORS out of SCSH-LEVEL-0. 2002-09-03 12:30:08 +00:00
sperber 0d4943b9b5 Factor SCSH-ERRORS out of SCSH-LEVEL-0. 2002-09-03 12:25:12 +00:00
eknauel 186f745306 - Fixed confusion of database-handles (which basically are
non-existent) and descript-handles.
- sql-datatype-* defintion for use with SQLGetTypeInfo() (odbc-sql-get-type-info)
2002-09-03 08:18:42 +00:00
eknauel 23151f3ad1 - Don't distinguish between SQL_SUCCESS and SQL_SUCCESS_WITH_INFO.
- Don't call SQLGetDiagRec() automatically on SQL_ERROR, some ODBC
  seem to have a broken SQLGetDiagRec() implementation. Let user call
  SQLGetDiagRec() from Scheme at his own risk.

The ODBC documentation thinks it's a good idea to call SQLGetDiagRec()
after each ODBC-call that might return SQL_SUCCESS_WITH_INFO. IMHO
this sucks. However it's now possible to do so in the user's Scheme
code.
2002-09-03 08:14:14 +00:00
eknauel 7efd91d54f Support for SQLGetDiagRec (odbc-sql-get-diag-recs) 2002-09-02 15:05:43 +00:00
eknauel 180850580c Fixed odbc_sql_get_diag_recs 2002-09-02 14:45:28 +00:00
eknauel a62bf26d5b - support for SQLGetDiagRec
- bugfixes fpr odbc_sql_data_sources and odbc_sql_drivers
2002-09-02 13:36:00 +00:00
eknauel 9b85dcf9da - represent handles as Scheme records of diffrent types
(environment-handle, connection-handle, statement-handle,
  database-handle)
- make ODBC functions these records
- Tons of constants for SQLGetInfo()
- get rid of some stupid pseudo-highlevel-ODBC-functions
2002-08-29 13:52:25 +00:00
eknauel 29115fc716 Scheme records for ODBC structures date, time, timestamp and numeric 2002-08-29 13:49:14 +00:00
eknauel 00dc5a0296 Don't call SQLGetDiagRec on SQL_ERROR return values, this causes
certain odbc drivers to crash.
2002-08-29 13:47:26 +00:00
mainzelm c8864c6c9a Remove duplicate initialization of cwd. 2002-08-27 16:46:02 +00:00
sperber 6eb3a1b0cc Obsolete. 2002-08-20 14:22:33 +00:00
sperber 33c14d7901 First stab at implementing SELECT/SELECT!:
- extend the VM interrupts to distinguish between read and write
  events
- add new ADD-PENDING-CHANNEL instruction to the VM
- add WAIT-FOR-CHANNELS procedure to the run-time system
- implement SELECT and SELECT! on top of that in newports.scm

This runs some basic tests, but in general should be considered
largely untested.

Moreover, SELECT/SELECT! never detect any exceptional conditions---the
returned vectors are always empty.  This is because the VM doesn't
really track those, and it's unclear whether it would be worth the
effort.
2002-08-20 14:03:01 +00:00
sperber ac343ba970 Replace Martin's implementation of selective blocking by the one in
Scheme 48 1.0.1.

Namely, instead of associating a list of queues with every thread, we
associate a single cell, holding the thread.  That cell is stored in
thread queues, and once a thread is made runnable again, the cell is
set to #f.  The thread-queue accessors ignore cells containing #f.

Implement an experimental OBTAIN-LOCK-MULTIPLE to test the whole
thing.
2002-08-16 14:11:50 +00:00
mainzelm 51230dfab1 Remove debugging message which isn't printed anyway. 2002-08-16 12:33:00 +00:00
mainzelm 4540ad4589 Don't call install-env when initializing scsh because this is already
done by a reinitializer in scsh.scm.
2002-08-16 12:12:31 +00:00
sperber 671f2c0181 Remove even more unneeded crud from utilities.scm. 2002-08-14 15:04:50 +00:00
sperber 8ebe0fe3f8 Obsolete. 2002-08-14 14:47:38 +00:00
sperber 09db2fed71 Remove a bunch of crud from utilities.scm as well as the dependencies
upon that crud.
2002-08-14 14:45:33 +00:00
sperber 7f1879b497 Remove the old LIST-LIB, STRING-LIB, and CHAR-SET-LIB libraries, now
that the corresponding SRFIs are in the Scheme 48 core.

All this hopefully preserving backwards compatibility.
2002-08-14 14:23:41 +00:00
sperber 4381ac9095 Add a whole bunch of S48_GC_PROTECT annotations in functions which
call s48_extract_integer.

s48_extract_integer can cause a callback for bignums, and, hence, heap
allocation.

This fixes a bug report by Seth Alves <alves@hungry.com> noting
spurious failures in SET-FILE-TIMES.
2002-08-13 15:46:17 +00:00
mainzelm d30130ab03 Deadlock-free resource locking. 2002-08-13 06:49:22 +00:00
eknauel f456608175 - record-types for sql-data, sql-time and sql-numeric
- tons of function ids for usage with SQLGetFunctions (sql-api-*)
- some key values for SQLGetInfo (sql-get-info-*). Need to be sorted (renamed?) by type of return value.
- minor code cleanups
2002-08-06 14:02:38 +00:00
eknauel 992bc80409 minor code clean-ups 2002-08-06 13:52:06 +00:00
mainzelm 96b40e8846 Fix to allow single character here strings. 2002-08-05 14:27:12 +00:00
mainzelm f172795016 Pass start argument of cre-search? to regexp-match. 2002-08-05 14:22:11 +00:00
mainzelm cad4096910 Finished implementation for pending interrupts. 2002-08-05 11:30:33 +00:00