Ejemplo n.º 1
0
static char *
lib_dlb_fgets(char *buf, int len, dlb * dp)
{
    int i;
    char *bp, c = 0;

    if (len <= 0)
        return buf;     /* sanity check */

    /* return NULL on EOF */
    if (dp->mark >= dp->size)
        return NULL;

    len--;      /* save room for null */
    for (i = 0, bp = buf; i < len && dp->mark < dp->size && c != '\n';
         i++, bp++) {
        if (dlb_fread(bp, 1, 1, dp) <= 0)
            break;      /* EOF or error */
        c = *bp;
    }
    *bp = '\0';

#if defined(WIN32)
    if ((bp = strchr(buf, '\r')) != 0) {
        *bp++ = '\n';
        *bp = '\0';
    }
#endif

    return buf;
}
Ejemplo n.º 2
0
void display_file(const char *fname, boolean complain)
{
	dlb *fp;
	char *buf;
	int fsize;

	fp = dlb_fopen(fname, "r");
	if (!fp) {
	    if (complain) {
		pline("Cannot open \"%s\".", fname);
	    } else if (program_state.something_worth_saving) doredraw();
	} else {
	    dlb_fseek(fp, 0, SEEK_END);
	    fsize = dlb_ftell(fp);
	    dlb_fseek(fp, 0, SEEK_SET);
	    
	    buf = malloc(fsize);
	    dlb_fread(buf, fsize, 1, fp);
	    
	    dlb_fclose(fp);
	    
	    display_buffer(buf, complain);
	    
	    free(buf);
	}
}
Ejemplo n.º 3
0
static void
Fread (void *ptr, int size, int nitems, dlb *stream)
{
        int cnt;

        if ((cnt = dlb_fread(ptr, size, nitems, stream)) != nitems) {

            panic("PREMATURE EOF ON QUEST TEXT FILE! Expected %d bytes, got %d",
                    (size * nitems), (size * cnt));
        }
}