void test_single_functions() { zputs("Hello, world!\n"); zputc_rep(10, 'x'); zputc('\n'); zputs_rev("9876543210", 10); zputc('\n'); zput_dec(1); zput_dec(200); zput_dec(30000); zput_dec(-30000); zputc('\n'); zput_udec(1); zput_udec(200); zput_udec(30000); zput_udec(65535); zputc('\n'); zput_hex(1); zput_hex(0xeeee); zputc('\n'); }
void /* FUNCTION */ fdWriteFiles ( int * memptr , char * kprefix , float * userData , int newnpts , int * nerr ) { /* index sacmem for amplitude, phase, group delay, and the impulse response. */ int fileDescriptor = 0 , hdrindex , xbegin = 0 , idx, jdx, nlcmem, nlcdsk, nptwr, unused1 , unused2 , unused3 ; char kname[ MCPFN ] , ksuffix[ 3 ][ 6 ] ; float *bufout = NULL , *ptr , amph[ 2 ][ 2 * NDATPTS - 2 ] ; void zwabs() ; *nerr = 0; /* handle strings */ if ( strlen ( kprefix ) > MCPFN - 4 ) kprefix[ MCPFN - 4 ] = '\0' ; strcpy ( ksuffix[ 0 ] , ".spec" ) ; strcpy ( ksuffix[ 1 ] , ".gd" ) ; strcpy ( ksuffix[ 2 ] , ".imp" ) ; /* Determine the begin of the impulse */ for ( ptr = cmmem.sacmem[memptr[ 9 ]] ; *ptr == 0.0 ; ptr++ ) xbegin++ ; /* fill the amplitude and phase array */ for ( idx = 0 ; idx < NDATPTS ; idx++ ) { amph[ 0 ][ idx ] = cmmem.sacmem[ memptr[ 6 ] ][ idx ] ; amph[ 1 ][ idx ] = cmmem.sacmem[ memptr[ 7 ] ][ idx ] ; } for ( ; idx < 2 * NDATPTS - 2 ; idx++ ) { amph[ 0 ][ idx ] = cmmem.sacmem[ memptr[ 6 ] ][ 2*NDATPTS-idx-2 ] ; amph[ 1 ][ idx ] = -cmmem.sacmem[ memptr[ 7 ] ][ 2*NDATPTS-idx-2 ] ; } /* Allocate block for headers. */ allamb ( &cmmem, SAC_HEADER_WORDS, &hdrindex , nerr ) ; if ( *nerr != 0 ) goto L_ERROR ; /* null the header */ for ( idx = 0 ; idx < SAC_HEADER_FLOATS ; idx++ ) cmhdr.fhdr[ idx ] = SAC_FLOAT_UNDEFINED ; for ( idx = 0 ; idx < SAC_HEADER_INTEGERS ; idx++ ) cmhdr.nhdr[ idx ] = SAC_INT_UNDEFINED ; for ( idx = 0 ; idx < SAC_HEADER_ENUMS ; idx++ ) cmhdr.ihdr[ idx ] = SAC_INT_UNDEFINED ; for ( idx = 0 ; idx < SAC_HEADER_STRINGS ; idx++ ) strcpy ( kmhdr.khdr[ idx ] , SAC_CHAR_UNDEFINED ) ; /* fill some fields. */ for ( idx = 0 ; idx < 9 ; idx++ ) /* user fields */ *( user0 + idx ) = userData[ idx ] ; switch ( (int) (*user0 + 0.5) ) { case 1: strcpy ( kuser0 , "lowpass " ) ; break ; case 2: strcpy ( kuser0 , "highpass" ) ; break ; case 3: strcpy ( kuser0 , "bandpass" ) ; break ; case 4: strcpy ( kuser0 , "bandrej " ) ; break ; default: strcpy ( kuser0 , "-12345 " ) ; break ; } switch ( (int) (*user1 + 0.5) ) { case 1: strcpy ( kuser1 , "Butter " ) ; break ; case 2: strcpy ( kuser1 , "Bessel " ) ; break ; case 3: strcpy ( kuser1 , "C1 " ) ; break ; case 4: strcpy ( kuser1 , "C2 " ) ; break ; default: strcpy ( kuser1 , "-12345 " ) ; break ; } fillNZ () ; /* time fields */ *begin = 0.0 ; /* other fields */ *sb = 0.0 ; *nvhdr = 6 ; *idep = IUNKN ; *iztype = IB ; *leven = TRUE ; *lpspol = TRUE ; *lovrok = TRUE ; *lcalda = FALSE ; for ( jdx = 0 ; jdx < 3 ; jdx++ ) { /* loop between output files. */ /* fill other header fields specific to the data */ switch ( jdx ) { case 0: aphdr( newnpts ) ; nlcmem = memptr[ 6 ] ; break ; case 1: gdhdr( newnpts ) ; nlcmem = memptr[ 8 ] ; break ; case 2: irhdr( newnpts ) ; nlcmem = memptr[ 9 ] ; break ; default: goto L_ERROR ; } /* Get file name */ sprintf ( kname , "%s%s" , kprefix , ksuffix[ jdx ] ) ; /* Open file */ znfile( &fileDescriptor , kname , MCPFN , "DATA" , 5 , nerr ); if ( *nerr ) goto L_ERROR ; /* Get ready to write header to disk */ nlcdsk = 0; nptwr = SAC_HEADER_WORDS_FILE; if ( ( bufout = (float *) malloc ( SAC_HEADER_SIZEOF_FILE) ) == NULL ) { *nerr = 301; goto L_ERROR ; } /* move header into working memory */ /* copy ( (int*) cmhdr.fhdr , (int*) cmmem.sacmem[ hdrindex ] , SAC_HEADER_NUMBERS ); */ copy_float( cmhdr.fhdr, cmmem.sacmem[ hdrindex ], SAC_HEADER_NUMBERS ); zputc ( kmhdr.khdr[ 0 ] , 9 , (int *)(cmmem.sacmem[ hdrindex ] + SAC_HEADER_NUMBERS), ( MCPW + 1 ) * SAC_HEADER_STRINGS) ; /* move header into output buffer */ map_hdr_out ( cmmem.sacmem[ hdrindex ] , bufout , FALSE) ; /* write the headers */ zwabs( (int *)&fileDescriptor, (char *)(bufout), nptwr, (int *)&nlcdsk, (int *)nerr ); free(bufout); bufout = NULL ; nlcdsk += nptwr; nptwr = NDATPTS ; /* Write data to disk */ switch ( jdx ) { case 0: nptwr = 2 * NDATPTS - 2 ; zwabs ( (int *)&fileDescriptor, (char *)(amph[ 0 ]) , nptwr, (int *)&nlcdsk, (int *)nerr ) ; /* nlcmem = memptr[ 7 ] ; */ nlcdsk += nptwr; zwabs ( (int *)&fileDescriptor, (char *)(amph[ 1 ]) , nptwr, (int *)&nlcdsk, (int *)nerr ) ; break ; case 1: zwabs( (int *)&fileDescriptor, (char *)(cmmem.sacmem[nlcmem]), nptwr, (int *)&nlcdsk, (int *)nerr ); break ; case 2: zwabs( (int *)&fileDescriptor, (char *)(cmmem.sacmem[nlcmem] + xbegin), nptwr, (int *)&nlcdsk, (int *)nerr ); break ; } /* Close file */ zclose ( &fileDescriptor , nerr ) ; fileDescriptor = 0 ; } /* end for */ L_ERROR: if ( *nerr ) { setmsg ( "ERROR" , *nerr ) ; outmsg () ; clrmsg () ; } if ( cmdfm.ndfl > 0 ) getfil ( 1 , TRUE , &unused1 , &unused2 , &unused3 , nerr ) ; if ( bufout ) free ( bufout ) ; if ( fileDescriptor ) zclose ( &fileDescriptor , nerr ) ; relamb ( cmmem.sacmem , hdrindex , nerr ); }
void refresh(void) { static int inlist; /* avoiding recursion */ int canscroll = 0, /* number of lines we are allowed to scroll */ ln = 0, /* current line we're working on */ more_status = 0, /* more stuff in status line */ nvcs = 0, nvln = -1, /* video cursor column and line */ t0 = -1, /* tmp */ tosln = 0; /* tmp in statusline stuff */ unsigned char *s, /* pointer into the video buffer */ *t, /* pointer into the real buffer */ *sen, /* pointer to end of the video buffer (eol) */ *scs; /* pointer to cursor position in real buffer */ char **qbuf; /* tmp */ /* If this is called from listmatches() (indirectly via trashzle()), and * * that was called from the end of refresh(), then we don't need to do * * anything. All this `inlist' code is actually unnecessary, but it * * improves speed a little in a common case. */ if (inlist) return; #ifdef HAVE_SELECT cost = 0; /* reset */ #endif #ifndef WINNT /* Nov 96: <mason> I haven't checked how complete this is. sgtty stuff may or may not work */ oxtabs = ((SGTTYFLAG & SGTABTYPE) == SGTABTYPE); #else WINNT oxtabs = 0; #endif WINNT cleareol = 0; /* unset */ more_start = more_end = 0; /* unset */ if (isset(SINGLELINEZLE) || lines < 3 || (termflags & (TERM_NOUP | TERM_BAD | TERM_UNKNOWN))) termflags |= TERM_SHORT; else termflags &= ~TERM_SHORT; if (resetneeded) { onumscrolls = 0; setterm(); #if defined( TIOCGWINSZ) || defined(WINNT) if (winchanged) { moveto(0, 0); t0 = olnct; /* this is to clear extra lines even when */ winchanged = 0; /* the terminal cannot TCCLEAREOD */ } #endif resetvideo(); resetneeded = 0; /* unset */ oput_rpmpt = 0; /* no right-prompt currently on screen */ /* we probably should only have explicitly set attributes */ tsetcap(TCALLATTRSOFF, 0); tsetcap(TCSTANDOUTEND, 0); tsetcap(TCUNDERLINEEND, 0); if (!clearflag) if (tccan(TCCLEAREOD)) tcout(TCCLEAREOD); else cleareol = 1; /* request: clear to end of line */ if (t0 > -1) olnct = t0; if (termflags & TERM_SHORT) vcs = 0; else if (!clearflag && lpptlen) zwrite(lpptbuf, lpptlen, 1, shout); if (clearflag) { zputc('\r', shout); vcs = 0; moveto(0, pptw); } fflush(shout); clearf = clearflag; } else if (winw != columns || rwinh != lines) resetvideo(); /* now winw equals columns and winh equals lines width comparisons can be made with winw, height comparisons with winh */ if (termflags & TERM_SHORT) { singlerefresh(); return; } if (cs < 0) { #ifdef DEBUG fprintf(stderr, "BUG: negative cursor position\n"); fflush(stderr); #endif cs = 0; } scs = line + cs; numscrolls = 0; /* first, we generate the video line buffers so we know what to put on the screen - also determine final cursor position (nvln, nvcs) */ /* Deemed necessary by PWS 1995/05/15 due to kill-line problems */ if (!*nbuf) *nbuf = (char *)zalloc(winw + 2); s = (unsigned char *)(nbuf[ln = 0] + pptw); t = line; sen = (unsigned char *)(*nbuf + winw); for (; t < line+ll; t++) { if (t == scs) /* if cursor is here, remember it */ nvcs = s - (unsigned char *)(nbuf[nvln = ln]); if (*t == '\n') { /* newline */ nbuf[ln][winw + 1] = '\0'; /* text not wrapped */ nextline } else if (*t == '\t') { /* tab */