*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
\f
+
+/* See stime.c for comments on why _POSIX_C_SOURCE is not always defined. */
#define _GNU_SOURCE /* ask glibc for everything */
-#ifndef __MINGW32__
-#define _POSIX_C_SOURCE 199506L /* for readdir_r elsewhere */
+#ifdef __hpux
+#define _POSIX_C_SOURCE 199506L /* for readdir_r */
#endif
#if HAVE_CONFIG_H
{
SCM ans = scm_c_make_vector (15, SCM_UNSPECIFIED);
- SCM_VECTOR_SET(ans, 0, scm_from_ulong (stat_temp->st_dev));
- SCM_VECTOR_SET(ans, 1, scm_from_ulong (stat_temp->st_ino));
- SCM_VECTOR_SET(ans, 2, scm_from_ulong (stat_temp->st_mode));
- SCM_VECTOR_SET(ans, 3, scm_from_ulong (stat_temp->st_nlink));
- SCM_VECTOR_SET(ans, 4, scm_from_ulong (stat_temp->st_uid));
- SCM_VECTOR_SET(ans, 5, scm_from_ulong (stat_temp->st_gid));
+ SCM_SIMPLE_VECTOR_SET(ans, 0, scm_from_ulong (stat_temp->st_dev));
+ SCM_SIMPLE_VECTOR_SET(ans, 1, scm_from_ulong (stat_temp->st_ino));
+ SCM_SIMPLE_VECTOR_SET(ans, 2, scm_from_ulong (stat_temp->st_mode));
+ SCM_SIMPLE_VECTOR_SET(ans, 3, scm_from_ulong (stat_temp->st_nlink));
+ SCM_SIMPLE_VECTOR_SET(ans, 4, scm_from_ulong (stat_temp->st_uid));
+ SCM_SIMPLE_VECTOR_SET(ans, 5, scm_from_ulong (stat_temp->st_gid));
#ifdef HAVE_STRUCT_STAT_ST_RDEV
- SCM_VECTOR_SET(ans, 6, scm_from_ulong (stat_temp->st_rdev));
+ SCM_SIMPLE_VECTOR_SET(ans, 6, scm_from_ulong (stat_temp->st_rdev));
#else
- SCM_VECTOR_SET(ans, 6, SCM_BOOL_F);
+ SCM_SIMPLE_VECTOR_SET(ans, 6, SCM_BOOL_F);
#endif
- SCM_VECTOR_SET(ans, 7, scm_from_ulong (stat_temp->st_size));
- SCM_VECTOR_SET(ans, 8, scm_from_ulong (stat_temp->st_atime));
- SCM_VECTOR_SET(ans, 9, scm_from_ulong (stat_temp->st_mtime));
- SCM_VECTOR_SET(ans, 10, scm_from_ulong (stat_temp->st_ctime));
+ SCM_SIMPLE_VECTOR_SET(ans, 7, scm_from_ulong (stat_temp->st_size));
+ SCM_SIMPLE_VECTOR_SET(ans, 8, scm_from_ulong (stat_temp->st_atime));
+ SCM_SIMPLE_VECTOR_SET(ans, 9, scm_from_ulong (stat_temp->st_mtime));
+ SCM_SIMPLE_VECTOR_SET(ans, 10, scm_from_ulong (stat_temp->st_ctime));
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
- SCM_VECTOR_SET(ans, 11, scm_from_ulong (stat_temp->st_blksize));
+ SCM_SIMPLE_VECTOR_SET(ans, 11, scm_from_ulong (stat_temp->st_blksize));
#else
- SCM_VECTOR_SET(ans, 11, scm_from_ulong (4096L));
+ SCM_SIMPLE_VECTOR_SET(ans, 11, scm_from_ulong (4096L));
#endif
#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
- SCM_VECTOR_SET(ans, 12, scm_from_ulong (stat_temp->st_blocks));
+ SCM_SIMPLE_VECTOR_SET(ans, 12, scm_from_ulong (stat_temp->st_blocks));
#else
- SCM_VECTOR_SET(ans, 12, SCM_BOOL_F);
+ SCM_SIMPLE_VECTOR_SET(ans, 12, SCM_BOOL_F);
#endif
{
int mode = stat_temp->st_mode;
if (S_ISREG (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_regular);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_regular);
else if (S_ISDIR (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_directory);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_directory);
#ifdef HAVE_S_ISLNK
else if (S_ISLNK (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_symlink);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_symlink);
#endif
else if (S_ISBLK (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_block_special);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_block_special);
else if (S_ISCHR (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_char_special);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_char_special);
else if (S_ISFIFO (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_fifo);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_fifo);
#ifdef S_ISSOCK
else if (S_ISSOCK (mode))
- SCM_VECTOR_SET(ans, 13, scm_sym_sock);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_sock);
#endif
else
- SCM_VECTOR_SET(ans, 13, scm_sym_unknown);
+ SCM_SIMPLE_VECTOR_SET(ans, 13, scm_sym_unknown);
- SCM_VECTOR_SET(ans, 14, scm_from_int ((~S_IFMT) & mode));
+ SCM_SIMPLE_VECTOR_SET(ans, 14, scm_from_int ((~S_IFMT) & mode));
/* the layout of the bits in ve[14] is intended to be portable.
If there are systems that don't follow the usual convention,
tmp <<= 1;
if (S_IXOTH & mode) tmp += 1;
- SCM_VECTOR_SET(ans, 14, scm_from_int (tmp));
+ SCM_SIMPLE_VECTOR_SET(ans, 14, scm_from_int (tmp));
*/
}
if (!SCM_DIR_OPEN_P (exp))
scm_puts ("closed: ", port);
scm_puts ("directory stream ", port);
- scm_intprint (SCM_CELL_WORD_1 (exp), 16, port);
+ scm_uintprint (SCM_CELL_WORD_1 (exp), 16, port);
scm_putc ('>', port);
return 1;
}
{
int max_fd = 0;
- if (SCM_VECTORP (list_or_vec))
+ if (scm_is_simple_vector (list_or_vec))
{
- int i = SCM_VECTOR_LENGTH (list_or_vec);
- SCM const *ve = SCM_VELTS (list_or_vec);
+ int i = SCM_SIMPLE_VECTOR_LENGTH (list_or_vec);
while (--i >= 0)
{
- int fd = set_element (set, ports_ready, ve[i], pos);
+ int fd = set_element (set, ports_ready,
+ SCM_SIMPLE_VECTOR_REF (list_or_vec, i), pos);
if (fd > max_fd)
max_fd = fd;
{
SCM answer_list = ports_ready;
- if (SCM_VECTORP (list_or_vec))
+ if (scm_is_simple_vector (list_or_vec))
{
- int i = SCM_VECTOR_LENGTH (list_or_vec);
- SCM const *ve = SCM_VELTS (list_or_vec);
+ int i = SCM_SIMPLE_VECTOR_LENGTH (list_or_vec);
while (--i >= 0)
{
- answer_list = get_element (set, ve[i], answer_list);
+ answer_list = get_element (set,
+ SCM_SIMPLE_VECTOR_REF (list_or_vec, i),
+ answer_list);
}
return scm_vector (answer_list);
}
SCM write_ports_ready = SCM_EOL;
int max_fd;
- if (SCM_VECTORP (reads))
+ if (scm_is_simple_vector (reads))
{
- read_count = SCM_VECTOR_LENGTH (reads);
+ read_count = SCM_SIMPLE_VECTOR_LENGTH (reads);
}
else
{
read_count = scm_ilength (reads);
SCM_ASSERT (read_count >= 0, reads, SCM_ARG1, FUNC_NAME);
}
- if (SCM_VECTORP (writes))
+ if (scm_is_simple_vector (writes))
{
- write_count = SCM_VECTOR_LENGTH (writes);
+ write_count = SCM_SIMPLE_VECTOR_LENGTH (writes);
}
else
{
write_count = scm_ilength (writes);
SCM_ASSERT (write_count >= 0, writes, SCM_ARG2, FUNC_NAME);
}
- if (SCM_VECTORP (excepts))
+ if (scm_is_simple_vector (excepts))
{
- except_count = SCM_VECTOR_LENGTH (excepts);
+ except_count = SCM_SIMPLE_VECTOR_LENGTH (excepts);
}
else
{
/* if there's a port with a ready buffer, don't block, just
check for ready file descriptors. */
- if (!SCM_NULLP (read_ports_ready) || !SCM_NULLP (write_ports_ready))
+ if (!scm_is_null (read_ports_ready) || !scm_is_null (write_ports_ready))
{
timeout.tv_sec = 0;
timeout.tv_usec = 0;
}
{
- int rv = scm_internal_select (max_fd + 1,
- &read_set, &write_set, &except_set,
- time_ptr);
+ int rv = scm_std_select (max_fd + 1,
+ &read_set, &write_set, &except_set,
+ time_ptr);
if (rv < 0)
SCM_SYSERROR;
}