unsafe fn readline<R: Read + Seek>(buf: *mut i8, buf_len: usize, handle: &mut R) -> *mut i8 {
    let mut p: *mut i8 = buf;
    let mut n = 0;
    let mut c: i32 = 0;
    while n < buf_len {
        let mut q = tt_mfgets(p, buf_len - n, handle);
        if q.is_null() {
            break;
        }
        c += 1;
        let r = strchr(q, '#' as i32);
        /* Comment is converted to single wsp (followed by a newline). */
        if !r.is_null() {
            *r = ' ' as i32 as i8; /* empty line */
            *r.offset(1) = '\u{0}' as i32 as i8
        }
        let qlen = strlen(q) as usize;
        if qlen == 0 {
            break;
        }
        n += qlen;
        q = q.add(qlen - 1);
        if *q as i32 != '\\' as i32 {
            break;
        }
        /* line continued */
        n -= 1;
        p = buf.offset(n as isize)
    }
    if n >= buf_len - 1 {
        warn!(
            "Possible buffer overflow in reading SFD file (buffer full, size={} bytes)",
            buf_len - 1
        );
    }
    if c > 0 {
        buf
    } else {
        ptr::null_mut()
    }
}
/* Each lines describes character code mapping for each
 * subfonts. '#' is start of comment.
 * SFD file format uses a '\' before newline sequence
 * for line-continuation.
 */
Each lines describes character code mapping for each
subfonts. '#' is start of comment.
SFD file format uses a '\' before newline sequence
for line-continuation.
Each lines describes character code mapping for each subfonts . ' # ' is start of comment . SFD file format uses a ' \ ' before newline sequence for line - continuation .
unsafe fn readline<R: Read + Seek>(buf: *mut i8, buf_len: usize, handle: &mut R) -> *mut i8 {
    let mut p: *mut i8 = buf;
    let mut n = 0;
    let mut c: i32 = 0;
    while n < buf_len {
        let mut q = tt_mfgets(p, buf_len - n, handle);
        if q.is_null() {
            break;
        }
        c += 1;
        let r = strchr(q, '#' as i32);
        /* Comment is converted to single wsp (followed by a newline). */
        if !r.is_null() {
            *r = ' ' as i32 as i8; /* empty line */
            *r.offset(1) = '\u{0}' as i32 as i8
        }
        let qlen = strlen(q) as usize;
        if qlen == 0 {
            break;
        }
        n += qlen;
        q = q.add(qlen - 1);
        if *q as i32 != '\\' as i32 {
            break;
        }
        /* line continued */
        n -= 1;
        p = buf.offset(n as isize)
    }
    if n >= buf_len - 1 {
        warn!(
            "Possible buffer overflow in reading SFD file (buffer full, size={} bytes)",
            buf_len - 1
        );
    }
    if c > 0 {
        buf
    } else {
        ptr::null_mut()
    }
}
unsafe fn readline < R : Read + Seek > ( buf : * mut i8 , buf_len : usize , handle : & mut R ) -> * mut i8 { let mut p : * mut i8 = buf ; let mut n = 0 ; let mut c : i32 = 0 ; while n < buf_len { let mut q = tt_mfgets ( p , buf_len - n , handle ) ; if q . is_null ( ) { break ; } c += 1 ; let r = strchr ( q , '#' as i32 ) ; /* Comment is converted to single wsp (followed by a newline). */ if ! r . is_null ( ) { * r = ' ' as i32 as i8 ; /* empty line */ * r . offset ( 1 ) = '\u{0}' as i32 as i8 } let qlen = strlen ( q ) as usize ; if qlen == 0 { break ; } n += qlen ; q = q . add ( qlen - 1 ) ; if * q as i32 != '\\' as i32 { break ; } /* line continued */ n -= 1 ; p = buf . offset ( n as isize ) } if n >= buf_len - 1 { warn ! ( " " buf_len 1 ) ; } if c > 0 { buf } else { ptr :: null_mut ( ) } }
Each lines describes character code mapping for each
 subfonts.
Each lines describes character code mapping for each subfonts .
buf
*mut i8
buf_len
usize
handle
&mut R