dnl ----------------------------------------------------------------
SXE_CHECK_BASIC_FUNS
-AC_CHECK_FUNCS([alarm cbrt closedir dup2 eaccess endpwent floor fmod fpathconf frexp fsync ftime ftruncate getaddrinfo getcwd gethostbyname gethostname getnameinfo getpagesize getrlimit gettimeofday getwd isascii link logb lrand48 matherr memchr memmove memset mkdir mktime munmap perror poll pow putenv random re_comp readlink regcomp rename res_init rint rmdir select setitimer setlocale setpgid setsid sigblock sighold sigprocmask snprintf socket sqrt stpcpy strcasecmp strchr strdup strerror strlwr strrchr strspn strtol strupr symlink tzset ulimit umask uname usleep utime vlimit vsnprintf waitpid wcscmp wcslen])
+AC_CHECK_FUNCS([alarm cbrt closedir dup2 eaccess endpwent floor fmod fpathconf frexp fsync ftime ftruncate getaddrinfo getcwd gethostbyname gethostname getnameinfo getpagesize getrlimit gettimeofday getwd isascii isatty link logb lrand48 matherr memchr memmove memset mkdir mktime munmap perror poll pow putenv random re_comp readlink regcomp rename res_init rint rmdir select setitimer setlocale setpgid setsid sigblock sighold sigprocmask snprintf socket sqrt stpcpy strncpy strncat strcasecmp strchr strdup strerror strlwr strrchr strspn strtol strupr symlink ttyname tzset ulimit umask uname usleep utime vlimit vsnprintf waitpid wcscmp wcslen])
+
+AS_IF([test "$have_isatty" = "yes"],
+ AC_DEFINE([HAVE_ISATTY], [1], [isatty is available]))
+AS_IF([test "$have_ttyname" = "yes"],
+ AC_DEFINE([HAVE_TTYNAME], [1], [ttyname is available]))
## combines all these time structures and funs
Dynarr_declare(Extbyte_dynarr *);
} Extbyte_dynarr_dynarr;
-static Extbyte_dynarr_dynarr *conversion_out_dynarr_list;
-static Bufbyte_dynarr_dynarr *conversion_in_dynarr_list;
+static Extbyte_dynarr_dynarr *conversion_out_dynarr_list = NULL;
+static Bufbyte_dynarr_dynarr *conversion_in_dynarr_list = NULL;
static int dfc_convert_to_external_format_in_use;
static int dfc_convert_to_internal_format_in_use;
dfc_conversion_data * sink)
{
int count = specpdl_depth();
- Extbyte_dynarr *conversion_out_dynarr;
+ Extbyte_dynarr *conversion_out_dynarr = NULL;
type_checking_assert
(((source_type == DFC_TYPE_DATA) ||
record_unwind_protect(dfc_convert_to_external_format_reset_in_use,
make_int(dfc_convert_to_external_format_in_use));
+ assert(conversion_out_dynarr_list != NULL);
if (Dynarr_length(conversion_out_dynarr_list) <=
dfc_convert_to_external_format_in_use)
Dynarr_add(conversion_out_dynarr_list, Dynarr_new(Extbyte));
dfc_conversion_data * sink)
{
int count = specpdl_depth();
- Bufbyte_dynarr *conversion_in_dynarr;
+ Bufbyte_dynarr *conversion_in_dynarr = NULL;
type_checking_assert
((source_type == DFC_TYPE_DATA ||
record_unwind_protect(dfc_convert_to_internal_format_reset_in_use,
make_int(dfc_convert_to_internal_format_in_use));
+ assert(conversion_in_dynarr_list != NULL);
if (Dynarr_length(conversion_in_dynarr_list) <=
dfc_convert_to_internal_format_in_use)
Dynarr_add(conversion_in_dynarr_list, Dynarr_new(Bufbyte));
if (argmatch
(argv, argc, "-t", "--terminal", 4, &term, &skip_args)) {
int tdesc = -1;
+#ifdef HAVE_TTYNAME
+ stderr_out("Opening for terminal usage %s (current: %s)\n", term, ttyname(0));
+#else
+ stderr_out("Opening for terminal usage %s\n", term, ttyname(0));
+#endif
+#ifdef HAVE_DUP2
+ tdesc = raw_open(term, O_RDWR | OPEN_BINARY, 2);
+ if (tdesc < 0)
+ fatal("%s: %s", term, strerror(errno));
+ /* Request dup into fd 0 */
+ if ( dup2(tdesc,0) < 0 )
+ fatal("%s: %s", term, strerror(errno));
+ stderr_out("Dup(0) ok\n");
+ /* Requesr dup into fd 1 */
+ if ( dup2(tdesc,1) < 0 )
+ fatal("%s: %s", term, strerror(errno));
+ close(tdesc);
+#else
close(0);
close(1);
- tdesc = open(term, O_RDWR | OPEN_BINARY, 2);
+ tdesc = raw_open(term, O_RDWR | OPEN_BINARY, 2);
if (tdesc < 0)
fatal("%s: %s", term, strerror(errno));
assert(tdesc==0);
fatal("dup failed %s: %s", term, strerror(errno));
}
assert(tdesc==1);
+#endif
+#ifdef HAVE_ISATTY
if (!isatty(0)) {
fatal("%s: not a tty", term);
}
-#if 0
- stderr_out("Using %s", ttyname(0));
#endif
- stderr_out("Using %s", term);
- inhibit_window_system = 1; /* -t => -nw */
+#ifdef HAVE_TTYNAME
+ stderr_out("Using tty %s\n", ttyname(0));
+#else
+ stderr_out("Using %tty s\n", term);
+#endif
+ inhibit_window_system = 1; /* -t => -nw
+ * */
}
}
void grow_specpdl(EMACS_INT reserved)
{
EMACS_INT size_needed = specpdl_depth() + reserved;
+ if (specpdl_size == 0)
+ specpdl_size = 1;
if (size_needed >= max_specpdl_size) {
if (max_specpdl_size < min_max_specpdl_size)
max_specpdl_size = min_max_specpdl_size;
Jamie's home page (http://www.jwz.org/worse-is-better.html). */
#ifdef ENCAPSULATE_OPEN
+
+int raw_open(const char *path, int oflag, ...)
+{
+ int mode;
+ va_list ap;
+ char *pout;
+
+ va_start(ap, oflag);
+ mode = va_arg(ap, int);
+ va_end(ap);
+ return open(pout, oflag, mode);
+}
+
int sys_open(const char *path, int oflag, ...)
{
int mode;
#ifdef ENCAPSULATE_OPEN
int sys_open(const char *, int, ...);
+int raw_open(const char *, int, ...);
#endif
#if defined (ENCAPSULATE_OPEN) && !defined (DONT_ENCAPSULATE)
# undef open
#endif
#if !defined (ENCAPSULATE_OPEN) && defined (DONT_ENCAPSULATE)
# define sys_open open
+# define raw_open open
#endif
#ifdef ENCAPSULATE_CLOSE