add: return do_directory_list(1, argc, argv);
context: static Scheme_Object *directory_list(int argc, Scheme_Object *argv[]){#if !defined(NO_READDIR) || defined(USE_MAC_FILE_TOOLBOX) || defined(USE_FINDFIRST)  char *filename;  Scheme_Object * volatile first = scheme_null, * volatile last = NULL, *n, *elem;#endif#ifndef NO_READDIR  DIR *dir;  int nlen;  struct dirent *e;#endif#ifdef USE_FINDFIRST  char *pattern;  int len;  FF_HANDLE_TYPE hfile;  FF_TYPE info;#endif#ifdef USE_MAC_FILE_TOOLBOX  CInfoPBRec pbrec;  char buf[256];  FSSpec dir;  short find_position = 0;#else  volatile int counter = 0;#endif  if (argc && !SCHEME_PATH_STRINGP(argv[0]))    scheme_wrong_type("directory-list", SCHEME_PATH_STRING_STR, 0, argc, argv);#if defined(NO_READDIR) && !defined(USE_MAC_FILE_TOOLBOX) && !defined(USE_FINDFIRST)  return scheme_null;#else#ifndef USE_MAC_FILE_TOOLBOX  if (argc) {    Scheme_Object *path = argv[0];# ifdef USE_FINDFIRST    while (1) {# endif      filename = do_expand_filename(path, NULL, 0, 				    "directory-list", 				    NULL, 1, 259 - 4 /* leave room for \*.* in Windows */, 				    SCHEME_GUARD_FILE_READ);#ifdef USE_FINDFIRST      /* Eliminate "." and "..": */      if (SAME_OBJ(path, argv[0])) {	Scheme_Object *old;	old = scheme_make_path(filename);	path = do_simplify_path(old, scheme_null, 0, 1, 0);	if (SAME_OBJ(path, old))	  break;      } else	break;    }#endif  } else {    filename = SCHEME_PATH_VAL(CURRENT_WD());    scheme_security_check_file("directory-list", NULL, SCHEME_GUARD_FILE_EXISTS);    scheme_security_check_file("directory-list", filename, SCHEME_GUARD_FILE_READ);  }  if (filename && !scheme_directory_exists(filename))    scheme_raise_exn(MZEXN_FAIL_FILESYSTEM,		     "directory-list: could not open \"%q\"",		     filename);#endif#ifdef USE_MAC_FILE_TOOLBOX  if (argc) {    Scheme_Object *bs;    bs = TO_PATH(argv[0]);    bs = BYTE_PATH(bs);    filename = SCHEME_PATH_VAL(bs);    if (has_null(filename, SCHEME_PATH_LEN(bs)))      raise_null_error("directory-list", argv[0], "");  } else {    filename = SCHEME_PATH_VAL(CURRENT_WD());    scheme_security_check_file("directory-list", NULL, SCHEME_GUARD_FILE_EXISTS);  }  scheme_security_check_file("directory-list", filename, SCHEME_GUARD_FILE_READ);  if (!find_mac_file(filename, 0, &dir, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0)) {    if (argc) {      scheme_raise_exn(MZEXN_FAIL_FILESYSTEM,		       "directory-list: could not open \"%q\"",		       filename);    }    return scheme_null;  }    while (1) {    pbrec.hFileInfo.ioVRefNum = dir.vRefNum;    pbrec.hFileInfo.ioDirID = dir.parID;    pbrec.hFileInfo.ioFDirIndex = find_position + 1;    pbrec.hFileInfo.ioNamePtr = (unsigned char *)buf;    if (PBGetCatInfo(&pbrec, 0) || !*buf)      break;        find_position++;    if (!(find_position & 0x15)) {      scheme_thread_block(0);      scheme_current_thread->ran_some = 1;    }        n = scheme_make_sized_offset_path(buf, 1, buf[0], 1);    elem = scheme_make_pair(n, scheme_null);    if (last)      SCHEME_CDR(last) = elem;    else      first = elem;    last = elem;  }    return first;#else#ifdef USE_FINDFIRST  if (!filename)    pattern = "*.*";  else {    char *nf;    int is_unc = 0, d, nd;    len = strlen(filename);    if ((len > 1) && IS_A_SEP(filename[0]) && check_dos_slashslash_drive(filename, 0, len, NULL, 0, 0))      is_unc = 1;    nf = scheme_normal_path_seps(filename, &len, 0);    pattern = (char *)scheme_malloc_atomic(len + 14);        if ((scheme_stupid_windows_machine > 0)	|| check_dos_slashslash_qm(filename, len, NULL, NULL, NULL)) {      d = 0;      nd = 0;    } else {      pattern[0] = '\\';      pattern[1] = '\\';      pattern[2] = '?';      pattern[3] = '\\';      if (is_unc) {	pattern[4] = 'U';	pattern[5] = 'N';	pattern[6] = 'C';	pattern[7] = '\\';	d = 8;	nd = 2;      } else {	d = 4;	nd = 0;      }    }    memcpy(pattern + d, nf + nd, len - nd);    len += (d - nd);    if (len && !IS_A_SEP(pattern[len - 1]))      pattern[len++] = '\\';          memcpy(pattern + len, "*.*", 4);  }  hfile = FIND_FIRST(WIDE_PATH(pattern), &info);  if (FIND_FAILED(hfile))    return scheme_null;  do {    if ((GET_FF_NAME(info)[0] == '.')	&& (!GET_FF_NAME(info)[1] || ((GET_FF_NAME(info)[1] == '.')				      && !GET_FF_NAME(info)[2]))) {      /* skip . and .. */    } else {      n = make_protected_path(NARROW_PATH(info.cFileName));      elem = scheme_make_pair(n, scheme_null);      if (last)	SCHEME_CDR(last) = elem;      else	first = elem;      last = elem;    }    counter++;    if (!(counter & 0x15)) {      BEGIN_ESCAPEABLE(FIND_CLOSE, hfile);      scheme_thread_block(0);      END_ESCAPEABLE();      scheme_current_thread->ran_some = 1;    }  } while (FIND_NEXT(hfile, &info));    FIND_CLOSE(hfile);  return first;#else    dir = opendir(filename ? filename : ".");  if (!dir)    return scheme_null;    while ((e = readdir(dir))) {#ifdef DIRENT_NO_NAMLEN    nlen = strlen(e->d_name);#else    nlen = e->d_namlen;#endif#if defined(UNIX_FILE_SYSTEM) || defined(DOS_FILE_SYSTEM)    if (nlen == 1 && e->d_name[0] == '.')      continue;    if (nlen == 2 && e->d_name[0] == '.' && e->d_name[1] == '.')      continue;#endif    n = scheme_make_sized_path(e->d_name, nlen, 1);    elem = scheme_make_pair(n, scheme_null);    if (last)      SCHEME_CDR(last) = elem;    else      first = elem;    last = elem;    counter++;    if (!(counter & 0xF)) {      BEGIN_ESCAPEABLE(closedir, dir);      scheme_thread_block(0);      END_ESCAPEABLE();      scheme_current_thread->ran_some = 1;    }  }    closedir(dir);  return first;#endif#endif#endif}