トップ «前の日記(2011-06-30) 最新 次の日記(2011-07-02)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|

2011-07-01 :-(

_ 午前

0500 起床

0830 出勤

0900 テスト

_ 午後

1300 テスト

_

1700 退勤

1930 C リハビリ

2130 飯

_ 世界が望んだ忘れもの

ZONE が歌ってたアレは当時は「友人たちとの夏の思い出は最高なのよとても素敵な思い出になるのよ感動なのよ大人になってから思い出すときっと泣けるよひととして良い思い出になるのよ」という歌詞と曲の感動の押しつけが鼻について隣人部の私にそのようなドラマチックな( ドラマ風な! )展開があるわけねーだろ常識的に考えてようするに非常に欝陶しいし嫌いだったんだが、あの花を見てから印象がまったく変わった。この歌は素敵だ。あの花のためにある歌だ。歌を聴いているだけでまた泣けてくる。( 相変わらず自分の経験に基づいた感動ではないあたりが隣人部クオリティ! )

ところで編曲は @btc_toku だったのか今更気付いてごめんなさい。

_ [NetBSD]FILE

#include "ourhdr.h"

void pr_stdio( const char*, FILE* );

int main( int argc, char* argv[] )
{
  FILE* fp;

  fputs( "enter any charcter\n", stdout );
  if( getchar() == EOF )
    err_sys( "getchar error" );

  fputs( "one line to standard error\n", stderr );
  pr_stdio( "stdin", stdin );
  pr_stdio( "stdout",  stdout);
  pr_stdio( "stderr",  stderr);

  if( ( fp = fopen( "/etc/motd", "r" ) ) == NULL )
    err_sys( "fopen error" );

  if( getc( fp ) == EOF )
    err_sys( "getc error" );

  pr_stdio( "/etc/motd", fp );

  exit( 0 );

}

void pr_stdio( const char* name, FILE* fp )
{
  printf( "stream = %s, ", name );
  if( fp->_flag & _IONBF) printf( "unbuffered" );
  else if( fp->_flag & _IONBF) printf( "line buffered" );
  else  printf( "fully buffered" );
  printf( ", buffer size = %d\n", fp->_bufsiz );

}

cc

05/buffer0.c: In function 'pr_stdio':
05/buffer0.c:33: error: 'FILE' has no member named '_flag'
05/buffer0.c:34: error: 'FILE' has no member named '_flag'
05/buffer0.c:36: error: 'FILE' has no member named '_bufsiz'

ほむ?

/usr/include/stdio.h

typedef struct __sFILE {
        unsigned char *_p;      /* current position in (some) buffer */
        int     _r;             /* read space left for getc() */
        int     _w;             /* write space left for putc() */
        unsigned short _flags;  /* flags, below; this FILE is free if 0 */
        short   _file;          /* fileno, if Unix descriptor, else -1 */
        struct  __sbuf _bf;     /* the buffer (at least 1 byte, if !NULL) */
        int     _lbfsize;       /* 0 or -_bf._size, for inline putc */

        /* operations */
        void    *_cookie;       /* cookie passed to io functions */
        int     (*_close)(void *);
        int     (*_read) (void *, char *, int);
        fpos_t  (*_seek) (void *, fpos_t, int);
        int     (*_write)(void *, const char *, int);

        /* file extension */
        struct  __sbuf _ext;

        /* separate buffer for long sequences of ungetc() */
        unsigned char *_up;     /* saved _p when _p is doing ungetc data */
        int     _ur;            /* saved _r when _r is counting ungetc data */

        /* tricks to meet minimum requirements even when malloc() fails */
        unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
        unsigned char _nbuf[1]; /* guarantee a getc() buffer */

        /* separate buffer for fgetln() when line crosses buffer boundary */
        struct  __sbuf _lb;     /* buffer for fgetln() */

        /* Unix stdio files get aligned to block boundaries on fseek() */
        int     _blksize;       /* stat.st_blksize (may be != _bf._size) */
        fpos_t  _offset;        /* current lseek offset */
} FILE;

ほむほむ?

% diff -u 05/buffer0.c 05/buffer1.c
--- 05/buffer0.c        2011-06-22 22:31:26.000000000 +0900
+++ 05/buffer1.c        2011-06-22 22:40:27.000000000 +0900
@@ -30,10 +30,10 @@
 void pr_stdio( const char* name, FILE* fp )
 {
   printf( "stream = %s, ", name );
-  if( fp->_flag & _IONBF) printf( "unbuffered" );
-  else if( fp->_flag & _IONBF) printf( "line buffered" );
+  if( fp->_flags & _IONBF) printf( "unbuffered" );
+  else if( fp->_flags & _IONBF) printf( "line buffered" );
   else  printf( "fully buffered" );
-  printf( ", buffer size = %d\n", fp->_bufsiz );
+  printf( ", buffer size = %d\n", fp->_bf._size );

 }

cc && execute

% ./a.out
enter any charcter

one line to standard error
stream = stdin, fully buffered, buffer size = 4096
stream = stdout, fully buffered, buffer size = 4096
stream = stderr, unbuffered, buffer size = 1
stream = /etc/motd, fully buffered, buffer size = 8192