diff --git a/src/s_main.c.orig b/src/s_main.c.orig
deleted file mode 100644
index 52795cfef981c9b8d6acb5a48e07527587759895..0000000000000000000000000000000000000000
--- a/src/s_main.c.orig
+++ /dev/null
@@ -1,1013 +0,0 @@
-/* Copyright (c) 1997-1999 Miller Puckette and others.
-* For information on usage and redistribution, and for a DISCLAIMER OF ALL
-* WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
-
-#include "m_pd.h"
-#include "m_imp.h"
-#include "s_stuff.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <limits.h>
-#include <string.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <stdlib.h>
-
-#ifdef UNISTD
-#include <unistd.h>
-#endif
-#ifdef MSW
-#include <io.h>
-#include <windows.h>
-#include <winbase.h>
-#endif
-
-char *pd_version;
-char pd_compiletime[] = __TIME__;
-char pd_compiledate[] = __DATE__;
-
-void pd_init(void);
-int sys_argparse(int argc, char **argv);
-void sys_findprogdir(char *progname);
-int sys_startgui(const char *guipath);
-int sys_rcfile(void);
-int m_mainloop(void);
-void sys_addhelppath(char *p);
-#ifdef USEAPI_ALSA
-void alsa_adddev(char *name);
-#endif
-
-int sys_debuglevel;
-int sys_verbose;
-int sys_noloadbang;
-int sys_nogui;
-int sys_hipriority = -1;    /* -1 = don't care; 0 = no; 1 = yes */
-int sys_guisetportnumber;   /* if started from the GUI, this is the port # */
-int sys_nosleep = 0;  /* skip all "sleep" calls and spin instead */
-
-char *sys_guicmd;
-t_symbol *sys_libdir;
-static t_symbol *sys_guidir;
-static t_namelist *sys_openlist;
-static t_namelist *sys_messagelist;
-static int sys_version;
-int sys_oldtclversion;      /* hack to warn g_rtext.c about old text sel */
-
-int sys_nmidiout = -1;
-int sys_nmidiin = -1;
-int sys_midiindevlist[MAXMIDIINDEV] = {1};
-int sys_midioutdevlist[MAXMIDIOUTDEV] = {1};
-
-char sys_font[100] = 
-#ifdef MSW
-    "Courier";
-#else
-    "Courier";
-#endif
-char sys_fontweight[] = "bold  "; /* currently only used for iemguis */
-static int sys_main_srate;
-static int sys_main_advance;
-static int sys_main_callback;
-static int sys_listplease;
-
-int sys_externalschedlib;
-char sys_externalschedlibname[MAXPDSTRING];
-int sys_extraflags;
-char sys_extraflagsstring[MAXPDSTRING];
-
-
-    /* here the "-1" counts signify that the corresponding vector hasn't been
-    specified in command line arguments; sys_set_audio_settings will detect it
-    and fill things in. */
-static int sys_nsoundin = -1;
-static int sys_nsoundout = -1;
-static int sys_soundindevlist[MAXAUDIOINDEV];
-static int sys_soundoutdevlist[MAXAUDIOOUTDEV];
-
-static int sys_nchin = -1;
-static int sys_nchout = -1;
-static int sys_chinlist[MAXAUDIOINDEV];
-static int sys_choutlist[MAXAUDIOOUTDEV];
-
-t_sample* get_sys_soundout() { return sys_soundout; }
-t_sample* get_sys_soundin() { return sys_soundin; }
-int* get_sys_main_advance() { return &sys_main_advance; }
-double* get_sys_time_per_dsp_tick() { return &sys_time_per_dsp_tick; }
-int* get_sys_schedblocksize() { return &sys_schedblocksize; }
-double* get_sys_time() { return &sys_time; }
-t_float* get_sys_dacsr() { return &sys_dacsr; }
-int* get_sys_sleepgrain() { return &sys_sleepgrain; }
-int* get_sys_schedadvance() { return &sys_schedadvance; }
-
-typedef struct _fontinfo
-{
-    int fi_fontsize;
-    int fi_maxwidth;
-    int fi_maxheight;
-    int fi_hostfontsize;
-    int fi_width;
-    int fi_height;
-} t_fontinfo;
-
-    /* these give the nominal point size and maximum height of the characters
-    in the six fonts.  */
-
-static t_fontinfo sys_fontlist[] = {
-    {8, 6, 10, 0, 0, 0}, {10, 7, 13, 0, 0, 0}, {12, 9, 16, 0, 0, 0},
-    {16, 10, 20, 0, 0, 0}, {24, 15, 25, 0, 0, 0}, {36, 25, 45, 0, 0, 0}};
-#define NFONT (sizeof(sys_fontlist)/sizeof(*sys_fontlist))
-
-/* here are the actual font size structs on msp's systems:
-MSW:
-font 8 5 9 8 5 11
-font 10 7 13 10 6 13
-font 12 9 16 14 8 16
-font 16 10 20 16 10 18
-font 24 15 25 16 10 18
-font 36 25 42 36 22 41
-
-linux:
-font 8 5 9 8 5 9
-font 10 7 13 12 7 13
-font 12 9 16 14 9 15
-font 16 10 20 16 10 19
-font 24 15 25 24 15 24
-font 36 25 42 36 22 41
-*/
-
-static t_fontinfo *sys_findfont(int fontsize)
-{
-    unsigned int i;
-    t_fontinfo *fi;
-    for (i = 0, fi = sys_fontlist; i < (NFONT-1); i++, fi++)
-        if (fontsize < fi[1].fi_fontsize) return (fi);
-    return (sys_fontlist + (NFONT-1));
-}
-
-int sys_nearestfontsize(int fontsize)
-{
-    return (sys_findfont(fontsize)->fi_fontsize);
-}
-
-int sys_hostfontsize(int fontsize)
-{
-    return (sys_findfont(fontsize)->fi_hostfontsize);
-}
-
-int sys_fontwidth(int fontsize)
-{
-    return (sys_findfont(fontsize)->fi_width);
-}
-
-int sys_fontheight(int fontsize)
-{
-    return (sys_findfont(fontsize)->fi_height);
-}
-
-int sys_defaultfont;
-#define DEFAULTFONT 10
-
-static void openit(const char *dirname, const char *filename)
-{
-    char dirbuf[MAXPDSTRING], *nameptr;
-    int fd = open_via_path(dirname, filename, "", dirbuf, &nameptr,
-        MAXPDSTRING, 0);
-    if (fd >= 0)
-    {
-        close (fd);
-        glob_evalfile(0, gensym(nameptr), gensym(dirbuf));
-    }
-    else
-        error("%s: can't open", filename);
-}
-
-/* this is called from the gui process.  The first argument is the cwd, and
-succeeding args give the widths and heights of known fonts.  We wait until 
-these are known to open files and send messages specified on the command line.
-We ask the GUI to specify the "cwd" in case we don't have a local OS to get it
-from; for instance we could be some kind of RT embedded system.  However, to
-really make this make sense we would have to implement
-open(), read(), etc, calls to be served somehow from the GUI too. */
-
-void glob_initfromgui(void *dummy, t_symbol *s, int argc, t_atom *argv)
-{
-    char *cwd = atom_getsymbolarg(0, argc, argv)->s_name;
-    t_namelist *nl;
-    unsigned int i;
-    int j;
-    int nhostfont = (argc-2)/3;
-    sys_oldtclversion = atom_getfloatarg(1, argc, argv);
-    if (argc != 2 + 3 * nhostfont) bug("glob_initfromgui");
-    for (i = 0; i < NFONT; i++)
-    {
-        int best = 0;
-        int wantheight = sys_fontlist[i].fi_maxheight;
-        int wantwidth = sys_fontlist[i].fi_maxwidth;
-        for (j = 1; j < nhostfont; j++)
-        {
-            if (atom_getintarg(3 * j + 4, argc, argv) <= wantheight &&
-                atom_getintarg(3 * j + 3, argc, argv) <= wantwidth)
-                    best = j;
-        }
-            /* best is now the host font index for the desired font index i. */
-        sys_fontlist[i].fi_hostfontsize =
-            atom_getintarg(3 * best + 2, argc, argv);
-        sys_fontlist[i].fi_width = atom_getintarg(3 * best + 3, argc, argv);
-        sys_fontlist[i].fi_height = atom_getintarg(3 * best + 4, argc, argv);
-    }
-#if 0
-    for (i = 0; i < 6; i++)
-        fprintf(stderr, "font (%d %d %d) -> (%d %d %d)\n",
-            sys_fontlist[i].fi_fontsize,
-            sys_fontlist[i].fi_maxwidth,
-            sys_fontlist[i].fi_maxheight,
-            sys_fontlist[i].fi_hostfontsize,
-            sys_fontlist[i].fi_width,
-            sys_fontlist[i].fi_height);
-#endif
-        /* load dynamic libraries specified with "-lib" args */
-    for  (nl = sys_externlist; nl; nl = nl->nl_next)
-        if (!sys_load_lib(0, nl->nl_string))
-            post("%s: can't load library", nl->nl_string);
-        /* open patches specifies with "-open" args */
-    for  (nl = sys_openlist; nl; nl = nl->nl_next)
-        openit(cwd, nl->nl_string);
-    namelist_free(sys_openlist);
-    sys_openlist = 0;
-        /* send messages specified with "-send" args */
-    for  (nl = sys_messagelist; nl; nl = nl->nl_next)
-    {
-        t_binbuf *b = binbuf_new();
-        binbuf_text(b, nl->nl_string, strlen(nl->nl_string));
-        binbuf_eval(b, 0, 0, 0);
-        binbuf_free(b);
-    }
-    namelist_free(sys_messagelist);
-    sys_messagelist = 0;
-}
-
-static void sys_afterargparse(void);
-
-static void pd_makeversion(void)
-{
-    char foo[100];
-    sprintf(foo,  "Pd version %d.%d-%d%s\n",PD_MAJOR_VERSION,
-        PD_MINOR_VERSION,PD_BUGFIX_VERSION,PD_TEST_VERSION);
-    pd_version = malloc(strlen(foo)+1);
-    strcpy(pd_version, foo);
-}
-
-/* this is called from main() in s_entry.c */
-int sys_main(int argc, char **argv)
-{
-    int i, noprefs;
-    sys_externalschedlib = 0;
-    sys_extraflags = 0;
-#ifdef PD_DEBUG
-    fprintf(stderr, "Pd: COMPILED FOR DEBUGGING\n");
-#endif
-    pd_init();                                  /* start the message system */
-    sys_findprogdir(argv[0]);                   /* set sys_progname, guipath */
-    for (i = noprefs = 0; i < argc; i++)        /* prescan args for noprefs */
-        if (!strcmp(argv[i], "-noprefs"))
-            noprefs = 1;
-    if (!noprefs)
-        sys_loadpreferences();                  /* load default settings */
-#ifndef MSW
-    sys_rcfile();                               /* parse the startup file */
-#endif
-    if (sys_argparse(argc-1, argv+1))           /* parse cmd line */
-        return (1);
-    sys_afterargparse();                    /* post-argparse settings */
-        /* build version string from defines in m_pd.h */
-    pd_makeversion();
-    if (sys_verbose || sys_version) fprintf(stderr, "%scompiled %s %s\n",
-        pd_version, pd_compiletime, pd_compiledate);
-    if (sys_version)    /* if we were just asked our version, exit here. */
-        return (0);
-    if (sys_startgui(sys_guidir->s_name))       /* start the gui */
-        return(1);
-    if (sys_externalschedlib)
-    {
-#ifdef MSW
-        typedef int (*t_externalschedlibmain)(char *);
-        t_externalschedlibmain externalmainfunc;
-        HINSTANCE ntdll;
-        char filename[MAXPDSTRING];
-
-        sprintf(filename, "%s.dll", sys_externalschedlibname);
-        sys_bashfilename(filename, filename);
-        ntdll = LoadLibrary(filename);
-        if (!ntdll)
-        {
-              post("%s: couldn't load external scheduler lib ", filename);
-              return (0);
-        }
-        externalmainfunc = (t_externalschedlibmain)GetProcAddress(ntdll,
-                                                                  "main");
-        return((*externalmainfunc)(sys_extraflagsstring));
-#else
-        return (0);
-#endif
-    }
-    else
-    {
-            /* open audio and MIDI */
-        sys_reopen_midi();
-        sys_reopen_audio();
-            /* run scheduler until it quits */
-        return (m_mainloop());
-    }
-}
-
-static char *(usagemessage[]) = {
-"usage: pd [-flags] [file]...\n",
-"\naudio configuration flags:\n",
-"-r <n>           -- specify sample rate\n",
-"-audioindev ...  -- audio in devices; e.g., \"1,3\" for first and third\n",
-"-audiooutdev ... -- audio out devices (same)\n",
-"-audiodev ...    -- specify input and output together\n",
-"-inchannels ...  -- audio input channels (by device, like \"2\" or \"16,8\")\n",
-"-outchannels ... -- number of audio out channels (same)\n",
-"-channels ...    -- specify both input and output channels\n",
-"-audiobuf <n>    -- specify size of audio buffer in msec\n",
-"-blocksize <n>   -- specify audio I/O block size in sample frames\n",
-"-sleepgrain <n>  -- specify number of milliseconds to sleep when idle\n",
-"-nodac           -- suppress audio output\n",
-"-noadc           -- suppress audio input\n",
-"-noaudio         -- suppress audio input and output (-nosound is synonym) \n",
-"-listdev         -- list audio and MIDI devices\n",
-
-#ifdef USEAPI_OSS
-"-oss             -- use OSS audio API\n",
-"-32bit           ----- allow 32 bit OSS audio (for RME Hammerfall)\n",
-#endif
-
-#ifdef USEAPI_ALSA
-"-alsa            -- use ALSA audio API\n",
-"-alsaadd <name>  -- add an ALSA device name to list\n",
-#endif
-
-#ifdef USEAPI_JACK
-"-jack            -- use JACK audio API\n",
-#endif
-
-#ifdef USEAPI_PORTAUDIO
-#ifdef MSW
-"-asio            -- use ASIO audio driver (via Portaudio)\n",
-"-pa              -- synonym for -asio\n",
-#else
-"-pa              -- use Portaudio API\n",
-#endif
-#endif
-
-#ifdef USEAPI_MMIO
-"-mmio            -- use MMIO audio API (default for Windows)\n",
-#endif
-"      (default audio API for this platform:  ", API_DEFSTRING, ")\n\n",
-
-"\nMIDI configuration flags:\n",
-"-midiindev ...   -- midi in device list; e.g., \"1,3\" for first and third\n",
-"-midioutdev ...  -- midi out device list, same format\n",
-"-mididev ...     -- specify -midioutdev and -midiindev together\n",
-"-nomidiin        -- suppress MIDI input\n",
-"-nomidiout       -- suppress MIDI output\n",
-"-nomidi          -- suppress MIDI input and output\n",
-#ifdef USEAPI_ALSA
-"-alsamidi        -- use ALSA midi API\n",
-#endif
-
-
-"\nother flags:\n",
-"-path <path>     -- add to file search path\n",
-"-nostdpath       -- don't search standard (\"extra\") directory\n",
-"-stdpath         -- search standard directory (true by default)\n",
-"-helppath <path> -- add to help file search path\n",
-"-open <file>     -- open file(s) on startup\n",
-"-lib <file>      -- load object library(s)\n",
-"-font-size <n>     -- specify default font size in points\n",
-"-font-face <name>  -- specify default font\n",
-"-font-weight <name>-- specify default font weight (normal or bold)\n",
-"-verbose         -- extra printout on startup and when searching for files\n",
-"-version         -- don't run Pd; just print out which version it is \n",
-"-d <n>           -- specify debug level\n",
-"-noloadbang      -- suppress all loadbangs\n",
-"-stderr          -- send printout to standard error instead of GUI\n",
-"-nogui           -- suppress starting the GUI\n",
-"-guiport <n>     -- connect to pre-existing GUI over port <n>\n",
-"-guicmd \"cmd...\" -- start alternatve GUI program (e.g., remote via ssh)\n",
-"-send \"msg...\"   -- send a message at startup, after patches are loaded\n",
-"-noprefs         -- suppress loading preferences on startup\n",
-#ifdef UNISTD
-"-rt or -realtime -- use real-time priority\n",
-"-nrt             -- don't use real-time priority\n",
-#endif
-"-nosleep         -- spin, don't sleep (may lower latency on multi-CPUs)\n",
-};
-
-static void sys_parsedevlist(int *np, int *vecp, int max, char *str)
-{
-    int n = 0;
-    while (n < max)
-    {
-        if (!*str) break;
-        else
-        {
-            char *endp;
-            vecp[n] = strtol(str, &endp, 10);
-            if (endp == str)
-                break;
-            n++;
-            if (!endp)
-                break;
-            str = endp + 1;
-        }
-    }
-    *np = n;
-}
-
-static int sys_getmultidevchannels(int n, int *devlist)
-{
-    int sum = 0;
-    if (n<0)return(-1);
-    if (n==0)return 0;
-    while(n--)sum+=*devlist++;
-    return sum;
-}
-
-
-    /* this routine tries to figure out where to find the auxilliary files
-    Pd will need to run.  This is either done by looking at the command line
-    invokation for Pd, or if that fails, by consulting the variable
-    INSTALL_PREFIX.  In MSW, we don't try to use INSTALL_PREFIX. */
-void sys_findprogdir(char *progname)
-{
-    char sbuf[MAXPDSTRING], sbuf2[MAXPDSTRING], *sp;
-    char *lastslash; 
-#ifdef UNISTD
-    struct stat statbuf;
-#endif
-
-    /* find out by what string Pd was invoked; put answer in "sbuf". */
-#ifdef MSW
-    GetModuleFileName(NULL, sbuf2, sizeof(sbuf2));
-    sbuf2[MAXPDSTRING-1] = 0;
-    sys_unbashfilename(sbuf2, sbuf);
-#endif /* MSW */
-#ifdef UNISTD
-    strncpy(sbuf, progname, MAXPDSTRING);
-    sbuf[MAXPDSTRING-1] = 0;
-#endif
-    lastslash = strrchr(sbuf, '/');
-    if (lastslash)
-    {
-            /* bash last slash to zero so that sbuf is directory pd was in,
-                e.g., ~/pd/bin */
-        *lastslash = 0; 
-            /* go back to the parent from there, e.g., ~/pd */
-        lastslash = strrchr(sbuf, '/');
-        if (lastslash)
-        {
-            strncpy(sbuf2, sbuf, lastslash-sbuf);
-            sbuf2[lastslash-sbuf] = 0;
-        }
-        else strcpy(sbuf2, "..");
-    }
-    else
-    {
-            /* no slashes found.  Try INSTALL_PREFIX. */
-#ifdef INSTALL_PREFIX
-        strcpy(sbuf2, INSTALL_PREFIX);
-#else
-        strcpy(sbuf2, ".");
-#endif
-    }
-        /* now we believe sbuf2 holds the parent directory of the directory
-        pd was found in.  We now want to infer the "lib" directory and the
-        "gui" directory.  In "simple" unix installations, the layout is
-            .../bin/pd
-            .../bin/pd-gui
-            .../doc
-        and in "complicated" unix installations, it's:
-            .../bin/pd
-            .../lib/pd/bin/pd-gui
-            .../lib/pd/doc
-        To decide which, we stat .../lib/pd; if that exists, we assume it's
-        the complicated layout.  In MSW, it's the "simple" layout, but
-        the gui program is straight wish80:
-            .../bin/pd
-            .../bin/wish80.exe
-            .../doc
-        */
-#ifdef MSW
-    sys_libdir = gensym(sbuf2);
-    sys_guidir = &s_;   /* in MSW the guipath just depends on the libdir */
-#else
-    strncpy(sbuf, sbuf2, MAXPDSTRING-30);
-    sbuf[MAXPDSTRING-30] = 0;
-    strcat(sbuf, "/lib/pd");
-    if (stat(sbuf, &statbuf) >= 0)
-    {
-            /* complicated layout: lib dir is the one we just stat-ed above */
-        sys_libdir = gensym(sbuf);
-            /* gui lives in .../lib/pd/bin */
-        strncpy(sbuf, sbuf2, MAXPDSTRING-30);
-        sbuf[MAXPDSTRING-30] = 0;
-        strcat(sbuf, "/lib/pd/bin");
-        sys_guidir = gensym(sbuf);
-    }
-    else
-    {
-            /* simple layout: lib dir is the parent */
-        sys_libdir = gensym(sbuf2);
-            /* gui lives in .../bin */
-        strncpy(sbuf, sbuf2, MAXPDSTRING-30);
-        sbuf[MAXPDSTRING-30] = 0;
-        strcat(sbuf, "/bin");
-        sys_guidir = gensym(sbuf);
-    }
-#endif
-}
-
-#ifdef MSW
-static int sys_mmio = 1;
-#else
-static int sys_mmio = 0;
-#endif
-
-int sys_argparse(int argc, char **argv)
-{
-    char sbuf[MAXPDSTRING];
-    int i;
-    while ((argc > 0) && **argv == '-')
-    {
-        if (!strcmp(*argv, "-r") && argc > 1 &&
-            sscanf(argv[1], "%d", &sys_main_srate) >= 1)
-        {
-            argc -= 2;
-            argv += 2;
-        }
-        else if (!strcmp(*argv, "-inchannels") && (argc > 1))
-        {
-            sys_parsedevlist(&sys_nchin,
-                sys_chinlist, MAXAUDIOINDEV, argv[1]);
-
-          if (!sys_nchin)
-              goto usage;
-
-          argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-outchannels") && (argc > 1))
-        {
-            sys_parsedevlist(&sys_nchout, sys_choutlist,
-                MAXAUDIOOUTDEV, argv[1]);
-
-          if (!sys_nchout)
-            goto usage;
-
-          argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-channels") && (argc > 1))
-        {
-            sys_parsedevlist(&sys_nchin, sys_chinlist,MAXAUDIOINDEV,
-                argv[1]);
-            sys_parsedevlist(&sys_nchout, sys_choutlist,MAXAUDIOOUTDEV,
-                argv[1]);
-
-            if (!sys_nchout)
-              goto usage;
-
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-soundbuf") || !strcmp(*argv, "-audiobuf") && (argc > 1))
-        {
-            sys_main_advance = atoi(argv[1]);
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-callback"))
-        {
-            sys_main_callback = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-blocksize"))
-        {
-            sys_setblocksize(atoi(argv[1]));
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-sleepgrain") && (argc > 1))
-        {
-            sys_sleepgrain = 1000 * atof(argv[1]);
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-nodac"))
-        {
-            sys_nsoundout=0;
-            sys_nchout = 0;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-noadc"))
-        {
-            sys_nsoundin=0;
-            sys_nchin = 0;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-nosound") || !strcmp(*argv, "-noaudio"))
-        {
-            sys_nsoundin=sys_nsoundout = 0;
-            sys_nchin = sys_nchout = 0;
-            argc--; argv++;
-        }
-#ifdef USEAPI_OSS
-        else if (!strcmp(*argv, "-oss"))
-        {
-            sys_set_audio_api(API_OSS);
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-32bit"))
-        {
-            sys_set_audio_api(API_OSS);
-            oss_set32bit();
-            argc--; argv++;
-        }
-#endif
-#ifdef USEAPI_ALSA
-        else if (!strcmp(*argv, "-alsa"))
-        {
-            sys_set_audio_api(API_ALSA);
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-alsaadd") && (argc > 1))
-        {
-            if (argc > 1)
-                alsa_adddev(argv[1]);
-            else goto usage;
-            argc -= 2; argv +=2;
-        }
-        else if (!strcmp(*argv, "-alsamidi"))
-        {
-          sys_set_midi_api(API_ALSA);
-            argc--; argv++;
-        }
-#endif
-#ifdef USEAPI_JACK
-        else if (!strcmp(*argv, "-jack"))
-        {
-            sys_set_audio_api(API_JACK);
-            argc--; argv++;
-        }
-#endif
-#ifdef USEAPI_PORTAUDIO
-        else if (!strcmp(*argv, "-pa") || !strcmp(*argv, "-portaudio")
-#ifdef MSW
-            || !strcmp(*argv, "-asio")
-#endif
-            )
-        {
-            sys_set_audio_api(API_PORTAUDIO);
-            sys_mmio = 0;
-            argc--; argv++;
-        }
-#endif
-#ifdef USEAPI_MMIO
-        else if (!strcmp(*argv, "-mmio"))
-        {
-            sys_set_audio_api(API_MMIO);
-            sys_mmio = 1;
-            argc--; argv++;
-        }
-#endif
-        else if (!strcmp(*argv, "-nomidiin"))
-        {
-            sys_nmidiin = 0;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-nomidiout"))
-        {
-            sys_nmidiout = 0;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-nomidi"))
-        {
-            sys_nmidiin = sys_nmidiout = 0;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-midiindev"))
-        {
-            sys_parsedevlist(&sys_nmidiin, sys_midiindevlist, MAXMIDIINDEV,
-                argv[1]);
-            if (!sys_nmidiin)
-                goto usage;
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-midioutdev") && (argc > 1))
-        {
-            sys_parsedevlist(&sys_nmidiout, sys_midioutdevlist, MAXMIDIOUTDEV,
-                argv[1]);
-            if (!sys_nmidiout)
-                goto usage;
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-mididev") && (argc > 1))
-        {
-            sys_parsedevlist(&sys_nmidiin, sys_midiindevlist, MAXMIDIINDEV,
-                argv[1]);
-            sys_parsedevlist(&sys_nmidiout, sys_midioutdevlist, MAXMIDIOUTDEV,
-                argv[1]);
-            if (!sys_nmidiout)
-                goto usage;
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-path") && (argc > 1))
-        {
-            sys_searchpath = namelist_append_files(sys_searchpath, argv[1]);
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-nostdpath"))
-        {
-            sys_usestdpath = 0;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-stdpath"))
-        {
-            sys_usestdpath = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-helppath"))
-        {
-            sys_helppath = namelist_append_files(sys_helppath, argv[1]);
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-open") && argc > 1)
-        {
-            sys_openlist = namelist_append_files(sys_openlist, argv[1]);
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-lib") && argc > 1)
-        {
-            sys_externlist = namelist_append_files(sys_externlist, argv[1]);
-            argc -= 2; argv += 2;
-        }
-        else if ((!strcmp(*argv, "-font-size") || !strcmp(*argv, "-font"))
-            && argc > 1)
-        {
-            sys_defaultfont = sys_nearestfontsize(atoi(argv[1]));
-            argc -= 2;
-            argv += 2;
-        }
-        else if ((!strcmp(*argv, "-font-face") || !strcmp(*argv, "-typeface"))
-            && argc > 1)
-        {
-            strncpy(sys_font,*(argv+1),sizeof(sys_font)-1);
-            sys_font[sizeof(sys_font)-1] = 0;
-            argc -= 2;
-            argv += 2;
-        }
-        else if (!strcmp(*argv, "-font-weight") && argc > 1)
-        {
-            strncpy(sys_fontweight,*(argv+1),sizeof(sys_fontweight)-1);
-            sys_fontweight[sizeof(sys_fontweight)-1] = 0;
-            argc -= 2;
-            argv += 2;
-        }
-        else if (!strcmp(*argv, "-verbose"))
-        {
-            sys_verbose++;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-version"))
-        {
-            sys_version = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-d") && argc > 1 &&
-            sscanf(argv[1], "%d", &sys_debuglevel) >= 1)
-        {
-            argc -= 2;
-            argv += 2;
-        }
-        else if (!strcmp(*argv, "-noloadbang"))
-        {
-            sys_noloadbang = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-nogui"))
-        {
-            sys_printtostderr = sys_nogui = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-guiport") && argc > 1 &&
-            sscanf(argv[1], "%d", &sys_guisetportnumber) >= 1)
-        {
-            argc -= 2;
-            argv += 2;
-        }
-        else if (!strcmp(*argv, "-stderr"))
-        {
-            sys_printtostderr = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-guicmd") && argc > 1)
-        {
-            sys_guicmd = argv[1];
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-send") && argc > 1)
-        {
-            sys_messagelist = namelist_append(sys_messagelist, argv[1], 1);
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-listdev"))
-        {
-            sys_listplease = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-schedlib"))
-        {
-            sys_externalschedlib = 1;
-            strncpy(sys_externalschedlibname, argv[1],
-                sizeof(sys_externalschedlibname) - 1);
-            argv += 2;
-            argc -= 2;
-        }
-        else if (!strcmp(*argv, "-extraflags"))
-        {
-            sys_extraflags = 1;
-            strncpy(sys_extraflagsstring, argv[1],
-                sizeof(sys_extraflagsstring) - 1);
-            argv += 2;
-            argc -= 2;
-        }
-#ifdef UNISTD
-        else if (!strcmp(*argv, "-rt") || !strcmp(*argv, "-realtime"))
-        {
-            sys_hipriority = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-nrt"))
-        {
-            sys_hipriority = 0;
-            argc--; argv++;
-        }
-#endif
-        else if (!strcmp(*argv, "-nosleep"))
-        {
-            sys_nosleep = 1;
-            argc--; argv++;
-        }
-        else if (!strcmp(*argv, "-soundindev") ||
-            !strcmp(*argv, "-audioindev"))
-        {
-            sys_parsedevlist(&sys_nsoundin, sys_soundindevlist,
-                MAXAUDIOINDEV, argv[1]);
-            if (!sys_nsoundin)
-                goto usage;
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-soundoutdev") ||
-            !strcmp(*argv, "-audiooutdev"))
-        {
-            sys_parsedevlist(&sys_nsoundout, sys_soundoutdevlist,
-                MAXAUDIOOUTDEV, argv[1]);
-            if (!sys_nsoundout)
-                goto usage;
-            argc -= 2; argv += 2;
-        }
-        else if ((!strcmp(*argv, "-sounddev") || !strcmp(*argv, "-audiodev"))
-                 && (argc > 1))
-        {
-            sys_parsedevlist(&sys_nsoundin, sys_soundindevlist,
-                MAXAUDIOINDEV, argv[1]);
-            sys_parsedevlist(&sys_nsoundout, sys_soundoutdevlist,
-                MAXAUDIOOUTDEV, argv[1]);
-            if (!sys_nsoundout)
-                goto usage;
-            argc -= 2; argv += 2;
-        }
-        else if (!strcmp(*argv, "-noprefs")) /* did this earlier */
-            argc--, argv++;
-        else
-        {
-            unsigned int i;
-        usage:
-            for (i = 0; i < sizeof(usagemessage)/sizeof(*usagemessage); i++)
-                fprintf(stderr, "%s", usagemessage[i]);
-            return (1);
-        }
-    }
-    if (!sys_defaultfont)
-        sys_defaultfont = DEFAULTFONT;
-    for (; argc > 0; argc--, argv++) 
-        sys_openlist = namelist_append_files(sys_openlist, *argv);
-
-
-    return (0);
-}
-
-int sys_getblksize(void)
-{
-    return (DEFDACBLKSIZE);
-}
-
-    /* stuff to do, once, after calling sys_argparse() -- which may itself
-    be called more than once (first from "settings, second from .pdrc, then
-    from command-line arguments */
-static void sys_afterargparse(void)
-{
-    char sbuf[MAXPDSTRING];
-    int i;
-    int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
-    int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
-    int nchindev, nchoutdev, rate, advance, callback;
-    int nmidiindev = 0, midiindev[MAXMIDIINDEV];
-    int nmidioutdev = 0, midioutdev[MAXMIDIOUTDEV];
-            /* add "extra" library to path */
-    strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30);
-    sbuf[MAXPDSTRING-30] = 0;
-    strcat(sbuf, "/extra");
-    sys_setextrapath(sbuf);
-            /* add "doc/5.reference" library to helppath */
-    strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30);
-    sbuf[MAXPDSTRING-30] = 0;
-    strcat(sbuf, "/doc/5.reference");
-    sys_helppath = namelist_append_files(sys_helppath, sbuf);
-        /* correct to make audio and MIDI device lists zero based.  On
-        MMIO, however, "1" really means the second device (the first one
-        is "mapper" which is was not included when the command args were
-        set up, so we leave it that way for compatibility. */
-    if (!sys_mmio)
-    {
-        for (i = 0; i < sys_nsoundin; i++)
-            sys_soundindevlist[i]--;
-        for (i = 0; i < sys_nsoundout; i++)
-            sys_soundoutdevlist[i]--;
-    }
-    for (i = 0; i < sys_nmidiin; i++)
-        sys_midiindevlist[i]--;
-    for (i = 0; i < sys_nmidiout; i++)
-        sys_midioutdevlist[i]--;
-    if (sys_listplease)
-        sys_listdevs();
-        
-            /* get the current audio parameters.  These are set
-            by the preferences mechanism (sys_loadpreferences()) or
-            else are the default.  Overwrite them with any results
-            of argument parsing, and store them again. */
-    sys_get_audio_params(&naudioindev, audioindev, chindev,
-        &naudiooutdev, audiooutdev, choutdev, &rate, &advance, &callback);
-    if (sys_nchin >= 0)
-    {
-        nchindev = sys_nchin;
-        for (i = 0; i < nchindev; i++)
-            chindev[i] = sys_chinlist[i];
-    }
-    else nchindev = naudioindev;
-    if (sys_nsoundin >= 0)
-    {
-        naudioindev = sys_nsoundin;
-        for (i = 0; i < naudioindev; i++)
-            audioindev[i] = sys_soundindevlist[i];
-    }
-    
-    if (sys_nchout >= 0)
-    {
-        nchoutdev = sys_nchout;
-        for (i = 0; i < nchoutdev; i++)
-            choutdev[i] = sys_choutlist[i];
-    }
-    else nchoutdev = naudiooutdev;
-    if (sys_nsoundout >= 0)
-    {
-        naudiooutdev = sys_nsoundout;
-        for (i = 0; i < naudiooutdev; i++)
-            audiooutdev[i] = sys_soundoutdevlist[i];
-    }
-    sys_get_midi_params(&nmidiindev, midiindev, &nmidioutdev, midioutdev);
-    if (sys_nmidiin >= 0)
-    {
-        post("sys_nmidiin %d, nmidiindev %d", sys_nmidiin, nmidiindev);
-        nmidiindev = sys_nmidiin;
-        for (i = 0; i < nmidiindev; i++)
-            midiindev[i] = sys_midiindevlist[i];
-    }
-    if (sys_nmidiout >= 0)
-    {
-        nmidioutdev = sys_nmidiout;
-        for (i = 0; i < nmidioutdev; i++)
-            midioutdev[i] = sys_midioutdevlist[i];
-    }
-    if (sys_main_advance)
-        advance = sys_main_advance;
-    if (sys_main_srate)
-        rate = sys_main_srate;
-    if (sys_main_callback)
-        callback = sys_main_callback;
-    sys_set_audio_settings(naudioindev, audioindev, nchindev, chindev,
-        naudiooutdev, audiooutdev, nchoutdev, choutdev, rate, advance, 
-        callback);
-    sys_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev, 0);
-}
-
-static void sys_addreferencepath(void)
-{
-    char sbuf[MAXPDSTRING];
-}
diff --git a/src/s_path.c.orig b/src/s_path.c.orig
deleted file mode 100644
index 0d9728619ee7688e25d2df60c4ef498011db555b..0000000000000000000000000000000000000000
--- a/src/s_path.c.orig
+++ /dev/null
@@ -1,580 +0,0 @@
-/* Copyright (c) 1999 Guenter Geiger and others.
-* For information on usage and redistribution, and for a DISCLAIMER OF ALL
-* WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
-
-/*
- * This file implements the loader for linux, which includes
- * a little bit of path handling.
- *
- * Generalized by MSP to provide an open_via_path function
- * and lists of files for all purposes.
- */ 
-
-/* #define DEBUG(x) x */
-#define DEBUG(x)
-
-#include <stdlib.h>
-#ifdef UNISTD
-#include <unistd.h>
-#include <sys/stat.h>
-#endif
-#ifdef MSW
-#include <io.h>
-#endif
-
-#include <string.h>
-#include "m_pd.h"
-#include "m_imp.h"
-#include "s_stuff.h"
-#include <stdio.h>
-#include <fcntl.h>
-#include <ctype.h>
-
-#ifdef _LARGEFILE64_SOURCE
-# define open  open64
-# define lseek lseek64
-# define fstat fstat64
-# define stat  stat64
-#endif
-
-t_namelist *sys_externlist;
-t_namelist *sys_searchpath;
-t_namelist *sys_helppath;
-
-    /* change '/' characters to the system's native file separator */
-void sys_bashfilename(const char *from, char *to)
-{
-    char c;
-    while (c = *from++)
-    {
-#ifdef MSW
-        if (c == '/') c = '\\';
-#endif
-        *to++ = c;
-    }
-    *to = 0;
-}
-
-    /* change the system's native file separator to '/' characters  */
-void sys_unbashfilename(const char *from, char *to)
-{
-    char c;
-    while (c = *from++)
-    {
-#ifdef MSW
-        if (c == '\\') c = '/';
-#endif
-        *to++ = c;
-    }
-    *to = 0;
-}
-
-/*******************  Utility functions used below ******************/
-
-/* copy until delimiter and return position after delimiter in string */
-/* if it was the last substring, return NULL */
-
-static const char* strtokcpy(char *to, const char *from, int delim)
-{
-    int size = 0;
-
-    while (from[size] != (char)delim && from[size] != '\0')
-        size++;
-
-    strncpy(to,from,size);
-    to[size] = '\0';
-    if (from[size] == '\0') return NULL;
-    if (size) return from+size+1;
-    else return NULL;
-}
-
-/* add a single item to a namelist.  If "allowdup" is true, duplicates
-may be added; othewise they're dropped.  */
-
-t_namelist *namelist_append(t_namelist *listwas, const char *s, int allowdup)
-{
-    t_namelist *nl, *nl2;
-    nl2 = (t_namelist *)(getbytes(sizeof(*nl)));
-    nl2->nl_next = 0;
-    nl2->nl_string = (char *)getbytes(strlen(s) + 1);
-    strcpy(nl2->nl_string, s);
-    sys_unbashfilename(nl2->nl_string, nl2->nl_string);
-    if (!listwas)
-        return (nl2);
-    else
-    {
-        for (nl = listwas; ;)
-        {
-            if (!allowdup && !strcmp(nl->nl_string, s))
-                return (listwas);
-            if (!nl->nl_next)
-                break;
-            nl = nl->nl_next;
-        }
-        nl->nl_next = nl2;
-    }
-    return (listwas);
-}
-
-/* add a colon-separated list of names to a namelist */
-
-#ifdef MSW
-#define SEPARATOR ';'   /* in MSW the natural separator is semicolon instead */
-#else
-#define SEPARATOR ':'
-#endif
-
-t_namelist *namelist_append_files(t_namelist *listwas, const char *s)
-{
-    const char *npos;
-    char temp[MAXPDSTRING];
-    t_namelist *nl = listwas, *rtn = listwas;
-    
-    npos = s;
-    do
-    {
-        npos = strtokcpy(temp, npos, SEPARATOR);
-        if (! *temp) continue;
-        nl = namelist_append(nl, temp, 0);
-    }
-        while (npos);
-    return (nl);
-}
-
-void namelist_free(t_namelist *listwas)
-{
-    t_namelist *nl, *nl2;
-    for (nl = listwas; nl; nl = nl2)
-    {
-        nl2 = nl->nl_next;
-        t_freebytes(nl->nl_string, strlen(nl->nl_string) + 1);
-        t_freebytes(nl, sizeof(*nl));
-    }
-}
-
-char *namelist_get(t_namelist *namelist, int n)
-{
-    int i;
-    t_namelist *nl;
-    for (i = 0, nl = namelist; i < n && nl; i++, nl = nl->nl_next)
-        ;
-    return (nl ? nl->nl_string : 0);
-}
-
-static t_namelist *pd_extrapath;
-
-int sys_usestdpath = 1;
-
-void sys_setextrapath(const char *p)
-{
-    namelist_free(pd_extrapath);
-    pd_extrapath = namelist_append(0, p, 0);
-}
-
-#ifdef MSW
-#define MSWOPENFLAG(bin) (bin ? _O_BINARY : _O_TEXT)
-#else
-#define MSWOPENFLAG(bin) 0
-#endif
-
-    /* try to open a file in the directory "dir", named "name""ext",
-    for reading.  "Name" may have slashes.  The directory is copied to
-    "dirresult" which must be at least "size" bytes.  "nameresult" is set
-    to point to the filename (copied elsewhere into the same buffer). 
-    The "bin" flag requests opening for binary (which only makes a difference
-    on Windows). */
-
-int sys_trytoopenone(const char *dir, const char *name, const char* ext,
-    char *dirresult, char **nameresult, unsigned int size, int bin)
-{
-    int fd;
-    if (strlen(dir) + strlen(name) + strlen(ext) + 4 > size)
-        return (-1);
-    strcpy(dirresult, dir);
-    if (*dirresult && dirresult[strlen(dirresult)-1] != '/')
-        strcat(dirresult, "/");
-    strcat(dirresult, name);
-    strcat(dirresult, ext);
-    sys_bashfilename(dirresult, dirresult);
-
-    DEBUG(post("looking for %s",dirresult));
-        /* see if we can open the file for reading */
-    if ((fd=open(dirresult,O_RDONLY | MSWOPENFLAG(bin))) >= 0)
-    {
-            /* in unix, further check that it's not a directory */
-#ifdef UNISTD
-        struct stat statbuf;
-        int ok =  ((fstat(fd, &statbuf) >= 0) &&
-            !S_ISDIR(statbuf.st_mode));
-        if (!ok)
-        {
-            if (sys_verbose) post("tried %s; stat failed or directory",
-                dirresult);
-            close (fd);
-            fd = -1;
-        }
-        else
-#endif
-        {
-            char *slash;
-            if (sys_verbose) post("tried %s and succeeded", dirresult);
-            sys_unbashfilename(dirresult, dirresult);
-            slash = strrchr(dirresult, '/');
-            if (slash)
-            {
-                *slash = 0;
-                *nameresult = slash + 1;
-            }
-            else *nameresult = dirresult;
-
-            return (fd);  
-        }
-    }
-    else
-    {
-        if (sys_verbose) post("tried %s and failed", dirresult);
-    }
-    return (-1);
-}
-
-    /* check if we were given an absolute pathname, if so try to open it
-    and return 1 to signal the caller to cancel any path searches */
-int sys_open_absolute(const char *name, const char* ext,
-    char *dirresult, char **nameresult, unsigned int size, int bin, int *fdp)
-{
-    if (name[0] == '/' 
-#ifdef MSW
-        || (name[1] == ':' && name[2] == '/')
-#endif
-            )
-    {
-        char dirbuf[MAXPDSTRING];
-        int dirlen = (strrchr(name, '/') - name);
-        if (dirlen > MAXPDSTRING-1) 
-            dirlen = MAXPDSTRING-1;
-        strncpy(dirbuf, name, dirlen);
-        dirbuf[dirlen] = 0;
-        *fdp = sys_trytoopenone(dirbuf, name+(dirlen+1), ext,
-            dirresult, nameresult, size, bin);
-        return (1);
-    }
-    else return (0);
-}
-
-/* search for a file in a specified directory, then along the globally
-defined search path, using ext as filename extension.  The
-fd is returned, the directory ends up in the "dirresult" which must be at
-least "size" bytes.  "nameresult" is set to point to the filename, which
-ends up in the same buffer as dirresult.  Exception:
-if the 'name' starts with a slash or a letter, colon, and slash in MSW,
-there is no search and instead we just try to open the file literally.  */
-
-/* see also canvas_open() which, in addition, searches down the
-canvas-specific path. */
-
-static int do_open_via_path(const char *dir, const char *name,
-    const char *ext, char *dirresult, char **nameresult, unsigned int size,
-    int bin, t_namelist *searchpath)
-{
-    t_namelist *nl;
-    int fd = -1;
-
-        /* first check if "name" is absolute (and if so, try to open) */
-    if (sys_open_absolute(name, ext, dirresult, nameresult, size, bin, &fd))
-        return (fd);
-    
-        /* otherwise "name" is relative; try the directory "dir" first. */
-    if ((fd = sys_trytoopenone(dir, name, ext,
-        dirresult, nameresult, size, bin)) >= 0)
-            return (fd);
-
-        /* next go through the search path */
-    for (nl = searchpath; nl; nl = nl->nl_next)
-        if ((fd = sys_trytoopenone(nl->nl_string, name, ext,
-            dirresult, nameresult, size, bin)) >= 0)
-                return (fd);
-
-        /* next look in "extra" */
-    if (sys_usestdpath &&
-        (fd = sys_trytoopenone(pd_extrapath->nl_string, name, ext,
-            dirresult, nameresult, size, bin)) >= 0)
-                return (fd);
-
-    *dirresult = 0;
-    *nameresult = dirresult;
-    return (-1);
-}
-
-    /* open via path, using the global search path. */
-int open_via_path(const char *dir, const char *name, const char *ext,
-    char *dirresult, char **nameresult, unsigned int size, int bin)
-{
-    return (do_open_via_path(dir, name, ext, dirresult, nameresult,
-        size, bin, sys_searchpath));
-}
-
-    /* Open a help file using the help search path.  We expect the ".pd"
-    suffix here, even though we have to tear it back off for one of the
-    search attempts. */
-void open_via_helppath(const char *name, const char *dir)
-{
-    char realname[MAXPDSTRING], dirbuf[MAXPDSTRING], *basename;
-        /* make up a silly "dir" if none is supplied */
-    const char *usedir = (*dir ? dir : "./");
-    int fd;
-
-        /* 1. "objectname-help.pd" */
-    strncpy(realname, name, MAXPDSTRING-10);
-    realname[MAXPDSTRING-10] = 0;
-    if (strlen(realname) > 3 && !strcmp(realname+strlen(realname)-3, ".pd"))
-        realname[strlen(realname)-3] = 0;
-    strcat(realname, "-help.pd");
-    if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, 
-        MAXPDSTRING, 0, sys_helppath)) >= 0)
-            goto gotone;
-
-        /* 2. "help-objectname.pd" */
-    strcpy(realname, "help-");
-    strncat(realname, name, MAXPDSTRING-10);
-    realname[MAXPDSTRING-1] = 0;
-    if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, 
-        MAXPDSTRING, 0, sys_helppath)) >= 0)
-            goto gotone;
-
-        /* 3. "objectname.pd" */
-    if ((fd = do_open_via_path(dir, name, "", dirbuf, &basename, 
-        MAXPDSTRING, 0, sys_helppath)) >= 0)
-            goto gotone;
-    post("sorry, couldn't find help patch for \"%s\"", name);
-    return;
-gotone:
-    close (fd);
-    glob_evalfile(0, gensym((char*)basename), gensym(dirbuf));
-}
-
-
-/* Startup file reading for linux and __APPLE__.  As of 0.38 this will be
-deprecated in favor of the "settings" mechanism */
-
-int sys_argparse(int argc, char **argv);
-
-#ifndef MSW
-
-#define STARTUPNAME ".pdrc"
-#define NUMARGS 1000
-
-int sys_rcfile(void)
-{
-    FILE* file;
-    int i;
-    int k;
-    int rcargc;
-    char* rcargv[NUMARGS];
-    char* buffer;
-    char  fname[MAXPDSTRING], buf[1000], *home = getenv("HOME");
-    int retval = 1; /* that's what we will return at the end; for now, let's think it'll be an error */
- 
-    /* initialize rc-arg-array so we can safely clean up at the end */
-    for (i = 1; i < NUMARGS-1; i++)
-      rcargv[i]=0;
-
-
-    /* parse a startup file */
-    
-    *fname = '\0'; 
-
-    strncat(fname, home? home : ".", MAXPDSTRING-10);
-    strcat(fname, "/");
-
-    strcat(fname, STARTUPNAME);
-
-    if (!(file = fopen(fname, "r")))
-        return 1;
-
-    post("reading startup file: %s", fname);
-
-    rcargv[0] = ".";    /* this no longer matters to sys_argparse() */
-
-    for (i = 1; i < NUMARGS-1; i++)
-    {
-        if (fscanf(file, "%999s", buf) < 0)
-            break;
-        buf[1000] = 0;
-        if (!(rcargv[i] = malloc(strlen(buf) + 1)))
-            goto cleanup;
-        strcpy(rcargv[i], buf);
-    }
-    if (i >= NUMARGS-1)
-        fprintf(stderr, "startup file too long; extra args dropped\n");
-    rcargv[i] = 0;
-
-    rcargc = i;
-
-    /* parse the options */
-
-    fclose(file);
-    if (sys_verbose)
-    {
-        if (rcargv)
-        {
-            post("startup args from RC file:");
-            for (i = 1; i < rcargc; i++)
-                post("%s", rcargv[i]);
-        }
-        else post("no RC file arguments found");
-    }
-    if (sys_argparse(rcargc-1, rcargv+1))
-    {
-        post("error parsing RC arguments");
-        goto cleanup;
-    }
-
-    retval=0; /* we made it without an error */
-
-
- cleanup: /* prevent memleak */
-    for (i = 1; i < NUMARGS-1; i++)
-      if(rcargv[i])free(rcargv[i]);
-    
-    return(retval);
-}
-#endif /* MSW */
-
-void sys_doflags( void)
-{
-    int i, beginstring = 0, state = 0, len = strlen(sys_flags->s_name);
-    int rcargc = 0;
-    char *rcargv[MAXPDSTRING];
-    if (len > MAXPDSTRING)
-    {
-        post("flags: %s: too long", sys_flags->s_name);
-        return;
-    }
-    for (i = 0; i < len+1; i++)
-    {
-        int c = sys_flags->s_name[i];
-        if (state == 0)
-        {
-            if (c && !isspace(c))
-            {
-                beginstring = i;
-                state = 1;
-            }
-        }
-        else
-        {
-            if (!c || isspace(c))
-            {
-                char *foo = malloc(i - beginstring + 1);
-                if (!foo)
-                    return;
-                strncpy(foo, sys_flags->s_name + beginstring, i - beginstring);
-                foo[i - beginstring] = 0;
-                rcargv[rcargc] = foo;
-                rcargc++;
-                if (rcargc >= MAXPDSTRING)
-                    break;
-                state = 0;
-            }
-        }
-    }
-    if (sys_argparse(rcargc, rcargv))
-        post("error parsing startup arguments");
-}
-
-/* undo pdtl_encodedialog.  This allows dialogs to send spaces, commas,
-    dollars, and semis down here. */
-t_symbol *sys_decodedialog(t_symbol *s)
-{
-    char buf[MAXPDSTRING], *sp = s->s_name;
-    int i;
-    if (*sp != '+')
-        bug("sys_decodedialog: %s", sp);
-    else sp++;
-    for (i = 0; i < MAXPDSTRING-1; i++, sp++)
-    {
-        if (!sp[0])
-            break;
-        if (sp[0] == '+')
-        {
-            if (sp[1] == '_')
-                buf[i] = ' ', sp++;
-            else if (sp[1] == '+')
-                buf[i] = '+', sp++;
-            else if (sp[1] == 'c')
-                buf[i] = ',', sp++;
-            else if (sp[1] == 's')
-                buf[i] = ';', sp++;
-            else if (sp[1] == 'd')
-                buf[i] = '$', sp++;
-            else buf[i] = sp[0];
-        }
-        else buf[i] = sp[0];
-    }
-    buf[i] = 0;
-    return (gensym(buf));
-}
-
-
-    /* start a search path dialog window */
-void glob_start_path_dialog(t_pd *dummy)
-{
-    char buf[MAXPDSTRING];
-    int i;
-    t_namelist *nl;
-
-    sys_vgui("pd_set pd_path \"\"\n");
-    for (nl = sys_searchpath, i = 0; nl; nl = nl->nl_next, i++)
-        sys_vgui("lappend pd_path \"%s\"\n", nl->nl_string);
-    sprintf(buf, "pdtk_path_dialog %%s %d %d\n", sys_usestdpath, sys_verbose);
-    gfxstub_new(&glob_pdobject, (void *)glob_start_path_dialog, buf);
-}
-
-    /* new values from dialog window */
-void glob_path_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv)
-{
-    int i;
-    namelist_free(sys_searchpath);
-    sys_searchpath = 0;
-    sys_usestdpath = atom_getintarg(0, argc, argv);
-    sys_verbose = atom_getintarg(1, argc, argv);
-    for (i = 0; i < argc-2; i++)
-    {
-        t_symbol *s = sys_decodedialog(atom_getsymbolarg(i+2, argc, argv));
-        if (*s->s_name)
-            sys_searchpath = namelist_append_files(sys_searchpath, s->s_name);
-    }
-}
-
-    /* start a startup dialog window */
-void glob_start_startup_dialog(t_pd *dummy)
-{
-    char buf[MAXPDSTRING];
-    int i;
-    t_namelist *nl;
-
-    sys_vgui("pd_set pd_startup \"\"\n");
-    for (nl = sys_externlist, i = 0; nl; nl = nl->nl_next, i++)
-        sys_vgui("lappend pd_startup \"%s\"\n", nl->nl_string);
-    sprintf(buf, "pdtk_startup_dialog %%s %d \"%s\"\n", sys_defeatrt,
-        sys_flags->s_name);
-    gfxstub_new(&glob_pdobject, (void *)glob_start_startup_dialog, buf);
-}
-
-    /* new values from dialog window */
-void glob_startup_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv)
-{
-    int i;
-    namelist_free(sys_externlist);
-    sys_externlist = 0;
-    sys_defeatrt = atom_getintarg(0, argc, argv);
-    sys_flags = sys_decodedialog(atom_getsymbolarg(1, argc, argv));
-    for (i = 0; i < argc-2; i++)
-    {
-        t_symbol *s = sys_decodedialog(atom_getsymbolarg(i+2, argc, argv));
-        if (*s->s_name)
-            sys_externlist = namelist_append_files(sys_externlist, s->s_name);
-    }
-}
-
-