home *** CD-ROM | disk | FTP | other *** search
- /*
- * GLIB - a Generic LIBrarian and editor for synths
- *
- * Machine dependent stuff.
- *
- * Unix version
- */
-
- #include "glib.h"
- #include <ctype.h>
-
- int Rows, Cols;
-
- #include <curses.h>
-
- hello()
- {
- }
-
- bye()
- {
- windgoto(22,0);
- windrefresh();
- windexit(0);
- }
-
- /* getmouse - get currect row and column of mouse */
- getmouse(amr,amc)
- int *amr;
- int *amc;
- {
- #ifdef USEMOUSE
- /* no such */
- #else
- *amr = -1;
- *amc = -1;
- #endif
- }
-
- /* statmouse - return mouse button state (0=nothing pressed,1=left,2=right) */
- statmouse()
- {
- #ifdef USEMOUSE
- /* no such */
- #else
- return(-1);
- #endif
- }
-
- /* Return when either a console key or mouse button is pressed. */
- mouseorkey()
- {
- #ifdef USEMOUSE
- /* no such */
- #else
- return(getconsole());
- #endif
- }
-
- flushconsole()
- {
- }
-
- statconsole()
- {
- return(1);
- }
-
- getconsole()
- {
- return(getchar());
- }
-
- getmidi()
- {
- return(-1);
- }
-
- statmidi()
- {
- return(0);
- }
-
- /*ARGSUSED*/
- sendmidi(c)
- {
- }
-
- flushmidi()
- {
- while ( STATMIDI )
- getmidi();
- }
-
- long milliclock()
- {
- static long hzcount = 0;
-
- return(hzcount++);
- }
-
- millisleep(n)
- {
- sleep((n+500)/1000);
- }
-
- char *
- alloc(n)
- {
- char *p;
-
- if ( (p=malloc((unsigned)n)) == (char *)NULL ) {
- printf("*** Whoops *** alloc has failed?!? No more memory!\n");
- fflush(stdout);
- bye();
- }
- return(p);
- }
-
- windinit()
- {
- char *getenv();
-
- initscr();
- Cols = 80;
- Rows = 24;
- noecho();
- nonl();
- cbreak();
- }
-
- windgoto(r,c)
- int r,c;
- {
- move(r,c);
- }
-
- windeeol()
- {
- clrtoeol();
- }
-
- winderaserow(r)
- {
- windgoto(r,0);
- windeeol();
- }
-
- windexit(r)
- int r;
- {
- nocbreak();
- nl();
- echo();
- endwin();
- exit(r);
- }
-
- windclear()
- {
- clear();
- }
-
- /* windgets - get a line of input from the console, handling backspaces */
- windgets(s)
- char *s;
- {
- char *origs = s;
- int c;
-
- while ( (c=getconsole()) != '\n' && c!='\r' && c!= EOF ) {
- if ( c == '\b' ) {
- if ( s > origs ) {
- windstr("\b \b");
- s--;
- }
- }
- else {
- windputc(c);
- *s++ = c;
- }
- windrefresh();
- }
- *s = '\0';
- }
-
- windstr(s)
- char *s;
- {
- int c;
-
- while ( (c=(*s++)) != '\0' )
- windputc(c);
- }
-
- windputc(c)
- int c;
- {
- addch(c);
- }
-
- windrefresh()
- {
- refresh();
- }
-
- beep()
- {
- putchar('\007');
- }
-
- windhigh()
- {
- standout();
- }
-
- windnorm()
- {
- standend();
- }
-
- /****************
- * openls(), nextls(), and closels() are used to scan the current directory.
- ***************/
-
- FILE *Phrlist = NULL;
-
- openls()
- {
- FILE *popen();
-
- Phrlist = popen("ls","r");
- }
- char *
- nextls()
- {
- static char fname[65];
-
- if ( fscanf(Phrlist,"%s",fname) != 1 )
- return(NULL);
- return(fname);
- }
- closels()
- {
- pclose(Phrlist);
- }
-
- #ifdef FAKECBREAK
- #include <sys/termio.h>
- struct termio Initterm;
- static int First = 1;
- cbreak()
- {
- struct termio termbuff;
-
- if ( First ) {
- First = 0;
- ioctl(0,TCGETA,&Initterm);
- }
- termbuff = Initterm;
- termbuff.c_lflag &= (~ICANON);
- termbuff.c_cc[4] = 1;
- termbuff.c_cc[5] = 1;
- ioctl(0,TCSETA,&termbuff);
- }
- nocbreak()
- {
- ioctl(0,TCSETA,&Initterm);
- }
- #endif
-