#define READ_BLOCK_SIZE (0x80*0x400)
#define MAX_LINE_LENGTH 0x400
#define BUF_SIZE (READ_BLOCK_SIZE+MAX_LINE_LENGTH)
#define MAX_SECTION_LENGTH 0x3ff
inline static int baka_atoi( char const * buf, char const ** pc_next) {
int i_sign;
int i_val = 0 ;
if ( * buf == '-' ) {
i_sign = - 1 ;
++ buf;
} else {
i_sign = 1 ;
}
for ( ; isdigit ( * buf) ; ++ buf) {
i_val = i_val * 10 + * buf - '0' ;
}
* pc_next = buf;
return i_val * i_sign;
}
inline static unsigned int baka_atou( char const * buf, char const ** pc_next) {
int i_val = 0 ;
for ( ; isdigit ( * buf) ; ++ buf) {
i_val = i_val * 10 + * buf - '0' ;
}
* pc_next = buf;
return i_val;
}
inline static int baka_read( int fd, char * p_buf, char const ** pc_buf_e, char const * c_buf_p, uint64_t * pu_buf_offset, bool * pb_is_not_eof) {
:: memcpy ( p_buf, c_buf_p, * pc_buf_e - c_buf_p) ;
* pu_buf_offset + = ( c_buf_p - p_buf) ;
p_buf + = ( * pc_buf_e - c_buf_p) ;
* pc_buf_e = p_buf;
int i_size = :: read ( fd, p_buf, READ_BLOCK_SIZE) ;
if ( i_size < 0 ) { :: fprintf ( stderr , "read error\n " ) ; return - 1 ; }
* pb_is_not_eof = i_size == READ_BLOCK_SIZE ? true : false ;
* pc_buf_e + = i_size;
return 0 ;
}
int read_section( int fd) {
char buf[ BUF_SIZE] ;
char const * c_buf_b = buf;
char const * c_buf_p = buf;
char const * c_buf_e = buf;
uint64_t u_offset = 0 ;
bool is_not_eof = true ;
char sz_section[ MAX_SECTION_LENGTH + 1 ] ;
unsigned int u_string_recs;
unsigned int u_hatena;
unsigned int u_xy_recs;
unsigned int u_num_recs;
unsigned int u_qq_recs;
char const * c_buf_bs;
char const * c_buf_es;
char const * c_buf_bc;
char const * c_buf_ec;
uint64_t u_lines = 0 ;
int32_t i_val[ 8 ] ; // とりあえずの一時バッファ
uint32_t u_val[ 8 ] ; // とりあえずの一時バッファ
//
// タイトル名
// ex. TITLE_NAME ①
//
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) return 0 ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
c_buf_bs = c_buf_p; // begin title
for ( ; * c_buf_p ! = ' ' ; ++ c_buf_p) ; // skip until LF
c_buf_es = c_buf_p; // end title
++ c_buf_p; // skip SP
i_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ; // mag
#ifdef DEBUG_WRITE
// ↓ココで取得
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 0. title=\" %.*s\" , mag = %u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , ( c_buf_es - c_buf_bs) , c_buf_bs, i_val[ 0 ] ) ;
#endif
++ c_buf_p; // skip LF
do {
//
// ①セクション名
// ex. SECTION_NAME ①
//
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) return 0 ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
for ( ; * c_buf_p ! = '\x0a ' ; ++ c_buf_p) ; // skip until LF
#ifdef DEBUG_WRITE
// ↓ココで取得
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 1. section = \" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , ( c_buf_p - c_buf_b) , c_buf_b) ;
#endif
++ c_buf_p; // skip LF
//
// ②セクション集計値
// ex. 11200 11200 2 Jun 9 23:23:00 2018 ②
//
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) { :: fprintf ( stderr , "fatal error: unexpected format 2 (L%" PRIu64")\n " , u_lines) ; return - 1 ; } ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
u_xy_recs = baka_atou( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
u_hatena = baka_atou( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
u_string_recs = baka_atou( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
for ( ; * c_buf_p ! = '\x0a ' ; ++ c_buf_p) ; // skip until LF
#ifdef DEBUG_WRITE
// ↓ココで取得
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 2. u_xy_recs = %d, u_hatena = %u, u_string_recs = %u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , u_xy_recs, u_hatena, u_string_recs) ;
#endif
++ c_buf_p; // skip LF
//
// ③テキスト
// ex. This is pen. ③
// hello world. ③
//
for ( unsigned int i = 0 ; i < u_string_recs; ++ i) {
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) { :: fprintf ( stderr , "fatal error: unexpected format 3 (L%" PRIu64")\n " , u_lines) ; return - 1 ; } ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
for ( ; * c_buf_p ! = '\x0a ' ; ++ c_buf_p) ; // skip until LF
#ifdef DEBUG_WRITE
// ↓ココで取得
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 3[%u]. text = \" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, ( c_buf_p - c_buf_b) , c_buf_b) ;
#endif
++ c_buf_p; // skip LF
}
//
// ④数値
// ex. x 1 2 ④
//
for ( unsigned int i = 0 ; i < u_xy_recs; ++ i) {
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) { :: fprintf ( stderr , "fatal error: unexpected format 4 (L%" PRIu64")\n " , u_lines) ; return - 1 ; } ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
switch ( * c_buf_b) {
//
// ex. x 1 2
//
case 'x' : {
c_buf_p + = 2 ; // skip 'x' and SP
for ( ; * c_buf_p ! = ' ' ; ++ c_buf_p) ; // skip until SP
++ c_buf_p; // skip SP
u_num_recs = baka_atou( c_buf_p, & c_buf_p) ;
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
c_buf_bc = c_buf_p; // begin c
if ( * c_buf_bc == 'c' ) {
++ c_buf_p; // skip 'c'
c_buf_ec = c_buf_p; // end c
} else {
c_buf_ec = c_buf_p; // end c
}
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
i_val[ 0 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 1 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 2 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 3 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 4 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 5 ] = baka_atoi( c_buf_p, & c_buf_p) ;
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
u_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. x 2 4 c -1 0 0 1 -21000000 600000 2
// ex. x 2 4 -1 0 0 1 -21000000 600000 2
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x[%u]. \" %c\" , u_num_recs = %u, c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d, nazoc=%u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] , u_val[ 0 ] ) ;
#endif
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. x 2 4 c -1 0 0 1 -21000000 600000
// ex. x 2 4 -1 0 0 1 -21000000 600000
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x[%u]. \" %c\" , u_num_recs = %u, c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] ) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. x 2 4 c
// ex. x 2 4
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x[%u]. \" %c\" , u_num_recs = %u, c=\" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs, ( c_buf_ec - c_buf_bc) , c_buf_bc) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. x 2 4
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x[%u]. \" %c\" , u_num_recs = %u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs) ;
#endif
}
++ c_buf_p; // skip LF
u_qq_recs = 0 ;
for ( unsigned int j = 0 ; j < u_num_recs; ++ j) {
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) { :: fprintf ( stderr , "fatal error: unexpected format 4.x (L%" PRIu64")\n " , u_lines) ; return - 1 ; } ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
if ( * c_buf_p == 'Q' ) {
//
// ⑤QQ 謎の行
// QQ subname -1 0 0 1 -21000000 600000 2
//
c_buf_p + = 3 ; // skip 'QQ' and SP
c_buf_bs = c_buf_p; // begin subname
for ( ; * c_buf_p ! = ' ' && * c_buf_p ! = '\x0a ' ; ++ c_buf_p) ; // skip until SP or LF
c_buf_es = c_buf_p; // end subname
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
c_buf_bc = c_buf_p; // begin c
if ( * c_buf_bc == 'c' ) {
++ c_buf_p; // skip 'c'
c_buf_ec = c_buf_p; // end c
} else {
c_buf_ec = c_buf_p; // end c
}
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
i_val[ 0 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 1 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 2 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 3 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 4 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 5 ] = baka_atoi( c_buf_p, & c_buf_p) ;
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
u_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c -1 0 0 1 -21000000 600000 2
// ex. QQ subname -1 0 0 1 -21000000 600000 2
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x.QQ[%u]. \" %c\" , c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d, nazoc=%u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] , u_val[ 0 ] ) ;
#endif
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c -1 0 0 1 -21000000 600000
// ex. QQ subname -1 0 0 1 -21000000 600000
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x.QQ[%u]. \" %c\" , c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] ) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x.QQ[%u]. QQ = \" %.*s\" , c=\" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i,
( c_buf_es - c_buf_bs) , c_buf_bs, ( c_buf_ec - c_buf_bc) , c_buf_bc) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x.QQ[%u]. QQ = \" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i,
( c_buf_es - c_buf_bs) , c_buf_bs) ;
#endif
}
++ c_buf_p; // skip LF
++ u_qq_recs;
++ u_num_recs;
} else if ( * c_buf_p == 'R' ) {
c_buf_p + = 3 ; // skip 'RR' and SP
u_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. RR 3
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x.RR[%u]. number = %u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, u_val[ 0 ] ) ;
#endif
++ c_buf_p; // skip LF
++ u_qq_recs;
++ u_num_recs;
} else {
//
// 100 1 -2000 10
//
i_val[ 0 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 1 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 2 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 3 ] = baka_atoi( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.x[%u][%u]. %d, %d, %d, %d\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, j - u_qq_recs, i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] ) ;
#endif
++ c_buf_p; // skip LF
}
}
break ;
}
//
// ex. y 2 4
//
case 'y' : {
c_buf_p + = 2 ; // skip 'y' and SP
for ( ; * c_buf_p ! = ' ' ; ++ c_buf_p) ; // skip until SP
++ c_buf_p; // skip SP
u_num_recs = baka_atou( c_buf_p, & c_buf_p) ;
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
c_buf_bc = c_buf_p; // begin c
if ( * c_buf_bc == 'c' ) {
++ c_buf_p; // skip 'c'
c_buf_ec = c_buf_p; // end c
} else {
c_buf_ec = c_buf_p; // end c
}
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
i_val[ 0 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 1 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 2 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 3 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 4 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 5 ] = baka_atoi( c_buf_p, & c_buf_p) ;
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
u_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. y 2 4 c -1 0 0 1 -21000000 600000 2
// ex. y 2 4 -1 0 0 1 -21000000 600000 2
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y[%u]. \" %c\" , u_num_recs = %u, c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d, nazoc=%u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] , u_val[ 0 ] ) ;
#endif
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. y 2 4 c -1 0 0 1 -21000000 600000
// ex. y 2 4 -1 0 0 1 -21000000 600000
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y[%u]. \" %c\" , u_num_recs = %u, c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] ) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. y 2 4 c
// ex. y 2 4
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y[%u]. \" %c\" , u_num_recs = %u, c=\" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs, ( c_buf_ec - c_buf_bc) , c_buf_bc) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. y 2 4
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y[%u]. \" %c\" , u_num_recs = %u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, u_num_recs) ;
#endif
}
++ c_buf_p; // skip LF
u_qq_recs = 0 ;
for ( unsigned int j = 0 ; j < u_num_recs; ++ j) {
if ( c_buf_e - c_buf_p < MAX_LINE_LENGTH && is_not_eof) {
if ( baka_read( fd, buf, & c_buf_e, c_buf_p, & u_offset, & is_not_eof) < 0 ) return - 1 ;
if ( buf == c_buf_e) { :: fprintf ( stderr , "fatal error: unexpected format 4.y (L%" PRIu64")\n " , u_lines) ; return - 1 ; } ;
c_buf_p = buf;
}
++ u_lines; c_buf_b = c_buf_p;
if ( * c_buf_p == 'Q' ) {
//
// ⑤QQ 謎の行
// QQ subname -1 0 0 1 -21000000 600000 2
//
c_buf_p + = 3 ; // skip 'QQ' and SP
c_buf_bs = c_buf_p; // begin subname
for ( ; * c_buf_p ! = ' ' && * c_buf_p ! = '\x0a ' ; ++ c_buf_p) ; // skip until SP or LF
c_buf_es = c_buf_p; // end subname
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
c_buf_bc = c_buf_p; // begin c
if ( * c_buf_bc == 'c' ) {
++ c_buf_p; // skip 'c'
c_buf_ec = c_buf_p; // end c
} else {
c_buf_ec = c_buf_p; // end c
}
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
i_val[ 0 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 1 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 2 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 3 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 4 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 5 ] = baka_atoi( c_buf_p, & c_buf_p) ;
if ( * c_buf_p ! = '\x0a ' ) {
++ c_buf_p; // skip SP
u_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c -1 0 0 1 -21000000 600000 2
// ex. QQ subname -1 0 0 1 -21000000 600000 2
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y.QQ[%u]. \" %c\" , c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d, nazoc=%u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] , u_val[ 0 ] ) ;
#endif
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c -1 0 0 1 -21000000 600000
// ex. QQ subname -1 0 0 1 -21000000 600000
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y.QQ[%u]. \" %c\" , c=\" %.*s\" , qq_type1=%d, qq_type2=%d, qq_type3=%d, qq_type4=%d, nazo1=%d, nazo2=%d\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, * c_buf_b, ( c_buf_ec - c_buf_bc) , c_buf_bc,
i_val[ 0 ] , i_val[ 1 ] , i_val[ 2 ] , i_val[ 3 ] , i_val[ 4 ] , i_val[ 5 ] ) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y.QQ[%u]. QQ = \" %.*s\" , c=\" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i,
( c_buf_es - c_buf_bs) , c_buf_bs, ( c_buf_ec - c_buf_bc) , c_buf_bc) ;
#endif
}
} else {
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. QQ subname c
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y.QQ[%u]. QQ = \" %.*s\" \n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i,
( c_buf_es - c_buf_bs) , c_buf_bs) ;
#endif
}
++ c_buf_p; // skip LF
++ u_qq_recs;
++ u_num_recs;
} else if ( * c_buf_p == 'R' ) {
c_buf_p + = 3 ; // skip 'RR' and SP
u_val[ 0 ] = baka_atou( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
// ex. RR 3
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y.RR[%u]. number = %u\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, u_val[ 0 ] ) ;
#endif
++ c_buf_p; // skip LF
++ u_qq_recs;
++ u_num_recs;
} else {
//
// ex. -100 10000
//
i_val[ 0 ] = baka_atoi( c_buf_p, & c_buf_p) ;
++ c_buf_p; // skip SP
i_val[ 1 ] = baka_atoi( c_buf_p, & c_buf_p) ;
#ifdef DEBUG_WRITE
// ↓ココで取得
:: fprintf ( stdout , "(L%" PRIu64":%" PRIu64"-C%d) 4.y[%u][%u]. %d, %d\n " ,
u_lines, u_offset + ( c_buf_b - buf) , ( c_buf_p - c_buf_b) , i, j - u_qq_recs, i_val[ 0 ] , i_val[ 1 ] ) ;
#endif
++ c_buf_p; // skip LF
}
}
break ;
}
default :
:: fprintf ( stderr , "fatal error: unexpected format 4.1 (L%" PRIu64")\n " , u_lines) ;
return - 1 ;
}
}
} while ( c_buf_e ! = c_buf_p && is_not_eof) ;
return 0 ;
}
int main( int argc, char ** argv) {
if ( argc ! = 2 ) {
:: fprintf ( stderr , "Usage: %s <filepath>\n " , argv[ 0 ] ) ;
return 1 ;
}
char * filename = argv[ 1 ] ;
int fd = :: open ( filename, O_RDONLY| O_LARGEFILE) ;
if ( fd < 0 ) {
:: fprintf ( stderr , "fatal error: open file error \" %s\" \n " , filename) ;
return 1 ;
}
:: fprintf ( stderr , "strat... %s %s %s\n " , argv[ 0 ] , argv[ 1 ] , argv[ 2 ] ) ;
time_t u_start = time ( NULL ) ;
if ( :: read_section ( fd) < 0 ) { close( fd) ; return 1 ; } ;
:: fprintf ( stdout , "%d" , time ( NULL ) - u_start) ;
:: fprintf ( stderr , "done... %s %s %s\n " , argv[ 0 ] , argv[ 1 ] , argv[ 2 ] ) ;
close( fd) ;
return 0 ;
}
I2RlZmluZSBSRUFEX0JMT0NLX1NJWkUgKDB4ODAqMHg0MDApCiNkZWZpbmUgTUFYX0xJTkVfTEVOR1RIIDB4NDAwCiNkZWZpbmUgQlVGX1NJWkUgKFJFQURfQkxPQ0tfU0laRStNQVhfTElORV9MRU5HVEgpCgojZGVmaW5lIE1BWF9TRUNUSU9OX0xFTkdUSCAweDNmZgoKaW5saW5lIHN0YXRpYyBpbnQgYmFrYV9hdG9pKGNoYXIgY29uc3QqIGJ1ZiwgY2hhciBjb25zdCoqIHBjX25leHQpIHsKCWludCBpX3NpZ247CglpbnQgaV92YWwgPSAwOwoJaWYgKCpidWYgPT0gJy0nKSB7CgkJaV9zaWduID0gLTE7CgkJKytidWY7Cgl9IGVsc2UgewoJCWlfc2lnbiA9IDE7Cgl9Cglmb3IgKDsgaXNkaWdpdCgqYnVmKTsgKytidWYpIHsKCQlpX3ZhbCA9IGlfdmFsICogMTAgKyAqYnVmIC0gJzAnOwoJfQoJKnBjX25leHQgPSBidWY7CglyZXR1cm4gaV92YWwgKiBpX3NpZ247Cn0KCmlubGluZSBzdGF0aWMgdW5zaWduZWQgaW50IGJha2FfYXRvdShjaGFyIGNvbnN0KiBidWYsIGNoYXIgY29uc3QqKiBwY19uZXh0KSB7CglpbnQgaV92YWwgPSAwOwoJZm9yICg7IGlzZGlnaXQoKmJ1Zik7ICsrYnVmKSB7CgkJaV92YWwgPSBpX3ZhbCAqIDEwICsgKmJ1ZiAtICcwJzsKCX0KCSpwY19uZXh0ID0gYnVmOwoJcmV0dXJuIGlfdmFsOwp9CgppbmxpbmUgc3RhdGljIGludCAgYmFrYV9yZWFkKGludCBmZCwgY2hhciogcF9idWYsIGNoYXIgY29uc3QqKiBwY19idWZfZSwgY2hhciBjb25zdCogY19idWZfcCwgdWludDY0X3QqIHB1X2J1Zl9vZmZzZXQsIGJvb2wqIHBiX2lzX25vdF9lb2YpIHsKCgk6Om1lbWNweShwX2J1ZiwgY19idWZfcCwgKnBjX2J1Zl9lIC0gY19idWZfcCk7CgkqcHVfYnVmX29mZnNldCArPSAoY19idWZfcCAtIHBfYnVmKTsKCXBfYnVmICs9ICgqcGNfYnVmX2UgLSBjX2J1Zl9wKTsKCSpwY19idWZfZSA9IHBfYnVmOwoJCglpbnQgaV9zaXplID0gOjpyZWFkKGZkLCBwX2J1ZiwgUkVBRF9CTE9DS19TSVpFKTsKCWlmIChpX3NpemUgPCAwKSB7IDo6ZnByaW50ZihzdGRlcnIsICJyZWFkIGVycm9yXG4iKTsgcmV0dXJuIC0xO30KCgkqcGJfaXNfbm90X2VvZiA9IGlfc2l6ZSA9PSBSRUFEX0JMT0NLX1NJWkUgPyB0cnVlIDogZmFsc2U7CgkqcGNfYnVmX2UgKz0gaV9zaXplOwoJcmV0dXJuIDA7Cn0KCmludCByZWFkX3NlY3Rpb24oaW50IGZkKSB7CgljaGFyIGJ1ZltCVUZfU0laRV07CgljaGFyIGNvbnN0KiBjX2J1Zl9iID0gYnVmOwoJY2hhciBjb25zdCogY19idWZfcCA9IGJ1ZjsKCWNoYXIgY29uc3QqIGNfYnVmX2UgPSBidWY7Cgl1aW50NjRfdCB1X29mZnNldCA9IDA7Cglib29sIGlzX25vdF9lb2YgPSB0cnVlOwoKCWNoYXIgc3pfc2VjdGlvbltNQVhfU0VDVElPTl9MRU5HVEggKyAxXTsKCXVuc2lnbmVkIGludCB1X3N0cmluZ19yZWNzOwoJdW5zaWduZWQgaW50IHVfaGF0ZW5hOwoJdW5zaWduZWQgaW50IHVfeHlfcmVjczsKCXVuc2lnbmVkIGludCB1X251bV9yZWNzOwoKCXVuc2lnbmVkIGludCB1X3FxX3JlY3M7CgljaGFyIGNvbnN0KiBjX2J1Zl9iczsKCWNoYXIgY29uc3QqIGNfYnVmX2VzOwoJY2hhciBjb25zdCogY19idWZfYmM7CgljaGFyIGNvbnN0KiBjX2J1Zl9lYzsKCgl1aW50NjRfdCB1X2xpbmVzID0gMDsKCWludDMyX3QgaV92YWxbOF07IC8vIOOBqOOCiuOBguOBiOOBmuOBruS4gOaZgu++iu++nu+9r+++jO+9pwoJdWludDMyX3QgdV92YWxbOF07IC8vIOOBqOOCiuOBguOBiOOBmuOBruS4gOaZgu++iu++nu+9r+++jO+9pwoKCS8vCgkvLyDvvoDvvbLvvoTvvpnlkI0KCS8vIGV4LiBUSVRMRV9OQU1F44CA4pGgCgkvLwoKCWlmIChjX2J1Zl9lIC0gY19idWZfcCA8IE1BWF9MSU5FX0xFTkdUSCAmJiBpc19ub3RfZW9mKSB7CgkJaWYgKGJha2FfcmVhZChmZCwgYnVmLCAmY19idWZfZSwgY19idWZfcCwgJnVfb2Zmc2V0LCAmaXNfbm90X2VvZikgPCAwKSByZXR1cm4gLTE7CgkJaWYgKGJ1ZiA9PSBjX2J1Zl9lKSByZXR1cm4gMDsKCQljX2J1Zl9wID0gYnVmOwoJfQoJKyt1X2xpbmVzOyBjX2J1Zl9iID0gY19idWZfcDsKCgljX2J1Zl9icyA9IGNfYnVmX3A7IC8vIGJlZ2luIHRpdGxlCglmb3IgKDsgKmNfYnVmX3AgIT0gJyAnOyArK2NfYnVmX3ApIDsgLy8gc2tpcCB1bnRpbCBMRgoJY19idWZfZXMgPSBjX2J1Zl9wOyAvLyBlbmQgdGl0bGUKCgkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCglpX3ZhbFswXSA9IGJha2FfYXRvdShjX2J1Zl9wLCAmY19idWZfcCk7IC8vIG1hZwojaWZkZWYgREVCVUdfV1JJVEUKCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDAuIHRpdGxlPVwiJS4qc1wiLCBtYWcgPSAldVxuIiwKCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgKGNfYnVmX2VzIC0gY19idWZfYnMpLCBjX2J1Zl9icywgaV92YWxbMF0pOwojZW5kaWYKCgkrK2NfYnVmX3A7IC8vIHNraXAgTEYKCglkbyB7CgoJCS8vCgkJLy8g4pGg772+77247728772u776d5ZCNCgkJLy8gZXguIFNFQ1RJT05fTkFNReOAgOKRoAoJCS8vCgoJCWlmIChjX2J1Zl9lIC0gY19idWZfcCA8IE1BWF9MSU5FX0xFTkdUSCAmJiBpc19ub3RfZW9mKSB7CgkJCWlmIChiYWthX3JlYWQoZmQsIGJ1ZiwgJmNfYnVmX2UsIGNfYnVmX3AsICZ1X29mZnNldCwgJmlzX25vdF9lb2YpIDwgMCkgcmV0dXJuIC0xOwoJCQlpZiAoYnVmID09IGNfYnVmX2UpIHJldHVybiAwOwoJCQljX2J1Zl9wID0gYnVmOwoJCX0KCQkrK3VfbGluZXM7IGNfYnVmX2IgPSBjX2J1Zl9wOwoKCQlmb3IgKDsgKmNfYnVmX3AgIT0gJ1x4MGEnOyArK2NfYnVmX3ApIDsgLy8gc2tpcCB1bnRpbCBMRgojaWZkZWYgREVCVUdfV1JJVEUKCQkvLyDihpPvvbrvvbrjgaflj5blvpcKCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgMS4gc2VjdGlvbiA9IFwiJS4qc1wiXG4iLAoJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgY19idWZfYik7CiNlbmRpZgoJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoKCQkvLwoJCS8vIOKRoe+9vu+9uO+9vO+9ru++nembhuioiOWApAoJCS8vIGV4LiAxMTIwMCAxMTIwMCAyIEp1biAgOSAyMzoyMzowMCAyMDE444CA4pGhCgkJLy8KCgkJaWYgKGNfYnVmX2UgLSBjX2J1Zl9wIDwgTUFYX0xJTkVfTEVOR1RIICYmIGlzX25vdF9lb2YpIHsKCQkJaWYgKGJha2FfcmVhZChmZCwgYnVmLCAmY19idWZfZSwgY19idWZfcCwgJnVfb2Zmc2V0LCAmaXNfbm90X2VvZikgPCAwKSByZXR1cm4gLTE7CgkJCWlmIChidWYgPT0gY19idWZfZSkgeyA6OmZwcmludGYoc3RkZXJyLCAiZmF0YWwgZXJyb3I6IHVuZXhwZWN0ZWQgZm9ybWF0IDIgKEwlIlBSSXU2NCIpXG4iLCB1X2xpbmVzKTsgcmV0dXJuIC0xO307CgkJCWNfYnVmX3AgPSBidWY7CgkJfQoJCSsrdV9saW5lczsgY19idWZfYiA9IGNfYnVmX3A7CgoJCXVfeHlfcmVjcyA9IGJha2FfYXRvdShjX2J1Zl9wLCAmY19idWZfcCk7CgkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJdV9oYXRlbmEgPSBiYWthX2F0b3UoY19idWZfcCwgJmNfYnVmX3ApOwoJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCXVfc3RyaW5nX3JlY3MgPSBiYWthX2F0b3UoY19idWZfcCwgJmNfYnVmX3ApOwoJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCWZvciAoOyAqY19idWZfcCAhPSAnXHgwYSc7ICsrY19idWZfcCkgOyAvLyBza2lwIHVudGlsIExGCiNpZmRlZiBERUJVR19XUklURQoJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSAyLiB1X3h5X3JlY3MgPSAlZCwgdV9oYXRlbmEgPSAldSwgdV9zdHJpbmdfcmVjcyA9ICV1XG4iLAoJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgdV94eV9yZWNzLCB1X2hhdGVuYSwgdV9zdHJpbmdfcmVjcyk7CiNlbmRpZgoJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoKCQkvLwoJCS8vIOKRou++g++9t++9ve++hAoJCS8vIGV4LiBUaGlzIGlzIHBlbi7jgIDikaIKCQkvLyAgICAgaGVsbG8gd29ybGQu44CA4pGiCgkJLy8KCgkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB1X3N0cmluZ19yZWNzOyArK2kpIHsKCgkJCWlmIChjX2J1Zl9lIC0gY19idWZfcCA8IE1BWF9MSU5FX0xFTkdUSCAmJiBpc19ub3RfZW9mKSB7CgkJCQlpZiAoYmFrYV9yZWFkKGZkLCBidWYsICZjX2J1Zl9lLCBjX2J1Zl9wLCAmdV9vZmZzZXQsICZpc19ub3RfZW9mKSA8IDApIHJldHVybiAtMTsKCQkJCWlmIChidWYgPT0gY19idWZfZSkgeyA6OmZwcmludGYoc3RkZXJyLCAiZmF0YWwgZXJyb3I6IHVuZXhwZWN0ZWQgZm9ybWF0IDMgKEwlIlBSSXU2NCIpXG4iLCB1X2xpbmVzKTsgcmV0dXJuIC0xOyB9OwoJCQkJY19idWZfcCA9IGJ1ZjsKCQkJfQoJCQkrK3VfbGluZXM7IGNfYnVmX2IgPSBjX2J1Zl9wOwoKCQkJZm9yICg7ICpjX2J1Zl9wICE9ICdceDBhJzsgKytjX2J1Zl9wKSA7IC8vIHNraXAgdW50aWwgTEYKI2lmZGVmIERFQlVHX1dSSVRFCgkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgM1sldV0uIHRleHQgPSBcIiUuKnNcIlxuIiwKCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBjX2J1Zl9iKTsKI2VuZGlmCgkJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoJCX0KCgkJLy8KCQkvLyDikaPmlbDlgKQKCQkvLyBleC4geCAxIDLjgIDikaMKCQkvLwoKCQlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHVfeHlfcmVjczsgKytpKSB7CgoJCQlpZiAoY19idWZfZSAtIGNfYnVmX3AgPCBNQVhfTElORV9MRU5HVEggJiYgaXNfbm90X2VvZikgewoJCQkJaWYgKGJha2FfcmVhZChmZCwgYnVmLCAmY19idWZfZSwgY19idWZfcCwgJnVfb2Zmc2V0LCAmaXNfbm90X2VvZikgPCAwKSByZXR1cm4gLTE7CgkJCQlpZiAoYnVmID09IGNfYnVmX2UpIHsgOjpmcHJpbnRmKHN0ZGVyciwgImZhdGFsIGVycm9yOiB1bmV4cGVjdGVkIGZvcm1hdCA0IChMJSJQUkl1NjQiKVxuIiwgdV9saW5lcyk7IHJldHVybiAtMTsgfTsKCQkJCWNfYnVmX3AgPSBidWY7CgkJCX0KCQkJKyt1X2xpbmVzOyBjX2J1Zl9iID0gY19idWZfcDsKCgkJCXN3aXRjaCAoKmNfYnVmX2IpIHsKCgkJCQkvLwoJCQkJLy8gZXguIHggMSAyCgkJCQkvLwoKCQkJCWNhc2UgJ3gnOiB7CgkJCQkJY19idWZfcCArPSAyOyAvLyBza2lwICd4JyBhbmQgU1AKCQkJCQlmb3IgKDsgKmNfYnVmX3AgIT0gJyAnOyArK2NfYnVmX3ApIDsgLy8gc2tpcCB1bnRpbCBTUAoJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCXVfbnVtX3JlY3MgPSBiYWthX2F0b3UoY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCWlmICgqY19idWZfcCAhPSAnXHgwYScpIHsKCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCWNfYnVmX2JjID0gY19idWZfcDsgLy8gYmVnaW4gYwoJCQkJCQlpZiAoKmNfYnVmX2JjID09ICdjJykgewoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwICdjJwoJCQkJCQkJY19idWZfZWMgPSBjX2J1Zl9wOyAvLyBlbmQgYwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJY19idWZfZWMgPSBjX2J1Zl9wOyAvLyBlbmQgYwoJCQkJCQl9CgkJCQkJCWlmICgqY19idWZfcCAhPSAnXHgwYScpIHsKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJaV92YWxbMF0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCQlpX3ZhbFsxXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCWlfdmFsWzJdID0gYmFrYV9hdG9pKGNfYnVmX3AsICZjX2J1Zl9wKTsKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJaV92YWxbM10gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCQlpX3ZhbFs0XSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCWlfdmFsWzVdID0gYmFrYV9hdG9pKGNfYnVmX3AsICZjX2J1Zl9wKTsKCQkJCQkJCWlmICgqY19idWZfcCAhPSAnXHgwYScpIHsKCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQl1X3ZhbFswXSA9IGJha2FfYXRvdShjX2J1Zl9wLCAmY19idWZfcCk7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJCS8vIGV4LiB4IDIgNCBjIC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAgMgoJCQkJCQkJCS8vIGV4LiB4IDIgNCAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwIDIKCQkJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC54WyV1XS4gXCIlY1wiLCB1X251bV9yZWNzID0gJXUsIGM9XCIlLipzXCIsIHFxX3R5cGUxPSVkLCBxcV90eXBlMj0lZCwgcXFfdHlwZTM9JWQsIHFxX3R5cGU0PSVkLCBuYXpvMT0lZCwgbmF6bzI9JWQsIG5hem9jPSV1XG4iLAoJCQkJCQkJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgaSwgKmNfYnVmX2IsIHVfbnVtX3JlY3MsIChjX2J1Zl9lYyAtIGNfYnVmX2JjKSwgY19idWZfYmMsCgkJCQkJCQkJCWlfdmFsWzBdLCBpX3ZhbFsxXSwgaV92YWxbMl0sIGlfdmFsWzNdLCBpX3ZhbFs0XSwgaV92YWxbNV0sIHVfdmFsWzBdKTsKI2VuZGlmCgkJCQkJCQl9IGVsc2UgewojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCQkvLyDihpPvvbrvvbrjgaflj5blvpcKCQkJCQkJCQkvLyBleC4geCAyIDQgYyAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwCgkJCQkJCQkJLy8gZXguIHggMiA0IC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAKCQkJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC54WyV1XS4gXCIlY1wiLCB1X251bV9yZWNzID0gJXUsIGM9XCIlLipzXCIsIHFxX3R5cGUxPSVkLCBxcV90eXBlMj0lZCwgcXFfdHlwZTM9JWQsIHFxX3R5cGU0PSVkLCBuYXpvMT0lZCwgbmF6bzI9JWRcbiIsCgkJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCAqY19idWZfYiwgdV9udW1fcmVjcywgKGNfYnVmX2VjIC0gY19idWZfYmMpLCBjX2J1Zl9iYywKCQkJCQkJCQkJaV92YWxbMF0sIGlfdmFsWzFdLCBpX3ZhbFsyXSwgaV92YWxbM10sIGlfdmFsWzRdLCBpX3ZhbFs1XSk7CiNlbmRpZgoJCQkJCQkJfQoJCQkJCQl9IGVsc2UgewojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJLy8gZXguIHggMiA0IGMKCQkJCQkJCS8vIGV4LiB4IDIgNAoJCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueFsldV0uIFwiJWNcIiwgdV9udW1fcmVjcyA9ICV1LCBjPVwiJS4qc1wiXG4iLAoJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCAqY19idWZfYiwgdV9udW1fcmVjcywgKGNfYnVmX2VjIC0gY19idWZfYmMpLCBjX2J1Zl9iYyk7CiNlbmRpZgoJCQkJCQl9CgkJCQkJfSBlbHNlIHsKI2lmZGVmIERFQlVHX1dSSVRFCgkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkvLyBleC4geCAyIDQKCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueFsldV0uIFwiJWNcIiwgdV9udW1fcmVjcyA9ICV1XG4iLAoJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksICpjX2J1Zl9iLCB1X251bV9yZWNzKTsKI2VuZGlmCgkJCQkJfQoKCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgTEYKCQkJCQl1X3FxX3JlY3MgPSAwOwoKCQkJCQlmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IHVfbnVtX3JlY3M7ICsraikgewoJCQkJCQlpZiAoY19idWZfZSAtIGNfYnVmX3AgPCBNQVhfTElORV9MRU5HVEggJiYgaXNfbm90X2VvZikgewoJCQkJCQkJaWYgKGJha2FfcmVhZChmZCwgYnVmLCAmY19idWZfZSwgY19idWZfcCwgJnVfb2Zmc2V0LCAmaXNfbm90X2VvZikgPCAwKSByZXR1cm4gLTE7CgkJCQkJCQlpZiAoYnVmID09IGNfYnVmX2UpIHsgOjpmcHJpbnRmKHN0ZGVyciwgImZhdGFsIGVycm9yOiB1bmV4cGVjdGVkIGZvcm1hdCA0LnggKEwlIlBSSXU2NCIpXG4iLCB1X2xpbmVzKTsgcmV0dXJuIC0xOyB9OwoJCQkJCQkJY19idWZfcCA9IGJ1ZjsKCQkJCQkJfQoJCQkJCQkrK3VfbGluZXM7IGNfYnVmX2IgPSBjX2J1Zl9wOwoKCQkJCQkJaWYgKCpjX2J1Zl9wID09ICdRJykgewoKCQkJCQkJCS8vCgkJCQkJCQkvLyDikaRRUSDorI7jga7ooYwKCQkJCQkJCS8vIFFRIHN1Ym5hbWUgLTEgMCAwIDEgLTIxMDAwMDAwIDYwMDAwMCAyCgkJCQkJCQkvLwoKCQkJCQkJCWNfYnVmX3AgKz0gMzsgLy8gc2tpcCAnUVEnIGFuZCBTUAoJCQkJCQkJY19idWZfYnMgPSBjX2J1Zl9wOyAvLyBiZWdpbiBzdWJuYW1lCgkJCQkJCQlmb3IgKDsgKmNfYnVmX3AgIT0gJyAnICYmICpjX2J1Zl9wICE9ICdceDBhJyA7ICsrY19idWZfcCkgOyAvLyBza2lwIHVudGlsIFNQIG9yIExGCgkJCQkJCQljX2J1Zl9lcyA9IGNfYnVmX3A7IC8vIGVuZCBzdWJuYW1lCgoJCQkJCQkJaWYgKCpjX2J1Zl9wICE9ICdceDBhJykgewoJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCWNfYnVmX2JjID0gY19idWZfcDsgLy8gYmVnaW4gYwoJCQkJCQkJCWlmICgqY19idWZfYmMgPT0gJ2MnKSB7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCAnYycKCQkJCQkJCQkJY19idWZfZWMgPSBjX2J1Zl9wOyAvLyBlbmQgYwoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCWNfYnVmX2VjID0gY19idWZfcDsgLy8gZW5kIGMKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKCpjX2J1Zl9wICE9ICdceDBhJykgewoJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJaV92YWxbMF0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJaV92YWxbMV0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJaV92YWxbMl0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJaV92YWxbM10gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJaV92YWxbNF0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJaV92YWxbNV0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJCQlpZiAoKmNfYnVmX3AgIT0gJ1x4MGEnKSB7CgkJCQkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCQkJCXVfdmFsWzBdID0gYmFrYV9hdG91KGNfYnVmX3AsICZjX2J1Zl9wKTsKI2lmZGVmIERFQlVHX1dSSVRFCgkJCQkJCQkJCQkvLyDihpPvvbrvvbrjgaflj5blvpcKCQkJCQkJCQkJCS8vIGV4LiBRUSBzdWJuYW1lIGMgLTEgMCAwIDEgLTIxMDAwMDAwIDYwMDAwMCAyCgkJCQkJCQkJCQkvLyBleC4gUVEgc3VibmFtZSAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwIDIKCQkJCQkJCQkJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSA0LnguUVFbJXVdLiBcIiVjXCIsIGM9XCIlLipzXCIsIHFxX3R5cGUxPSVkLCBxcV90eXBlMj0lZCwgcXFfdHlwZTM9JWQsIHFxX3R5cGU0PSVkLCBuYXpvMT0lZCwgbmF6bzI9JWQsIG5hem9jPSV1XG4iLAoJCQkJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCAqY19idWZfYiwgKGNfYnVmX2VjIC0gY19idWZfYmMpLCBjX2J1Zl9iYywKCQkJCQkJCQkJCQlpX3ZhbFswXSwgaV92YWxbMV0sIGlfdmFsWzJdLCBpX3ZhbFszXSwgaV92YWxbNF0sIGlfdmFsWzVdLCB1X3ZhbFswXSk7CiNlbmRpZgoJCQkJCQkJCQl9IGVsc2UgewojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJCQkJLy8gZXguIFFRIHN1Ym5hbWUgYyAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwCgkJCQkJCQkJCQkvLyBleC4gUVEgc3VibmFtZSAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwCgkJCQkJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC54LlFRWyV1XS4gXCIlY1wiLCBjPVwiJS4qc1wiLCBxcV90eXBlMT0lZCwgcXFfdHlwZTI9JWQsIHFxX3R5cGUzPSVkLCBxcV90eXBlND0lZCwgbmF6bzE9JWQsIG5hem8yPSVkXG4iLAoJCQkJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCAqY19idWZfYiwgKGNfYnVmX2VjIC0gY19idWZfYmMpLCBjX2J1Zl9iYywKCQkJCQkJCQkJCQlpX3ZhbFswXSwgaV92YWxbMV0sIGlfdmFsWzJdLCBpX3ZhbFszXSwgaV92YWxbNF0sIGlfdmFsWzVdKTsKI2VuZGlmCgkJCQkJCQkJCX0KCQkJCQkJCQl9IGVsc2UgewojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCQkJLy8g4oaT7726772644Gn5Y+W5b6XCgkJCQkJCQkJCS8vIGV4LiBRUSBzdWJuYW1lIGMKCQkJCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueC5RUVsldV0uIFFRID0gXCIlLipzXCIsIGM9XCIlLipzXCJcbiIsCgkJCQkJCQkJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgaSwKCQkJCQkJCQkJCShjX2J1Zl9lcyAtIGNfYnVmX2JzKSwgY19idWZfYnMsIChjX2J1Zl9lYyAtIGNfYnVmX2JjKSwgY19idWZfYmMpOwojZW5kaWYKCQkJCQkJCQl9CgkJCQkJCQl9IGVsc2UgewojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCQkvLyDihpPvvbrvvbrjgaflj5blvpcKCQkJCQkJCQkvLyBleC4gUVEgc3VibmFtZQoJCQkJCQkJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSA0LnguUVFbJXVdLiBRUSA9IFwiJS4qc1wiXG4iLAoJCQkJCQkJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgaSwKCQkJCQkJCQkJKGNfYnVmX2VzIC0gY19idWZfYnMpLCBjX2J1Zl9icyk7CiNlbmRpZgoJCQkJCQkJfQoKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoJCQkJCQkJKyt1X3FxX3JlY3M7CgkJCQkJCQkrK3VfbnVtX3JlY3M7CgoJCQkJCQl9IGVsc2UgaWYgKCpjX2J1Zl9wID09ICdSJykgewoJCQkJCQkJY19idWZfcCArPSAzOyAvLyBza2lwICdSUicgYW5kIFNQCgkJCQkJCQl1X3ZhbFswXSA9IGJha2FfYXRvdShjX2J1Zl9wLCAmY19idWZfcCk7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJLy8g4oaT7726772644Gn5Y+W5b6XCgkJCQkJCQkvLyBleC4gUlIgMwoJCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueC5SUlsldV0uIG51bWJlciA9ICV1XG4iLAoJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCB1X3ZhbFswXSk7CiNlbmRpZgoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIExGCgkJCQkJCQkrK3VfcXFfcmVjczsKCQkJCQkJCSsrdV9udW1fcmVjczsKCQkJCQkJfSBlbHNlIHsKCgkJCQkJCQkvLwoJCQkJCQkJLy8gMTAwIDEgLTIwMDAgMTAKCQkJCQkJCS8vCgoJCQkJCQkJaV92YWxbMF0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCQlpX3ZhbFsxXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCWlfdmFsWzJdID0gYmFrYV9hdG9pKGNfYnVmX3AsICZjX2J1Zl9wKTsKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJaV92YWxbM10gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueFsldV1bJXVdLiAlZCwgJWQsICVkLCAlZFxuIiwKCQkJCQkJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgaSwgaiAtIHVfcXFfcmVjcywgaV92YWxbMF0sIGlfdmFsWzFdLCBpX3ZhbFsyXSwgaV92YWxbM10pOwojZW5kaWYKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoJCQkJCQl9CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCS8vCgkJCQkvLyBleC4geSAyIDQKCQkJCS8vCgoJCQkJY2FzZSAneSc6IHsKCQkJCQljX2J1Zl9wICs9IDI7IC8vIHNraXAgJ3knIGFuZCBTUAoJCQkJCWZvciAoOyAqY19idWZfcCAhPSAnICc7ICsrY19idWZfcCkgOyAvLyBza2lwIHVudGlsIFNQCgkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJdV9udW1fcmVjcyA9IGJha2FfYXRvdShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJaWYgKCpjX2J1Zl9wICE9ICdceDBhJykgewoJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJY19idWZfYmMgPSBjX2J1Zl9wOyAvLyBiZWdpbiBjCgkJCQkJCWlmICgqY19idWZfYmMgPT0gJ2MnKSB7CgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgJ2MnCgkJCQkJCQljX2J1Zl9lYyA9IGNfYnVmX3A7IC8vIGVuZCBjCgkJCQkJCX0gZWxzZSB7CgkJCQkJCQljX2J1Zl9lYyA9IGNfYnVmX3A7IC8vIGVuZCBjCgkJCQkJCX0KCQkJCQkJaWYgKCpjX2J1Zl9wICE9ICdceDBhJykgewoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCQlpX3ZhbFswXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCWlfdmFsWzFdID0gYmFrYV9hdG9pKGNfYnVmX3AsICZjX2J1Zl9wKTsKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJaV92YWxbMl0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCQlpX3ZhbFszXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgU1AKCQkJCQkJCWlfdmFsWzRdID0gYmFrYV9hdG9pKGNfYnVmX3AsICZjX2J1Zl9wKTsKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJaV92YWxbNV0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwoJCQkJCQkJaWYgKCpjX2J1Zl9wICE9ICdceDBhJykgewoJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCXVfdmFsWzBdID0gYmFrYV9hdG91KGNfYnVmX3AsICZjX2J1Zl9wKTsKI2lmZGVmIERFQlVHX1dSSVRFCgkJCQkJCQkJLy8g4oaT7726772644Gn5Y+W5b6XCgkJCQkJCQkJLy8gZXguIHkgMiA0IGMgLTEgMCAwIDEgLTIxMDAwMDAwIDYwMDAwMCAyCgkJCQkJCQkJLy8gZXguIHkgMiA0IC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAgMgoJCQkJCQkJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSA0LnlbJXVdLiBcIiVjXCIsIHVfbnVtX3JlY3MgPSAldSwgYz1cIiUuKnNcIiwgcXFfdHlwZTE9JWQsIHFxX3R5cGUyPSVkLCBxcV90eXBlMz0lZCwgcXFfdHlwZTQ9JWQsIG5hem8xPSVkLCBuYXpvMj0lZCwgbmF6b2M9JXVcbiIsCgkJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLCAqY19idWZfYiwgdV9udW1fcmVjcywgKGNfYnVmX2VjIC0gY19idWZfYmMpLCBjX2J1Zl9iYywKCQkJCQkJCQkJaV92YWxbMF0sIGlfdmFsWzFdLCBpX3ZhbFsyXSwgaV92YWxbM10sIGlfdmFsWzRdLCBpX3ZhbFs1XSwgdV92YWxbMF0pOwojZW5kaWYKCQkJCQkJCX0gZWxzZSB7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJCS8vIGV4LiB5IDIgNCBjIC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAKCQkJCQkJCQkvLyBleC4geSAyIDQgLTEgMCAwIDEgLTIxMDAwMDAwIDYwMDAwMAoJCQkJCQkJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSA0LnlbJXVdLiBcIiVjXCIsIHVfbnVtX3JlY3MgPSAldSwgYz1cIiUuKnNcIiwgcXFfdHlwZTE9JWQsIHFxX3R5cGUyPSVkLCBxcV90eXBlMz0lZCwgcXFfdHlwZTQ9JWQsIG5hem8xPSVkLCBuYXpvMj0lZFxuIiwKCQkJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksICpjX2J1Zl9iLCB1X251bV9yZWNzLCAoY19idWZfZWMgLSBjX2J1Zl9iYyksIGNfYnVmX2JjLAoJCQkJCQkJCQlpX3ZhbFswXSwgaV92YWxbMV0sIGlfdmFsWzJdLCBpX3ZhbFszXSwgaV92YWxbNF0sIGlfdmFsWzVdKTsKI2VuZGlmCgkJCQkJCQl9CgkJCQkJCX0gZWxzZSB7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJLy8g4oaT7726772644Gn5Y+W5b6XCgkJCQkJCQkvLyBleC4geSAyIDQgYwoJCQkJCQkJLy8gZXguIHkgMiA0CgkJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC55WyV1XS4gXCIlY1wiLCB1X251bV9yZWNzID0gJXUsIGM9XCIlLipzXCJcbiIsCgkJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksICpjX2J1Zl9iLCB1X251bV9yZWNzLCAoY19idWZfZWMgLSBjX2J1Zl9iYyksIGNfYnVmX2JjKTsKI2VuZGlmCgkJCQkJCX0KCQkJCQl9IGVsc2UgewojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJLy8g4oaT7726772644Gn5Y+W5b6XCgkJCQkJCS8vIGV4LiB5IDIgNAoJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC55WyV1XS4gXCIlY1wiLCB1X251bV9yZWNzID0gJXVcbiIsCgkJCQkJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgaSwgKmNfYnVmX2IsIHVfbnVtX3JlY3MpOwojZW5kaWYKCQkJCQl9CgoJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoJCQkJCXVfcXFfcmVjcyA9IDA7CgoJCQkJCWZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgdV9udW1fcmVjczsgKytqKSB7CgkJCQkJCWlmIChjX2J1Zl9lIC0gY19idWZfcCA8IE1BWF9MSU5FX0xFTkdUSCAmJiBpc19ub3RfZW9mKSB7CgkJCQkJCQlpZiAoYmFrYV9yZWFkKGZkLCBidWYsICZjX2J1Zl9lLCBjX2J1Zl9wLCAmdV9vZmZzZXQsICZpc19ub3RfZW9mKSA8IDApIHJldHVybiAtMTsKCQkJCQkJCWlmIChidWYgPT0gY19idWZfZSkgeyA6OmZwcmludGYoc3RkZXJyLCAiZmF0YWwgZXJyb3I6IHVuZXhwZWN0ZWQgZm9ybWF0IDQueSAoTCUiUFJJdTY0IilcbiIsIHVfbGluZXMpOyByZXR1cm4gLTE7IH07CgkJCQkJCQljX2J1Zl9wID0gYnVmOwoJCQkJCQl9CgkJCQkJCSsrdV9saW5lczsgY19idWZfYiA9IGNfYnVmX3A7CgoJCQkJCQlpZiAoKmNfYnVmX3AgPT0gJ1EnKSB7CgoJCQkJCQkJLy8KCQkJCQkJCS8vIOKRpFFRIOisjuOBruihjAoJCQkJCQkJLy8gUVEgc3VibmFtZSAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwIDIKCQkJCQkJCS8vCgoJCQkJCQkJY19idWZfcCArPSAzOyAvLyBza2lwICdRUScgYW5kIFNQCgkJCQkJCQljX2J1Zl9icyA9IGNfYnVmX3A7IC8vIGJlZ2luIHN1Ym5hbWUKCQkJCQkJCWZvciAoOyAqY19idWZfcCAhPSAnICcgJiYgKmNfYnVmX3AgIT0gJ1x4MGEnIDsgKytjX2J1Zl9wKSA7IC8vIHNraXAgdW50aWwgU1Agb3IgTEYKCQkJCQkJCWNfYnVmX2VzID0gY19idWZfcDsgLy8gZW5kIHN1Ym5hbWUKCgkJCQkJCQlpZiAoKmNfYnVmX3AgIT0gJ1x4MGEnKSB7CgkJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIFNQCgkJCQkJCQkJY19idWZfYmMgPSBjX2J1Zl9wOyAvLyBiZWdpbiBjCgkJCQkJCQkJaWYgKCpjX2J1Zl9iYyA9PSAnYycpIHsKCQkJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwICdjJwoJCQkJCQkJCQljX2J1Zl9lYyA9IGNfYnVmX3A7IC8vIGVuZCBjCgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJY19idWZfZWMgPSBjX2J1Zl9wOyAvLyBlbmQgYwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoKmNfYnVmX3AgIT0gJ1x4MGEnKSB7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQlpX3ZhbFswXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQlpX3ZhbFsxXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQlpX3ZhbFsyXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQlpX3ZhbFszXSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQlpX3ZhbFs0XSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQlpX3ZhbFs1XSA9IGJha2FfYXRvaShjX2J1Zl9wLCAmY19idWZfcCk7CgkJCQkJCQkJCWlmICgqY19idWZfcCAhPSAnXHgwYScpIHsKCQkJCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJCQkJdV92YWxbMF0gPSBiYWthX2F0b3UoY19idWZfcCwgJmNfYnVmX3ApOwojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJCQkJLy8gZXguIFFRIHN1Ym5hbWUgYyAtMSAwIDAgMSAtMjEwMDAwMDAgNjAwMDAwIDIKCQkJCQkJCQkJCS8vIGV4LiBRUSBzdWJuYW1lIC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAgMgoJCQkJCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueS5RUVsldV0uIFwiJWNcIiwgYz1cIiUuKnNcIiwgcXFfdHlwZTE9JWQsIHFxX3R5cGUyPSVkLCBxcV90eXBlMz0lZCwgcXFfdHlwZTQ9JWQsIG5hem8xPSVkLCBuYXpvMj0lZCwgbmF6b2M9JXVcbiIsCgkJCQkJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksICpjX2J1Zl9iLCAoY19idWZfZWMgLSBjX2J1Zl9iYyksIGNfYnVmX2JjLAoJCQkJCQkJCQkJCWlfdmFsWzBdLCBpX3ZhbFsxXSwgaV92YWxbMl0sIGlfdmFsWzNdLCBpX3ZhbFs0XSwgaV92YWxbNV0sIHVfdmFsWzBdKTsKI2VuZGlmCgkJCQkJCQkJCX0gZWxzZSB7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJCQkJLy8g4oaT7726772644Gn5Y+W5b6XCgkJCQkJCQkJCQkvLyBleC4gUVEgc3VibmFtZSBjIC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAKCQkJCQkJCQkJCS8vIGV4LiBRUSBzdWJuYW1lIC0xIDAgMCAxIC0yMTAwMDAwMCA2MDAwMDAKCQkJCQkJCQkJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSA0LnkuUVFbJXVdLiBcIiVjXCIsIGM9XCIlLipzXCIsIHFxX3R5cGUxPSVkLCBxcV90eXBlMj0lZCwgcXFfdHlwZTM9JWQsIHFxX3R5cGU0PSVkLCBuYXpvMT0lZCwgbmF6bzI9JWRcbiIsCgkJCQkJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksICpjX2J1Zl9iLCAoY19idWZfZWMgLSBjX2J1Zl9iYyksIGNfYnVmX2JjLAoJCQkJCQkJCQkJCWlfdmFsWzBdLCBpX3ZhbFsxXSwgaV92YWxbMl0sIGlfdmFsWzNdLCBpX3ZhbFs0XSwgaV92YWxbNV0pOwojZW5kaWYKCQkJCQkJCQkJfQoJCQkJCQkJCX0gZWxzZSB7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJCQkvLyDihpPvvbrvvbrjgaflj5blvpcKCQkJCQkJCQkJLy8gZXguIFFRIHN1Ym5hbWUgYwoJCQkJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC55LlFRWyV1XS4gUVEgPSBcIiUuKnNcIiwgYz1cIiUuKnNcIlxuIiwKCQkJCQkJCQkJCXVfbGluZXMsIHVfb2Zmc2V0ICsgKGNfYnVmX2IgLSBidWYpLCAoY19idWZfcCAtIGNfYnVmX2IpLCBpLAoJCQkJCQkJCQkJKGNfYnVmX2VzIC0gY19idWZfYnMpLCBjX2J1Zl9icywgKGNfYnVmX2VjIC0gY19idWZfYmMpLCBjX2J1Zl9iYyk7CiNlbmRpZgoJCQkJCQkJCX0KCQkJCQkJCX0gZWxzZSB7CiNpZmRlZiBERUJVR19XUklURQoJCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJCS8vIGV4LiBRUSBzdWJuYW1lIGMKCQkJCQkJCQk6OmZwcmludGYoc3Rkb3V0LCAiKEwlIlBSSXU2NCI6JSJQUkl1NjQiLUMlZCkgNC55LlFRWyV1XS4gUVEgPSBcIiUuKnNcIlxuIiwKCQkJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksCgkJCQkJCQkJCShjX2J1Zl9lcyAtIGNfYnVmX2JzKSwgY19idWZfYnMpOwojZW5kaWYKCQkJCQkJCX0KCgkJCQkJCQkrK2NfYnVmX3A7IC8vIHNraXAgTEYKCQkJCQkJCSsrdV9xcV9yZWNzOwoJCQkJCQkJKyt1X251bV9yZWNzOwoKCQkJCQkJfSBlbHNlIGlmICgqY19idWZfcCA9PSAnUicpIHsKCQkJCQkJCWNfYnVmX3AgKz0gMzsgLy8gc2tpcCAnUlInIGFuZCBTUAoJCQkJCQkJdV92YWxbMF0gPSBiYWthX2F0b3UoY19idWZfcCwgJmNfYnVmX3ApOwojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJLy8gZXguIFJSIDMKCQkJCQkJCTo6ZnByaW50ZihzdGRvdXQsICIoTCUiUFJJdTY0IjolIlBSSXU2NCItQyVkKSA0LnkuUlJbJXVdLiBudW1iZXIgPSAldVxuIiwKCQkJCQkJCQl1X2xpbmVzLCB1X29mZnNldCArIChjX2J1Zl9iIC0gYnVmKSwgKGNfYnVmX3AgLSBjX2J1Zl9iKSwgaSwgdV92YWxbMF0pOwojZW5kaWYKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBMRgoJCQkJCQkJKyt1X3FxX3JlY3M7CgkJCQkJCQkrK3VfbnVtX3JlY3M7CgkJCQkJCX0gZWxzZSB7CgoJCQkJCQkJLy8KCQkJCQkJCS8vIGV4LiAtMTAwIDEwMDAwCgkJCQkJCQkvLwoKCQkJCQkJCWlfdmFsWzBdID0gYmFrYV9hdG9pKGNfYnVmX3AsICZjX2J1Zl9wKTsKCQkJCQkJCSsrY19idWZfcDsgLy8gc2tpcCBTUAoJCQkJCQkJaV92YWxbMV0gPSBiYWthX2F0b2koY19idWZfcCwgJmNfYnVmX3ApOwojaWZkZWYgREVCVUdfV1JJVEUKCQkJCQkJCS8vIOKGk++9uu+9uuOBp+WPluW+lwoJCQkJCQkJOjpmcHJpbnRmKHN0ZG91dCwgIihMJSJQUkl1NjQiOiUiUFJJdTY0Ii1DJWQpIDQueVsldV1bJXVdLiAlZCwgJWRcbiIsCgkJCQkJCQkJdV9saW5lcywgdV9vZmZzZXQgKyAoY19idWZfYiAtIGJ1ZiksIChjX2J1Zl9wIC0gY19idWZfYiksIGksIGogLSB1X3FxX3JlY3MsIGlfdmFsWzBdLCBpX3ZhbFsxXSk7CiNlbmRpZgoJCQkJCQkJKytjX2J1Zl9wOyAvLyBza2lwIExGCgkJCQkJCX0KCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJZGVmYXVsdDoKCQkJCQk6OmZwcmludGYoc3RkZXJyLCAiZmF0YWwgZXJyb3I6IHVuZXhwZWN0ZWQgZm9ybWF0IDQuMSAoTCUiUFJJdTY0IilcbiIsIHVfbGluZXMpOwoJCQkJCXJldHVybiAtMTsKCQkJfQoJCX0KCgl9IHdoaWxlIChjX2J1Zl9lICE9IGNfYnVmX3AgJiYgaXNfbm90X2VvZik7CgoJcmV0dXJuIDA7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewoKCWlmIChhcmdjICE9IDIpIHsKCQk6OmZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIDxmaWxlcGF0aD5cbiIsIGFyZ3ZbMF0pOwoJCXJldHVybiAxOwoJfQoKCWNoYXIqIGZpbGVuYW1lID0gYXJndlsxXTsKCglpbnQgZmQgPSA6Om9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZfE9fTEFSR0VGSUxFKTsKCglpZiAoZmQgPCAwKSB7CgkJOjpmcHJpbnRmKHN0ZGVyciwgImZhdGFsIGVycm9yOiBvcGVuIGZpbGUgZXJyb3IgXCIlc1wiXG4iLCBmaWxlbmFtZSk7CgkJcmV0dXJuIDE7Cgl9CgoJOjpmcHJpbnRmKHN0ZGVyciwgInN0cmF0Li4uICVzICVzICVzXG4iLCBhcmd2WzBdLCBhcmd2WzFdLCBhcmd2WzJdKTsKCgl0aW1lX3QgdV9zdGFydCA9IHRpbWUoTlVMTCk7CglpZiAoOjpyZWFkX3NlY3Rpb24oZmQpIDwgMCkgeyBjbG9zZShmZCk7IHJldHVybiAxOyB9OwoJOjpmcHJpbnRmKHN0ZG91dCwgIiVkIiwgdGltZShOVUxMKSAtIHVfc3RhcnQpOwoKCTo6ZnByaW50ZihzdGRlcnIsICJkb25lLi4uICVzICVzICVzXG4iLCBhcmd2WzBdLCBhcmd2WzFdLCBhcmd2WzJdKTsKCWNsb3NlKGZkKTsKCXJldHVybiAwOwp9Cg==
compilation info
prog.cpp: In function ‘int baka_atoi(const char*, const char**)’:
prog.cpp:16:21: error: ‘isdigit’ was not declared in this scope
for (; isdigit(*buf); ++buf) {
^
prog.cpp: In function ‘unsigned int baka_atou(const char*, const char**)’:
prog.cpp:25:21: error: ‘isdigit’ was not declared in this scope
for (; isdigit(*buf); ++buf) {
^
prog.cpp: At global scope:
prog.cpp:32:95: error: ‘uint64_t’ has not been declared
inline static int baka_read(int fd, char* p_buf, char const** pc_buf_e, char const* c_buf_p, uint64_t* pu_buf_offset, bool* pb_is_not_eof) {
^~~~~~~~
prog.cpp: In function ‘int baka_read(int, char*, const char**, const char*, int*, bool*)’:
prog.cpp:34:2: error: ‘::memcpy’ has not been declared
::memcpy(p_buf, c_buf_p, *pc_buf_e - c_buf_p);
^~
prog.cpp:39:15: error: ‘::read’ has not been declared
int i_size = ::read(fd, p_buf, READ_BLOCK_SIZE);
^~
prog.cpp:40:20: error: ‘::fprintf’ has not been declared
if (i_size < 0) { ::fprintf(stderr, "read error\n"); return -1;}
^~
prog.cpp:40:30: error: ‘stderr’ was not declared in this scope
if (i_size < 0) { ::fprintf(stderr, "read error\n"); return -1;}
^~~~~~
prog.cpp: In function ‘int read_section(int)’:
prog.cpp:52:2: error: ‘uint64_t’ was not declared in this scope
uint64_t u_offset = 0;
^~~~~~~~
prog.cpp:67:11: error: expected ‘;’ before ‘u_lines’
uint64_t u_lines = 0;
^~~~~~~
prog.cpp:68:2: error: ‘int32_t’ was not declared in this scope
int32_t i_val[8]; // とりあえずの一時バッファ
^~~~~~~
prog.cpp:69:2: error: ‘uint32_t’ was not declared in this scope
uint32_t u_val[8]; // とりあえずの一時バッファ
^~~~~~~~
prog.cpp:77:46: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:81:4: error: ‘u_lines’ was not declared in this scope
++u_lines; c_buf_b = c_buf_p;
^~~~~~~
prog.cpp:89:2: error: ‘i_val’ was not declared in this scope
i_val[0] = baka_atou(c_buf_p, &c_buf_p); // mag
^~~~~
prog.cpp:106:47: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:126:47: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:127:26: error: ‘::fprintf’ has not been declared
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 2 (L%"PRIu64")\n", u_lines); return -1;};
^~
prog.cpp:127:36: error: ‘stderr’ was not declared in this scope
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 2 (L%"PRIu64")\n", u_lines); return -1;};
^~~~~~
prog.cpp:127:88: error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [39]’, ‘long unsigned int’ arguments
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 2 (L%"PRIu64")\n", u_lines); return -1;};
^~~~~
prog.cpp:155:48: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:156:27: error: ‘::fprintf’ has not been declared
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 3 (L%"PRIu64")\n", u_lines); return -1; };
^~
prog.cpp:156:37: error: ‘stderr’ was not declared in this scope
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 3 (L%"PRIu64")\n", u_lines); return -1; };
^~~~~~
prog.cpp:156:89: error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [39]’, ‘long unsigned int’ arguments
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 3 (L%"PRIu64")\n", u_lines); return -1; };
^~~~~
prog.cpp:178:48: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:179:27: error: ‘::fprintf’ has not been declared
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4 (L%"PRIu64")\n", u_lines); return -1; };
^~
prog.cpp:179:37: error: ‘stderr’ was not declared in this scope
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4 (L%"PRIu64")\n", u_lines); return -1; };
^~~~~~
prog.cpp:179:89: error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [39]’, ‘long unsigned int’ arguments
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4 (L%"PRIu64")\n", u_lines); return -1; };
^~~~~
prog.cpp:219:9: error: ‘u_val’ was not declared in this scope
u_val[0] = baka_atou(c_buf_p, &c_buf_p);
^~~~~
prog.cpp:261:51: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:262:30: error: ‘::fprintf’ has not been declared
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4.x (L%"PRIu64")\n", u_lines); return -1; };
^~
prog.cpp:262:40: error: ‘stderr’ was not declared in this scope
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4.x (L%"PRIu64")\n", u_lines); return -1; };
^~~~~~
prog.cpp:262:94: error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [41]’, ‘long unsigned int’ arguments
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4.x (L%"PRIu64")\n", u_lines); return -1; };
^~~~~
prog.cpp:303:11: error: ‘u_val’ was not declared in this scope
u_val[0] = baka_atou(c_buf_p, &c_buf_p);
^~~~~
prog.cpp:347:8: error: ‘u_val’ was not declared in this scope
u_val[0] = baka_atou(c_buf_p, &c_buf_p);
^~~~~
prog.cpp:414:9: error: ‘u_val’ was not declared in this scope
u_val[0] = baka_atou(c_buf_p, &c_buf_p);
^~~~~
prog.cpp:456:51: error: ‘u_offset’ was not declared in this scope
if (baka_read(fd, buf, &c_buf_e, c_buf_p, &u_offset, &is_not_eof) < 0) return -1;
^~~~~~~~
prog.cpp:457:30: error: ‘::fprintf’ has not been declared
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4.y (L%"PRIu64")\n", u_lines); return -1; };
^~
prog.cpp:457:40: error: ‘stderr’ was not declared in this scope
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4.y (L%"PRIu64")\n", u_lines); return -1; };
^~~~~~
prog.cpp:457:94: error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [41]’, ‘long unsigned int’ arguments
if (buf == c_buf_e) { ::fprintf(stderr, "fatal error: unexpected format 4.y (L%"PRIu64")\n", u_lines); return -1; };
^~~~~
prog.cpp:498:11: error: ‘u_val’ was not declared in this scope
u_val[0] = baka_atou(c_buf_p, &c_buf_p);
^~~~~
prog.cpp:542:8: error: ‘u_val’ was not declared in this scope
u_val[0] = baka_atou(c_buf_p, &c_buf_p);
^~~~~
prog.cpp:573:6: error: ‘::fprintf’ has not been declared
::fprintf(stderr, "fatal error: unexpected format 4.1 (L%"PRIu64")\n", u_lines);
^~
prog.cpp:573:16: error: ‘stderr’ was not declared in this scope
::fprintf(stderr, "fatal error: unexpected format 4.1 (L%"PRIu64")\n", u_lines);
^~~~~~
prog.cpp:573:70: error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [41]’, ‘long unsigned int’ arguments
::fprintf(stderr, "fatal error: unexpected format 4.1 (L%"PRIu64")\n", u_lines);
^~~~~
prog.cpp: In function ‘int main(int, char**)’:
prog.cpp:586:3: error: ‘::fprintf’ has not been declared
::fprintf(stderr, "Usage: %s <filepath>\n", argv[0]);
^~
prog.cpp:586:13: error: ‘stderr’ was not declared in this scope
::fprintf(stderr, "Usage: %s <filepath>\n", argv[0]);
^~~~~~
prog.cpp:592:11: error: ‘::open’ has not been declared
int fd = ::open(filename, O_RDONLY|O_LARGEFILE);
^~
prog.cpp:592:28: error: ‘O_RDONLY’ was not declared in this scope
int fd = ::open(filename, O_RDONLY|O_LARGEFILE);
^~~~~~~~
prog.cpp:592:37: error: ‘O_LARGEFILE’ was not declared in this scope
int fd = ::open(filename, O_RDONLY|O_LARGEFILE);
^~~~~~~~~~~
prog.cpp:595:3: error: ‘::fprintf’ has not been declared
::fprintf(stderr, "fatal error: open file error \"%s\"\n", filename);
^~
prog.cpp:595:13: error: ‘stderr’ was not declared in this scope
::fprintf(stderr, "fatal error: open file error \"%s\"\n", filename);
^~~~~~
prog.cpp:599:2: error: ‘::fprintf’ has not been declared
::fprintf(stderr, "strat... %s %s %s\n", argv[0], argv[1], argv[2]);
^~
prog.cpp:599:12: error: ‘stderr’ was not declared in this scope
::fprintf(stderr, "strat... %s %s %s\n", argv[0], argv[1], argv[2]);
^~~~~~
prog.cpp:601:2: error: ‘time_t’ was not declared in this scope
time_t u_start = time(NULL);
^~~~~~
prog.cpp:602:40: error: ‘close’ was not declared in this scope
if (::read_section(fd) < 0) { close(fd); return 1; };
^
prog.cpp:603:2: error: ‘::fprintf’ has not been declared
::fprintf(stdout, "%d", time(NULL) - u_start);
^~
prog.cpp:603:12: error: ‘stdout’ was not declared in this scope
::fprintf(stdout, "%d", time(NULL) - u_start);
^~~~~~
prog.cpp:603:31: error: ‘NULL’ was not declared in this scope
::fprintf(stdout, "%d", time(NULL) - u_start);
^~~~
prog.cpp:603:35: error: ‘time’ was not declared in this scope
::fprintf(stdout, "%d", time(NULL) - u_start);
^
prog.cpp:603:39: error: ‘u_start’ was not declared in this scope
::fprintf(stdout, "%d", time(NULL) - u_start);
^~~~~~~
prog.cpp:605:2: error: ‘::fprintf’ has not been declared
::fprintf(stderr, "done... %s %s %s\n", argv[0], argv[1], argv[2]);
^~
prog.cpp:606:10: error: ‘close’ was not declared in this scope
close(fd);
^
stdout