From: <cli...@li...> - 2008-11-28 17:18:31
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/modules/dirkey dirkey.c,1.21,1.22 (Sam Steingold) 2. clisp/modules/gdbm gdbm.c,1.41,1.42 (Sam Steingold) 3. clisp/modules/berkeley-db bdb.c,1.126,1.127 (Sam Steingold) 4. clisp/modules/i18n gettext.c,1.27,1.28 (Sam Steingold) 5. clisp/tests ChangeLog,1.602,1.603 (Sam Steingold) 6. clisp/modules/rawsock rawsock.c,1.111,1.112 (Sam Steingold) 7. clisp/modules/syscalls calls.c,1.269,1.270 (Sam Steingold) ---------------------------------------------------------------------- Message: 1 Date: Fri, 28 Nov 2008 17:18:24 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/dirkey dirkey.c,1.21,1.22 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/dirkey In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/modules/dirkey Modified Files: dirkey.c Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: dirkey.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/dirkey/dirkey.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- dirkey.c 12 Nov 2008 04:54:48 -0000 1.21 +++ dirkey.c 28 Nov 2008 17:18:22 -0000 1.22 @@ -60,10 +60,10 @@ #if defined(WIN32_REGISTRY) # define SYSCALL_WIN32(call) do { \ uintL status; \ - begin_system_call(); \ + begin_blocking_system_call(); \ status = call; \ if (status != ERROR_SUCCESS) { SetLastError(status); OS_error(); } \ - end_system_call(); \ + end_blocking_system_call(); \ } while(0) #endif @@ -73,10 +73,10 @@ #else # define SYSCALL_LDAP(call) do { \ uintL status; \ - begin_system_call(); \ + begin_blocking_system_call(); \ status = call; \ if (status != LDAP_SUCCESS) { errno=status; OS_error(); } \ - end_system_call(); \ + end_blocking_system_call(); \ } while(0) #endif #endif @@ -330,7 +330,7 @@ default: perms = KEY_READ; break; } {DWORD status; - begin_system_call(); + begin_blocking_system_call(); status = RegOpenKeyEx(hkey,path,0,perms,p_hkey); if (status != ERROR_SUCCESS) { if ((if_not_exists == IF_DOES_NOT_EXIST_UNBOUND /*ignore*/) @@ -347,14 +347,14 @@ } } else { SetLastError(status); OS_error(); } } - end_system_call(); + end_blocking_system_call(); }} #endif #if defined(ACCESS_LDAP) nonreturning_function(static, error_ldap, (object dk, object path, char* errmsg)) { - end_system_call(); + end_blocking_system_call(); pushSTACK(NIL); pushSTACK(path); pushSTACK(dk); pushSTACK(TheSubr(subr_self)->name); STACK_3 = CLSTEXT(errmsg); @@ -409,20 +409,20 @@ if (eq(type,`:LDAP`)) { if (NULL != slots) { root = test_dir_key(root,true); - begin_system_call(); + begin_blocking_system_call(); with_string_0(path,GLO(misc_encoding),pathz,{ status = ldap_simple_bind_s((LDAP*)ret_handle,pathz,NULL); }); if (status != LDAP_SUCCESS) LDAP_ERR2STR(root,path,status); - end_system_call(); + end_blocking_system_call(); } else { /* :LDAP */ struct ldap_url_desc* ldap_url = NULL; - begin_system_call(); + begin_blocking_system_call(); with_string_0(path,GLO(misc_encoding),pathz, { status = ldap_url_parse(pathz,&ldap_url); }); if (status != 0) { - end_system_call(); + end_blocking_system_call(); pushSTACK(path); pushSTACK(TheSubr(subr_self)->name); error(error_condition,GETTEXT("~S: ~S is not an LDAP URL")); @@ -437,7 +437,7 @@ LDAP_ERR2STR(path,dn,status); }} ldap_free_urldesc(ldap_url); - end_system_call(); + end_blocking_system_call(); } } else # endif @@ -491,10 +491,10 @@ DWORD n_obj; \ DWORD maxlen; \ HKEY hkey = (HKEY)SLOT_HANDLE(dir_key_slots(dkey)); \ - begin_system_call(); \ + begin_blocking_system_call(); \ status = (COUNT_EXPR); \ if (status != ERROR_SUCCESS) { SetLastError(status); OS_error(); } \ - end_system_call(); \ + end_blocking_system_call(); \ if (n_obj > 0) { \ unsigned int ii; \ char* buf = (char*)alloca(maxlen+1); /* one extra char for '\0' */ \ @@ -502,10 +502,10 @@ for (ii = 0; ii < n_obj; ii++) { \ DWORD len = maxlen; \ DWORD status; \ - begin_system_call(); \ + begin_blocking_system_call(); \ status = (GET_NEXT_OBJ_EXPR); \ if (status != ERROR_SUCCESS) { SetLastError(status); OS_error(); } \ - end_system_call(); \ + end_blocking_system_call(); \ { object new_cons = allocate_cons(); \ Cdr(new_cons) = STACK_0; \ STACK_0 = new_cons; } \ @@ -807,12 +807,12 @@ DWORD size; char* buffer = NULL; HKEY hk = (HKEY)SLOT_HANDLE(dir_key_slots(dkey)); - begin_system_call(); + begin_blocking_system_call(); status = RegQueryValueEx(hk,namez,NULL,NULL,NULL,&size); if (status != ERROR_SUCCESS) { if ((status == ERROR_FILE_NOT_FOUND) && boundp(default_value)) { value1 = default_value; - end_system_call(); + end_blocking_system_call(); goto end; } SetLastError(status); OS_error(); @@ -821,7 +821,7 @@ buffer = (char*)alloca(size); status = RegQueryValueEx(hk,namez,NULL,&type,(BYTE*)buffer,&size); if (status != ERROR_SUCCESS) { SetLastError(status); OS_error(); } - end_system_call(); + end_blocking_system_call(); value1 = registry_value_to_object(type,size,buffer); end:; }); ------------------------------ Message: 2 Date: Fri, 28 Nov 2008 17:18:24 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/gdbm gdbm.c,1.41,1.42 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/gdbm In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/modules/gdbm Modified Files: gdbm.c Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: gdbm.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/gdbm/gdbm.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- gdbm.c 12 Nov 2008 23:02:03 -0000 1.41 +++ gdbm.c 28 Nov 2008 17:18:22 -0000 1.42 @@ -71,7 +71,7 @@ REORGANIZE-FAILED CANNOT-REPLACE ILLEGAL-DATA OPT-ALREADY-SET \ OPT-ILLEGAL) nonreturning_function(static, error_gdbm, (char *fatal_message)) { - end_system_call(); /* in case we are called from _gdbm_fatal() */ + end_blocking_system_call(); /* in case we are called from _gdbm_fatal() */ pushSTACK(`GDBM::GDBM-ERROR`); pushSTACK(`:MESSAGE`); if (fatal_message) { @@ -122,7 +122,7 @@ } } -#define SYSCALL(statement) begin_system_call(); statement; end_system_call() +#define SYSCALL(statement) begin_blocking_system_call(); statement; end_blocking_system_call() static object open_gdbm (object path, int bsize, int rw, int mode) { GDBM_FILE gdbm; ------------------------------ Message: 3 Date: Fri, 28 Nov 2008 17:18:24 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/berkeley-db bdb.c,1.126,1.127 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/berkeley-db In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/modules/berkeley-db Modified Files: bdb.c Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: bdb.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/berkeley-db/bdb.c,v retrieving revision 1.126 retrieving revision 1.127 diff -u -d -r1.126 -r1.127 --- bdb.c 12 Nov 2008 04:54:48 -0000 1.126 +++ bdb.c 28 Nov 2008 17:18:22 -0000 1.127 @@ -272,10 +272,10 @@ #define SYSCALL1(caller,args,cleanup) do { \ int db_error_code; \ - begin_system_call(); \ + begin_blocking_system_call(); \ db_error_code = caller args; cleanup \ if (db_error_code) error_bdb(db_error_code,#caller); \ - end_system_call(); \ + end_blocking_system_call(); \ } while(0) #define SYSCALL(caller,args) SYSCALL1(caller,args,) @@ -360,7 +360,7 @@ { /* Create an environment handle */ DB_ENV *dbe, *dbe_cl; bool remote_p = boundp(STACK_2); /* host ==> remote */ - int status, cl_timeout = 0, sv_timeout = 0; + int cl_timeout = 0, sv_timeout = 0; # if defined(DB_RPCCLIENT) /* 4.2 and later */ SYSCALL(db_env_create,(&dbe,remote_p ? DB_RPCCLIENT : 0)); # elif defined(DB_CLIENT) /* 4.1 and before */ @@ -374,17 +374,13 @@ host_restart: if (stringp(STACK_2)) { /* string host */ with_string_0(STACK_2,GLO(misc_encoding),hostz, { - begin_system_call(); - status = dbe->set_rpc_server(dbe,NULL,hostz,cl_timeout,sv_timeout,0); - end_system_call(); + SYSCALL(dbe->set_rpc_server,(dbe,NULL,hostz,cl_timeout,sv_timeout,0)); }); } else if ((dbe_cl = (DB_ENV*)bdb_handle(STACK_2,`BDB::DBE`, BH_NIL_IS_NULL))) { /* reuse client */ - begin_system_call(); - status = dbe->set_rpc_server(dbe,dbe_cl->cl_handle,NULL, - cl_timeout,sv_timeout,0); - end_system_call(); + SYSCALL(dbe->set_rpc_server,(dbe,dbe_cl->cl_handle,NULL, + cl_timeout,sv_timeout,0)); } else { /* bad host */ pushSTACK(NIL); /* no PLACE */ pushSTACK(STACK_(2+1)); /* TYPE-ERROR slot DATUM */ @@ -396,7 +392,6 @@ STACK_2 = value1; goto host_restart; } - if (status) error_bdb(status,"dbe->set_rpc_server"); } if (!missingp(STACK_4)) /* :PASSWD */ dbe_set_encryption(dbe,&STACK_3,&STACK_4); @@ -428,11 +423,11 @@ static FILE* my_fopen (object path) { FILE *ret; with_string_0(path=physical_namestring(path),GLO(pathname_encoding),pathz,{ - begin_system_call(); + begin_blocking_system_call(); ret = fopen(pathz,"w"); if (ret == NULL) OS_file_error(path); time_stamp(ret,"opened"); - end_system_call(); + end_blocking_system_call(); }); return ret; } @@ -446,13 +441,13 @@ #define CLOSE_FILE(which) \ static void close_##which##file (DB_ENV *dbe) { \ FILE *file; \ - begin_system_call(); \ + begin_blocking_system_call(); \ dbe->get_##which##file(dbe,&file); \ if (file && (file != stdout) && (file != stderr)) { \ time_stamp(file,"closed"); \ fclose(file); \ } \ - end_system_call(); \ + end_blocking_system_call(); \ } CLOSE_FILE(err) /* set :ERRFILE to STACK_0 @@ -607,8 +602,10 @@ } else with_string_0(check_string(STACK_0),GLO(misc_encoding), prefix, { char *errpfx = (char*)clisp_malloc(prefix_bytelen+1); + begin_system_call(); strcpy(errpfx,prefix); - begin_system_call(); dbe->set_errpfx(dbe,errpfx); end_system_call(); + dbe->set_errpfx(dbe,errpfx); + end_system_call(); }); } /* extract errpfx @@ -1522,9 +1519,9 @@ fill_dbt(STACK_0,&key,db_key_type(db,action)); init_dbt(&val,DB_DBT_MALLOC); skipSTACK(2); - begin_system_call(); + begin_blocking_system_call(); status = db->get(db,txn,&key,&val,flags | action); - end_system_call(); + end_blocking_system_call(); if (status) { free_dbt(&key); if (no_error) { @@ -1737,10 +1734,10 @@ switch (action) { case DB_NODUPDATA: case DB_NOOVERWRITE: { int status; - begin_system_call(); + begin_blocking_system_call(); status = db->put(db,txn,&key,&val,action | flags); free(val.data); free(key.data); - end_system_call(); + end_blocking_system_call(); switch (status) { case 0: VALUES0; break; case DB_KEYEXIST: VALUES1(`:KEYEXIST`); error_message_reset(); break; @@ -1818,7 +1815,6 @@ u_int32_t flags = db_verify_flags(); DB *db = (DB*)bdb_handle(STACK_3,`BDB::DB`,BH_VALID); FILE *outfile = NULL; - int status; if (!missingp(STACK_0)) { /* SALVAGE */ outfile = my_fopen(STACK_0); flags |= DB_SALVAGE; @@ -1829,21 +1825,15 @@ flags |= DB_ORDERCHKONLY; } with_string_0(STACK_2,GLO(pathname_encoding),file,{ - if (!missingp(STACK_1)) { + if (!missingp(STACK_1)) with_string_0(STACK_1,GLO(misc_encoding),database,{ - begin_system_call(); - status = db->verify(db,file,database,outfile,flags); - if (outfile) fclose(outfile); - end_system_call(); + SYSCALL1(db->verify,(db,file,database,outfile,flags), + { if (outfile) fclose(outfile); }); }); - } else { - begin_system_call(); - status = db->verify(db,file,NULL,outfile,flags); - if (outfile) fclose(outfile); - end_system_call(); - } + else + SYSCALL1(db->verify,(db,file,NULL,outfile,flags), + { if (outfile) fclose(outfile); }); }); - if (status) error_bdb(status,"db->verify"); VALUES0; skipSTACK(3); } @@ -2300,9 +2290,9 @@ dbt_o_t key_type = fill_or_init(popSTACK(),&key,db_log_key); int status; skipSTACK(1); /* drop cursor */ - begin_system_call(); + begin_blocking_system_call(); status = cursor->c_get(cursor,&key,&val,flag | action); - end_system_call(); + end_blocking_system_call(); if (status) { free_dbt(&key); free_dbt(&val); if (no_error) { @@ -2372,14 +2362,14 @@ so clisp_malloc() must be called after it to avoid a memory leak */ fill_dbt(STACK_0,&obj,0); dblock = (DB_LOCK*)clisp_malloc(sizeof(DB_LOCK)); - begin_system_call(); + begin_blocking_system_call(); status = dbe->lock_get(dbe,locker,flags,&obj,mode,dblock); free(obj.data); if (status) { free(dblock); error_bdb(status,"dbe->lock_get"); } - end_system_call(); + end_blocking_system_call(); pushSTACK(allocate_fpointer(dblock)); pushSTACK(STACK_2); funcall(`BDB::MKDBLOCK`,2); STACK_0 = STACK_1 = value1; pushSTACK(``BDB:LOCK-CLOSE``); funcall(L(finalize),2); @@ -2613,9 +2603,9 @@ check_lsn(&STACK_0,&lsn); } init_dbt(&data,DB_DBT_MALLOC); - begin_system_call(); + begin_blocking_system_call(); status = logc->get(logc,&lsn,&data,action); - end_system_call(); + end_blocking_system_call(); if (status) { if (no_error) { switch (status) { @@ -2753,13 +2743,13 @@ long retnum; SYSCALL(dbe->get_tx_max,(dbe,&tx_max)); preplist = (DB_PREPLIST*)clisp_malloc(tx_max * sizeof(DB_PREPLIST)); - begin_system_call(); + begin_blocking_system_call(); status = dbe->txn_recover(dbe,preplist,tx_max,&retnum,flags); if (status) { - free(preplist); end_system_call(); + free(preplist); end_blocking_system_call(); error_bdb(status,"dbe->txn_recover"); } - end_system_call(); + end_blocking_system_call(); for (ii=0; ii<retnum; ii++) { pushSTACK(allocate_fpointer(preplist[ii].txn)); funcall(`BDB::MKTXN`,1); pushSTACK(value1); ------------------------------ Message: 4 Date: Fri, 28 Nov 2008 17:18:25 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/i18n gettext.c,1.27,1.28 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/i18n In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/modules/i18n Modified Files: gettext.c Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: gettext.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/i18n/gettext.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- gettext.c 12 Nov 2008 04:54:48 -0000 1.27 +++ gettext.c 28 Nov 2008 17:18:22 -0000 1.28 @@ -42,13 +42,13 @@ if (msgid[0] == '\0') { translated_msg = ""; /* Don't return the catalog's header entry. */ } else { - begin_system_call(); + begin_blocking_system_call(); # ifdef CLISP_UNICODE if (domain != NULL) bind_textdomain_codeset(domain,"UTF-8"); # endif translated_msg = dcgettext(domain,msgid,category); - end_system_call(); + end_blocking_system_call(); } return asciz_to_string(translated_msg,Symbol_value(S(utf_8))); } @@ -57,13 +57,13 @@ const char* domain, uint32 n, int category) { const char* translated_msg; - begin_system_call(); + begin_blocking_system_call(); # ifdef CLISP_UNICODE if (domain != NULL) bind_textdomain_codeset(domain,"UTF-8"); # endif translated_msg = dcngettext(domain,msgid,msgid_plural,n,category); - end_system_call(); + end_blocking_system_call(); return asciz_to_string(translated_msg,Symbol_value(S(utf_8))); } ------------------------------ Message: 5 Date: Fri, 28 Nov 2008 17:18:25 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/tests ChangeLog,1.602,1.603 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/tests Modified Files: ChangeLog Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/tests/ChangeLog,v retrieving revision 1.602 retrieving revision 1.603 diff -u -d -r1.602 -r1.603 --- ChangeLog 28 Nov 2008 15:08:50 -0000 1.602 +++ ChangeLog 28 Nov 2008 17:18:23 -0000 1.603 @@ -1,5 +1,13 @@ 2008-11-28 Sam Steingold <sd...@gn...> + * modules/berkeley-db/bdb.c, modules/dirkey/dirkey.c, + * modules/gdbm/gdbm.c, modules/i18n/gettext.c, + * modules/rawsock/rawsock.c, modules/syscalls/calls.c: + use begin/end_blocking_system_call instead of begin/end_system_call + for all file and network operations + +2008-11-28 Sam Steingold <sd...@gn...> + * gllib/stdint.in.h, gllib/sys_time.in.h, glm4/include_next.m4: update from gnulib to fix the rpl_gettimeofday problem ------------------------------ Message: 6 Date: Fri, 28 Nov 2008 17:18:25 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/rawsock rawsock.c,1.111,1.112 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/rawsock In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/modules/rawsock Modified Files: rawsock.c Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: rawsock.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/rawsock/rawsock.c,v retrieving revision 1.111 retrieving revision 1.112 diff -u -d -r1.111 -r1.112 --- rawsock.c 17 Nov 2008 18:47:11 -0000 1.111 +++ rawsock.c 28 Nov 2008 17:18:23 -0000 1.112 @@ -284,8 +284,8 @@ } /* ================== SIGPIPE handling ================== */ -#define begin_sock_call() START_WRITING_TO_SUBPROCESS; begin_system_call() -#define end_sock_call() end_system_call(); STOP_WRITING_TO_SUBPROCESS +#define begin_sock_call() START_WRITING_TO_SUBPROCESS; begin_blocking_system_call() +#define end_sock_call() end_blocking_system_call(); STOP_WRITING_TO_SUBPROCESS /* invoke system call C, place return value in R, report error on socket S */ #define SYSCALL(r,s,c) \ @@ -1129,9 +1129,9 @@ uint32 ipaddress = I_to_UL(check_uint32(STACK_0)); rawsock_t sock = I_to_uint(check_uint(STACK_2)); with_string_0(check_string(STACK_1),Symbol_value(S(utf_8)),name, { - begin_system_call(); + begin_blocking_system_call(); configdev(sock, name, ipaddress, flags); - end_system_call(); + end_blocking_system_call(); }); VALUES0; skipSTACK(3); } ------------------------------ Message: 7 Date: Fri, 28 Nov 2008 17:18:25 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/syscalls calls.c,1.269,1.270 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/syscalls In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18723/modules/syscalls Modified Files: calls.c Log Message: use begin/end_blocking_system_call instead of begin/end_system_call for all file and network operations Index: calls.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/syscalls/calls.c,v retrieving revision 1.269 retrieving revision 1.270 diff -u -d -r1.269 -r1.270 --- calls.c 12 Nov 2008 04:54:48 -0000 1.269 +++ calls.c 28 Nov 2008 17:18:23 -0000 1.270 @@ -262,19 +262,19 @@ # if defined(WIN32_NATIVE) uint32 size_hi; uint32 size_lo; - begin_system_call(); + begin_blocking_system_call(); size_lo = GetFileSize(fd,(DWORD*)&size_hi); /* Value returned can be (LONG) -1 even on success, check the last error code */ failed_p = (size_lo == INVALID_FILE_SIZE) && (GetLastError() != 0); - end_system_call(); + end_blocking_system_call(); if (failed_p) goto stream_lock_error; length = ((uint64)size_hi << 32) | (uint64)size_lo; # elif defined(HAVE_FSTAT) struct stat st; - begin_system_call(); + begin_blocking_system_call(); failed_p = (-1 == fstat(fd,&st)); - end_system_call(); + end_blocking_system_call(); if (failed_p) goto stream_lock_error; length = st.st_size; # else @@ -282,7 +282,7 @@ # endif } else length = I_to_offset(STACK_0); - begin_system_call(); + begin_blocking_system_call(); #if defined(WIN32_NATIVE) if (lock_p) { failed_p = !(*LockFileExFunc)(fd,flags,0,length,0,&ol); @@ -296,7 +296,7 @@ && lock_p && (cmd == F_SETLK) && (errno == EACCES || errno == EAGAIN)) failed_p = lock_p = false; /* failed to lock, :BLOCK NIL */ #endif - end_system_call(); + end_blocking_system_call(); if (failed_p) stream_lock_error: error_OS_stream(stream); skipSTACK(6); @@ -325,11 +325,15 @@ cmd = F_SETFL; break; default: NOTREACHED; } - begin_system_call(); value = fcntl(fd,cmd,value); end_system_call(); + begin_blocking_system_call(); + value = fcntl(fd,cmd,value); + end_blocking_system_call(); if (-1 == value) error_OS_stream(STACK_2); VALUES0; } else { /* GET */ - begin_system_call(); value = fcntl(fd,cmd); end_system_call(); + begin_blocking_system_call(); + value = fcntl(fd,cmd); + end_blocking_system_call(); if (-1 == value) error_OS_stream(STACK_2); switch (cmd) { case F_GETFD: value1 = check_fd_flags_to_list(value); break; @@ -365,7 +369,9 @@ void* data) { void* ret; with_string_0(value1=physical_namestring(path),GLO(pathname_encoding),pathz, - { begin_system_call(); ret = (*f)(pathz,data); end_system_call(); }); + { begin_blocking_system_call(); + ret = (*f)(pathz,data); + end_blocking_system_call(); }); return ret; } #define ON_PNAMESTRING(p,f,d) on_pnamestring(p,(void*(*)(const char*,void*))&(f),(void*)(d)) @@ -404,7 +410,7 @@ /* truncate a stream, STACK_0 = stream */ static void stream_truncate (Handle fd, file_offset_t *length) { - begin_system_call(); + begin_blocking_system_call(); #if defined(WIN32_NATIVE) { LARGE_INTEGER cur_pos; if (!(SetFilePointerEx(fd,(LARGE_INTEGER){QuadPart:0}, @@ -412,15 +418,15 @@ && SetFilePointerEx(fd,*length,NULL,FILE_BEGIN) && SetEndOfFile(fd) && SetFilePointerEx(fd,cur_pos,NULL,FILE_BEGIN))) - { end_system_call(); OS_filestream_error(STACK_0); } + { end_blocking_system_call(); OS_filestream_error(STACK_0); } } #elif defined(HAVE_FTRUNCATE) if (ftruncate(fd,*length)) - { end_system_call(); OS_file_error(STACK_0); } + { end_blocking_system_call(); OS_file_error(STACK_0); } #else #error FILE-SIZE: no ftruncate and not woe32 #endif - end_system_call(); + end_blocking_system_call(); } /* separate from SET-FILE-STAT because it works only on paths @@ -493,12 +499,12 @@ int facility = check_syslog_facility(popSTACK()); int logopt = syslog_opt_flags(); with_string_0(check_string(popSTACK()),GLO(misc_encoding),ident, { - begin_system_call(); + begin_blocking_system_call(); if (log_ident) { free(log_ident); } log_ident = (char*)clisp_malloc(strlen(ident)+1); strcpy(log_ident,ident); openlog(log_ident,logopt,facility); - end_system_call(); + end_blocking_system_call(); }); VALUES0; } @@ -518,22 +524,22 @@ int priority = check_syslog_severity(STACK_2) | check_syslog_facility(STACK_1); with_string_0(STACK_0 = check_string(STACK_0),GLO(misc_encoding),mesg, { - begin_system_call(); + begin_blocking_system_call(); /* disable %m but avoid surprises with % special handling http://www.opengroup.org/onlinepubs/009695399/functions/syslog.html */ syslog(priority,"%s",mesg); - end_system_call(); + end_blocking_system_call(); }); VALUES0; skipSTACK(3); } #if defined(HAVE_CLOSELOG) DEFUN(POSIX:CLOSELOG,) { - begin_system_call(); + begin_blocking_system_call(); closelog(); #if defined(HAVE_OPENLOG) if(log_ident) { free(log_ident); log_ident=NULL; } #endif - end_system_call(); + end_blocking_system_call(); VALUES0; } #endif @@ -616,7 +622,9 @@ #if defined(HAVE_TEMPNAM) static object temp_name (char *dir, char *prefix) { char *ret_s; object ret_o; - begin_system_call(); ret_s = tempnam(dir,prefix); end_system_call(); + begin_blocking_system_call(); + ret_s = tempnam(dir,prefix); + end_blocking_system_call(); if (ret_s == NULL) OS_error(); ret_o = asciz_to_string(ret_s,GLO(pathname_encoding)); begin_system_call(); free(ret_s); end_system_call(); @@ -626,9 +634,9 @@ static object temp_name (char *dir, char *prefix) { char path[MAX_PATH]; int ret; - begin_system_call(); + begin_blocking_system_call(); ret = GetTempFileName(dir,prefix,0,path); - end_system_call(); + end_blocking_system_call(); if (0 == ret) OS_error(); return asciz_to_string(path,GLO(pathname_encoding)); } @@ -643,7 +651,7 @@ Handle fd; with_string_0(fname,GLO(pathname_encoding),namez,{ char *c_template; - begin_system_call(); + begin_blocking_system_call(); if (namez_bytelen > 6 && namez[namez_bytelen-1]=='X' && namez[namez_bytelen-2]=='X' @@ -658,7 +666,7 @@ strcat(c_template,"XXXXXX"); } fd = mkstemp(c_template); - end_system_call(); + end_blocking_system_call(); fname = asciz_to_string(c_template,GLO(pathname_encoding)); }); pushSTACK(fname); funcall(L(pathname),1); STACK_4=value1; /* filename */ @@ -726,14 +734,15 @@ } #if defined(HAVE_ENDUTXENT) DEFUN(POSIX::ENDUTXENT,) { - begin_system_call(); endutxent(); end_system_call(); VALUES0; + begin_blocking_system_call(); endutxent(); end_blocking_system_call(); + VALUES0; } #endif #if defined(HAVE_GETUTXENT) DEFUN(POSIX::GETUTXENT, &optional utmpx) { struct utmpx *utmpx; if (!missingp(STACK_0)) STACK_0 = check_classname(STACK_0,`POSIX::UTMPX`); - begin_system_call(); utmpx=getutxent(); end_system_call(); + begin_blocking_system_call(); utmpx=getutxent(); end_blocking_system_call(); if (utmpx) utmpx_to_lisp(utmpx,missingp(STACK_0) ? NULL : &STACK_0); else VALUES1(NIL); skipSTACK(1); @@ -743,7 +752,9 @@ DEFUN(POSIX::GETUTXID, id) { struct utmpx utmpx, *utmpx_p; utmpx.ut_type = check_utmpx(&STACK_0); - begin_system_call(); utmpx_p = getutxid(&utmpx); end_system_call(); + begin_blocking_system_call(); + utmpx_p = getutxid(&utmpx); + end_blocking_system_call(); if (utmpx_p) utmpx_to_lisp(utmpx_p,&STACK_0); else VALUES1(NIL); skipSTACK(1); @@ -753,7 +764,9 @@ DEFUN(POSIX::GETUTXLINE, line) { struct utmpx utmpx, *utmpx_p; utmpx.ut_type = check_utmpx(&STACK_0); - begin_system_call(); utmpx_p = getutxline(&utmpx); end_system_call(); + begin_blocking_system_call(); + utmpx_p = getutxline(&utmpx); + end_blocking_system_call(); if (utmpx_p) utmpx_to_lisp(utmpx_p,&STACK_0); else VALUES1(NIL); skipSTACK(1); @@ -763,7 +776,9 @@ DEFUN(POSIX::PUTUTXLINE, utmpx) { struct utmpx utmpx, *utmpx_p; utmpx.ut_type = check_utmpx(&STACK_0); - begin_system_call(); utmpx_p = pututxline(&utmpx); end_system_call(); + begin_blocking_system_call(); + utmpx_p = pututxline(&utmpx); + end_blocking_system_call(); if (utmpx_p) utmpx_to_lisp(utmpx_p,&STACK_0); else OS_error(); skipSTACK(1); @@ -771,7 +786,8 @@ #endif #if defined(HAVE_SETUTXENT) DEFUN(POSIX::SETUTXENT,) { - begin_system_call(); setutxent(); end_system_call(); VALUES0; + begin_blocking_system_call(); setutxent(); end_blocking_system_call(); + VALUES0; } #endif #endif /* HAVE_UTMPX_H */ @@ -841,18 +857,18 @@ DEFUN(POSIX:SYNC, &optional file) { if (missingp(STACK_0)) { /* sync() */ # if defined(HAVE_SYNC) - begin_system_call(); sync(); end_system_call(); + begin_blocking_system_call(); sync(); end_blocking_system_call(); # endif } else { /* fsync() */ Handle fd = stream_get_handle(&STACK_0); bool failed_p; - begin_system_call(); + begin_blocking_system_call(); # if defined(HAVE_FSYNC) failed_p = (-1 == fsync(fd)); # elif defined(WIN32_NATIVE) failed_p = (!FlushFileBuffers(fd)); # endif - end_system_call(); + end_blocking_system_call(); if (failed_p) error_OS_stream(STACK_0); } VALUES0; skipSTACK(1); @@ -1208,9 +1224,8 @@ else { \ /* Here we cannot use alloca(), because alloca() is generally unsafe \ for sizes > BUFSIZ. */ \ - char *tmp; \ + char *tmp = (char*)clisp_malloc(res); \ begin_system_call(); \ - tmp = (char*)clisp_malloc(res); \ confstr(cmd,tmp,res); \ end_system_call(); \ value1 = asciz_to_string(tmp,GLO(misc_encoding)); \ @@ -1844,9 +1859,9 @@ object file = STACK_1; if (integerp(file)) { - begin_system_call(); + begin_blocking_system_call(); if (fstat(I_to_UL(file),&buf) < 0) OS_error(); - end_system_call(); + end_blocking_system_call(); } else { Handle fd; file = open_file_stream_handle(STACK_1,&fd,true); @@ -1859,10 +1874,10 @@ /* woe32 does have fstat(), but it does not accept a file handle, only an integer of an unknown nature */ BY_HANDLE_FILE_INFORMATION fi; - begin_system_call(); + begin_blocking_system_call(); if (!GetFileInformationByHandle(fd,&fi)) error_OS_stream(STACK_1); - end_system_call(); + end_blocking_system_call(); pushSTACK(STACK_1); /* file */ pushSTACK(uint32_to_I(fi.dwVolumeSerialNumber)); /* device */ pushSTACK(UL2_to_I(fi.nFileIndexHigh,fi.nFileIndexLow)); /* "inode" */ @@ -1879,7 +1894,7 @@ # else if (fstat(fd,&buf) < 0) error_OS_stream(STACK_1); - end_system_call(); + end_blocking_system_call(); file = eq(nullobj,STACK_1) ? fixnum(fd) : (object)STACK_1; /* restore */ # endif } @@ -1932,13 +1947,13 @@ #elif defined(HAVE_CHMOD) if (chmod(path,mode)) OS_file_error(STACK_0); #else - end_system_call(); + end_blocking_system_call(); pushSTACK(CLSTEXT("~S(~S ~S ~S): this platform lacks ~S")); pushSTACK(TheSubr(subr_self)->name); pushSTACK(STACK_2); pushSTACK(`:MODE`); pushSTACK(fixnum(mode)); pushSTACK(`"chmod()"`); funcall(S(warn),5); - begin_system_call(); + begin_blocking_system_call(); #endif } /* error-signalling replacement for chown() @@ -1948,14 +1963,14 @@ #if defined(HAVE_CHOWN) if (chown(path,uid,gid)) OS_file_error(STACK_0); #else - end_system_call(); + end_blocking_system_call(); pushSTACK(CLSTEXT("~S(~S ~S ~S ~S ~S): this platform lacks ~S")); pushSTACK(TheSubr(subr_self)->name); pushSTACK(STACK_2); pushSTACK(`:UID`); pushSTACK((uid != (uid_t)-1) ? fixnum(uid) : NIL); pushSTACK(`:GID`); pushSTACK((gid != (gid_t)-1) ? fixnum(gid) : NIL); pushSTACK(`"chown()"`); funcall(S(warn),7); - begin_system_call(); + begin_blocking_system_call(); #endif } /* error-signalling replacement for utime() @@ -1976,7 +1991,7 @@ #if defined(HAVE_UTIME) if (utime(path,utb)) OS_file_error(STACK_0); #else - end_system_call(); + end_blocking_system_call(); pushSTACK(CLSTEXT("~S(~S ~S ~S ~S ~S): this platform lacks ~S")); pushSTACK(TheSubr(subr_self)->name); pushSTACK(STACK_2); pushSTACK(`:ATIME`); @@ -1985,7 +2000,7 @@ pushSTACK(utb_m ? convert_time_to_universal(&(utb->modtime)) : NIL); pushSTACK(`"utime()"`); funcall(S(warn),7); - begin_system_call(); + begin_blocking_system_call(); #endif } #else /* WIN32_NATIVE */ @@ -2013,7 +2028,11 @@ HANDLE s_h = ON_PNAMESTRING(path,FindFirstFile,wfd); if (s_h == INVALID_HANDLE_VALUE) OS_file_error(value1); if (sh) *sh = s_h; - else { begin_system_call(); FindClose(s_h); begin_system_call(); } + else { + begin_blocking_system_call(); + FindClose(s_h); + begin_blocking_system_call(); + } } /* get file times from an object can trigger GC */ @@ -2083,11 +2102,11 @@ skipSTACK(2); /* drop atime & mtime */ STACK_0 = physical_namestring(STACK_0); with_string_0(STACK_0,GLO(pathname_encoding),path, { - begin_system_call(); + begin_blocking_system_call(); if (mode != (mode_t)-1) my_chmod(path,mode); if ((uid != (uid_t)-1) || (gid != (gid_t)-1)) my_chown(path,uid,gid); if (utb_a || utb_m) my_utime(path,utb_a,utb_m,&utb); - end_system_call(); + end_blocking_system_call(); }); VALUES0; skipSTACK(1); } @@ -2189,7 +2208,9 @@ funcall(L(namestring),1); /* drop path from STACK */ with_string_0(value1,GLO(pathname_encoding),path, { int ret; - begin_system_call(); ret = mknod(path,mode,0); end_system_call(); + begin_blocking_system_call(); + ret = mknod(path,mode,0); + end_blocking_system_call(); if (ret) OS_file_error(value1); }); VALUES0; @@ -2204,7 +2225,7 @@ char *c_template; if (namez[namez_bytelen-1] == '/') /* mkdtemp(".../") --> ENOENT */ namez[--namez_bytelen] = 0; - begin_system_call(); + begin_blocking_system_call(); if (namez_bytelen > 6 && namez[namez_bytelen-1]=='X' && namez[namez_bytelen-2]=='X' @@ -2219,7 +2240,7 @@ strcat(c_template,"XXXXXX"); } c_template = mkdtemp(c_template); - end_system_call(); + end_blocking_system_call(); if (NULL == c_template) OS_error(); fname = asciz_to_string(c_template,GLO(pathname_encoding)); }); @@ -2235,9 +2256,9 @@ /* if no directory ==> use current "." */ STACK_3 = temp_name(dir[0] ? dir : (char*)".",prefix); with_string_0(STACK_3,GLO(pathname_encoding),newdir, { - begin_system_call(); + begin_blocking_system_call(); if (mkdir1(newdir,0700)) OS_file_error(STACK_2); - end_system_call(); + end_blocking_system_call(); }); }); }); @@ -2343,17 +2364,17 @@ #if defined(HAVE_FSTATVFS) if (integerp(file)) { - begin_system_call(); + begin_blocking_system_call(); if (fstatvfs(I_to_L(file),&buf) < 0) OS_error(); - end_system_call(); + end_blocking_system_call(); } else { Handle fd; file = open_file_stream_handle(file,&fd,true); if (!eq(nullobj,file)) { /* an open stream */ - begin_system_call(); + begin_blocking_system_call(); if (fstatvfs(fd,&buf) < 0) error_OS_stream(STACK_0); - end_system_call(); + end_blocking_system_call(); STACK_0 = file; } else #endif @@ -2766,7 +2787,7 @@ #if defined(HAVE_LINK) static void hardlink_file (char* old_pathstring, char* new_pathstring) { gcv_object_t *failed = NULL; - begin_system_call(); + begin_blocking_system_call(); # if defined(WIN32_NATIVE) if (MkHardLink(old_pathstring,new_pathstring) == FALSE) failed = (GetLastError() == ERROR_FILE_NOT_FOUND ? &STACK_3 : &STACK_1); @@ -2774,17 +2795,17 @@ if (my_link(old_pathstring,new_pathstring) < 0) failed = (errno==ENOENT ? &STACK_3 : &STACK_1); # endif - end_system_call(); + end_blocking_system_call(); if (failed) OS_file_error(*failed); } #endif #if defined(HAVE_SYMLINK) static inline void symlink_file (char* old_pathstring, char* new_pathstring) { gcv_object_t *failed = NULL; - begin_system_call(); + begin_blocking_system_call(); if (symlink(old_pathstring,new_pathstring) < 0) /* symlink file */ failed = (errno==ENOENT ? &STACK_3 : &STACK_1); - end_system_call(); + end_blocking_system_call(); if (failed) OS_file_error(*failed); } #endif @@ -2798,18 +2819,18 @@ struct stat dest_sb; # if defined(HAVE_FSTAT) && !defined(WIN32_NATIVE) - begin_system_call(); + begin_blocking_system_call(); if (fstat(source_fd, &source_sb) == -1) { - end_system_call(); + end_blocking_system_call(); pushSTACK(file_stream_truename(STACK_1)); goto close_and_err; } if (fstat(dest_fd, &dest_sb) == -1) { - end_system_call(); + end_blocking_system_call(); pushSTACK(file_stream_truename(STACK_0)); goto close_and_err; } - end_system_call(); + end_blocking_system_call(); # elif defined(HAVE_STAT) if (ON_PNAMESTRING(STACK_1,stat,&source_sb)) { pushSTACK(file_stream_truename(STACK_1)); @@ -2826,9 +2847,9 @@ # if defined(WIN32_NATIVE) /*** file mode ***/ { BOOL ret; BY_HANDLE_FILE_INFORMATION fi; - begin_system_call(); + begin_blocking_system_call(); ret = GetFileInformationByHandle(source_fd,&fi); - end_system_call(); + end_blocking_system_call(); if (!ret) { pushSTACK(file_stream_truename(STACK_1)); goto close_and_err; @@ -2839,14 +2860,14 @@ } } # elif defined(HAVE_FCHMOD) - begin_system_call(); + begin_blocking_system_call(); if (((source_sb.st_mode & 0777) != (dest_sb.st_mode & 0777)) && (fchmod(dest_fd, source_sb.st_mode & 0777) == -1)) { - end_system_call(); + end_blocking_system_call(); pushSTACK(file_stream_truename(STACK_0)); goto close_and_err; } - end_system_call(); + end_blocking_system_call(); # elif defined(HAVE_CHMOD) if ((source_sb.st_mode & 0777) != (dest_sb.st_mode & 0777) && ON_PNAMESTRING(STACK_0,chmod,source_sb.st_mode & 0777)) { @@ -2856,19 +2877,19 @@ # endif # if defined(HAVE_FCHOWN) /*** owner/group ***/ - begin_system_call(); + begin_blocking_system_call(); if (fchown(dest_fd, source_sb.st_uid, source_sb.st_gid) == -1) { - end_system_call(); + end_blocking_system_call(); pushSTACK(file_stream_truename(STACK_0)); goto close_and_err; } - end_system_call(); + end_blocking_system_call(); # elif defined(HAVE_CHOWN) { int ret; with_string_0(physical_namestring(STACK_0),GLO(pathname_encoding),destz,{ - begin_system_call(); + begin_blocking_system_call(); ret = chown(destz, source_sb.st_uid, source_sb.st_gid); - end_system_call(); + end_blocking_system_call(); }); if (ret == -1) { pushSTACK(file_stream_truename(STACK_0)); @@ -3182,12 +3203,12 @@ { /* Lisp interface to dup(2)/dup2(2). */ Handle new_handle = (Handle)check_uint_defaulted(popSTACK(),(uintL)-1); Handle old_handle = (Handle)I_to_uint(check_uint(popSTACK())); - begin_system_call(); + begin_blocking_system_call(); if (new_handle == (Handle)(uintL)-1) new_handle = handle_dup(old_handle); else new_handle = handle_dup2(old_handle,new_handle); - end_system_call(); + end_blocking_system_call(); VALUES1(fixnum(new_handle)); } @@ -3232,16 +3253,16 @@ find_first_file(STACK_1,&wfd,&sh); *phys = value1; /* physical name */ wfd_to_file_info(&wfd); pushSTACK(value1); while (1) { - begin_system_call(); + begin_blocking_system_call(); if (!FindNextFile(sh,&wfd)) { if (GetLastError() == ERROR_NO_MORE_FILES) break; - end_system_call(); + end_blocking_system_call(); OS_file_error(*phys); } - end_system_call(); + end_blocking_system_call(); wfd_to_file_info(&wfd); pushSTACK(value1); count++; } - begin_system_call(); FindClose(sh); end_system_call(); + begin_blocking_system_call(); FindClose(sh); end_blocking_system_call(); VALUES1(listof(count)); } skipSTACK(2); /* drop arguments */ @@ -3255,18 +3276,18 @@ gcv_object_t *file = &STACK_7; /* Get a pointer to the IShellLink interface. */ - begin_system_call(); + begin_blocking_system_call(); hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLink, (LPVOID*)&psl); if (!SUCCEEDED(hres)) goto fail_none; - end_system_call(); + end_blocking_system_call(); if (!missingp(STACK_0)) { /* PATH */ object path = check_string(STACK_0); with_string_0(path,GLO(pathname_encoding),pathz, { - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetPath(psl,pathz); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); }); } skipSTACK(1); /* drop PATH */ @@ -3299,19 +3320,19 @@ pushSTACK(TheSubr(subr_self)->name); error(error_condition,GETTEXT("~S: invalid hotkey spec ~S")); } - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetHotkey(psl,hot_key); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); } skipSTACK(1); /* drop HOT-KEY */ if (!missingp(STACK_0)) { /* DESCRIPTION */ object desc = check_string(STACK_0); with_string_0(desc,GLO(pathname_encoding),descz, { - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetDescription(psl,descz); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); }); } skipSTACK(1); /* drop DESCRIPTION */ @@ -3325,10 +3346,10 @@ : Cdr(STACK_0))); } else icon_name = check_string(STACK_0); with_string_0(icon_name,GLO(pathname_encoding),iconz, { - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetIconLocation(psl,iconz,icon_idx); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); }); } skipSTACK(1); /* drop ICON */ @@ -3348,35 +3369,35 @@ sc = value1; goto restart_show_command; } - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetShowCmd(psl,sci); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); } skipSTACK(1); /* drop SHOW-COMMAND */ if (!missingp(STACK_0)) { /* ARGUMENTS */ object args = check_string(STACK_0); with_string_0(args,GLO(pathname_encoding),argz, { - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetArguments(psl,argz); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); }); } skipSTACK(1); /* drop ARGUMENTS */ if (!missingp(STACK_0)) { /* WORKING-DIRECTORY */ object wd = check_string(STACK_0); with_string_0(wd,GLO(pathname_encoding),wdz, { - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->SetWorkingDirectory(psl,wdz); if (!SUCCEEDED(hres)) goto fail_psl; - end_system_call(); + end_blocking_system_call(); }); } skipSTACK(1); /* drop WORKING-DIRECTORY */ STACK_0 = physical_namestring(STACK_0); /* pathname */ - begin_system_call(); + begin_blocking_system_call(); hres = psl->lpVtbl->QueryInterface(psl,&IID_IPersistFile,(LPVOID*)&ppf); if (!SUCCEEDED(hres)) goto fail_psl; { /* Ensure that the string is Unicode & Save the shortcut. */ @@ -3389,11 +3410,11 @@ } ppf->lpVtbl->Release(ppf); psl->lpVtbl->Release(psl); - end_system_call(); + end_blocking_system_call(); VALUES1(popSTACK()); return; fail_ppf: ppf->lpVtbl->Release(ppf); fail_psl: psl->lpVtbl->Release(psl); - fail_none: end_system_call(); OS_file_error(*file); + fail_none: end_blocking_system_call(); OS_file_error(*file); } DEFUN(POSIX::SHORTCUT-INFO, file) { @@ -3410,7 +3431,7 @@ STACK_0 = physical_namestring(STACK_0); /* Get a pointer to the IShellLink interface. */ - begin_system_call(); + begin_blocking_system_call(); hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLink, (LPVOID*)&psl); if (!SUCCEEDED(hres)) goto fail_none; @@ -3451,7 +3472,7 @@ if (!SUCCEEDED(hres)) goto fail_ppf; ppf->lpVtbl->Release(ppf); psl->lpVtbl->Release(psl); - end_system_call(); + end_blocking_system_call(); pushSTACK(asciz_to_string(path,GLO(pathname_encoding))); /* 1 */ wfd_to_file_info(&wfd); pushSTACK(value1); /* 2 */ pushSTACK(asciz_to_string(wd,GLO(pathname_encoding))); /* 3 */ @@ -3479,7 +3500,7 @@ return; fail_ppf: ppf->lpVtbl->Release(ppf); fail_psl: psl->lpVtbl->Release(psl); - fail_none: end_system_call(); OS_file_error(*file); + fail_none: end_blocking_system_call(); OS_file_error(*file); } DEFUN(POSIX::SYSTEM-INFO,) @@ -4062,14 +4083,14 @@ } STACK_(ifile) = physical_namestring(STACK_(ifile)); with_string_0w(STACK_(ifile), filename, { - begin_system_call(); + begin_blocking_system_call(); hres = StgOpenStorageExFunc(filename, ((npropwr||use_wpn)?STGM_READWRITE:STGM_READ) | STGM_SHARE_EXCLUSIVE, 4 /* STGFMT_ANY */, 0, NULL /*&stgOp*/, 0, &IID_IPropertySetStorage, (void **)&ppropsetstg); - end_system_call(); + end_blocking_system_call(); }); if (FAILED(hres)) { pushSTACK(STACK_(ifile)); @@ -4092,11 +4113,11 @@ pushSTACK(TheSubr(subr_self)->name); error(file_error,GETTEXT("~S: invalid property set specifier ~S")); } - begin_system_call(); + begin_blocking_system_call(); hres = ppropsetstg->lpVtbl->Open(ppropsetstg, fmtid, ((npropwr||use_wpn)?STGM_READWRITE:STGM_READ) | STGM_SHARE_EXCLUSIVE, &ppropstg); - end_system_call(); + end_blocking_system_call(); if (FAILED(hres)) { pushSTACK(safe_to_string(DecodeHRESULT(hres))); pushSTACK(STACK_(ifile+1)); @@ -4145,10 +4166,10 @@ error(error_condition,GETTEXT("~S: ReadMultiple error: ~S")); } if (npropwr > 0) { - begin_system_call(); + begin_blocking_system_call(); hres = ppropstg->lpVtbl->WriteMultiple(ppropstg,npropwr,pspecwr,pvarwr, initid); - end_system_call(); + end_blocking_system_call(); if(FAILED(hres)) { pushSTACK(safe_to_string(DecodeHRESULT(hres))); pushSTACK(TheSubr(subr_self)->name); @@ -4205,9 +4226,9 @@ with_string_0(STACK_1, GLO(pathname_encoding), pathz, { with_string_0(STACK_0, GLO(misc_encoding), modez, { FILE *fp; - begin_system_call(); + begin_blocking_system_call(); fp = fopen(pathz,modez); - end_system_call(); + end_blocking_system_call(); if (fp) STACK_0 = allocate_fpointer((FOREIGN)fp); else OS_error(); }); @@ -4219,9 +4240,9 @@ STACK_1 = check_sint(STACK_1); with_string_0(STACK_0, GLO(misc_encoding), modez, { FILE *fp; - begin_system_call(); + begin_blocking_system_call(); fp = fdopen(I_to_sint(STACK_1),modez); - end_system_call(); + end_blocking_system_call(); if (fp) STACK_0 = allocate_fpointer((FOREIGN)fp); else OS_error(); }); @@ -4234,22 +4255,22 @@ with_string_0(STACK_2, GLO(pathname_encoding), pathz, { with_string_0(STACK_1, GLO(misc_encoding), modez, { FILE *fp; - begin_system_call(); + begin_blocking_system_call(); fp = freopen(pathz,modez,(FILE*)TheFpointer(STACK_0)->fp_pointer); - end_system_call(); + end_blocking_system_call(); if (fp) TheFpointer(STACK_0)->fp_pointer = fp; else OS_error(); }); }); VALUES0; skipSTACK(3); } -#define FILE_FUNCTION(fun,finish) \ - int ret; \ - STACK_0 = check_fpointer(STACK_0,1); \ - begin_system_call(); \ - ret = fun((FILE*)TheFpointer(STACK_0)->fp_pointer); \ - end_system_call(); \ - finish; skipSTACK(1) +#define FILE_FUNCTION(fun,finish) \ + int ret; \ + STACK_0 = check_fpointer(STACK_0,1); \ + begin_blocking_system_call(); \ + ret = fun((FILE*)TheFpointer(STACK_0)->fp_pointer); \ + end_blocking_system_call(); \ + finish; skipSTACK(1) DEFUN(POSIX::FILENO, fp) { FILE_FUNCTION(fileno,{ if(ret==-1)OS_error(); VALUES1(sint_to_I(ret)); }); } DEFUN(POSIX::FEOF, fp) { FILE_FUNCTION(feof,VALUES_IF(ret)); } @@ -4261,22 +4282,22 @@ /* no fputs & fgets because they will mess with encodings &c */ DEFUN(POSIX::CLEARERR, fp) { STACK_0 = check_fpointer(STACK_0,1); - begin_system_call(); + begin_blocking_system_call(); clearerr((FILE*)TheFpointer(STACK_0)->fp_pointer); - end_system_call(); + end_blocking_system_call(); VALUES0; skipSTACK(1); } /* --- testing only! not exported! --- */ /* fgetc returns -1 on EOF instead of signaling an error. or signal?! */ DEFUN(POSIX::%FGETC, fp) { FILE_FUNCTION(fgetc,VALUES1(sint_to_I(ret))); } -#define FILE_FUNCTION2(fun) \ - int ret; \ - STACK_0 = check_fpointer(STACK_0,1); \ - STACK_1 = check_sint(STACK_1); \ - begin_system_call(); \ +#define FILE_FUNCTION2(fun) \ + int ret; \ + STACK_0 = check_fpointer(STACK_0,1); \ + STACK_1 = check_sint(STACK_1); \ + begin_blocking_system_call(); \ ret = fun(I_to_sint(STACK_1),(FILE*)TheFpointer(STACK_0)->fp_pointer); \ - end_system_call(); \ + end_blocking_system_call(); \ VALUES1(sint_to_I(ret)); skipSTACK(2) DEFUN(POSIX::%FPUTC, c fp) { FILE_FUNCTION2(fputc); } DEFUN(POSIX::%UNGETC, c fp) { FILE_FUNCTION2(ungetc); } ------------------------------ ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 31, Issue 48 ***************************************** |