こんばんは。
omura@....jp writes:
> testutility_test.cに
> #include <stdlib.h>
> を追加
>
> testutility_test.[hc]の
> #ifdef __unix
> を
> #ifdef 1
> に変更
>
> そしてmakeするとどうなるでしょうか?
ちょっと手をいれてみました。
diff は、このメールの最後につけておきます。
yyamano@bigfoot% gmake test
gcc -g -Wall -o tu testutility.c testutility_test.c
gcc -g -Wall -o tf testutility.c testutility_fail_test.c
Running tu
.....
Running tf
..
tf で `..' しか出力されないのは期待している動作なんでしょうか?
> >ちなみに http://www.ki.rim.or.jp/~omura/image/Rabbit.gif の
> >うさぎ/あひるは、ウィトゲンシュタインでしたっけ?
>
> へへへ。そのとおりです(^^)
記号論まわりはオブジェクト指向と親和性が高いんでしょうか?
Allen Holub が
http://www.ibm.co.jp/developerworks/components/001117/j_oo-index.html
に書いていた The OO design process: Getting started How to prioritize
の中でも、言語学がうんぬん(構造主義言語学との類似?)という文がありまし
たけど。
アナリシスパターンなんかは、ソフトウェアというより社会学とか文化人類学
の本みたいな印象をうけましたし、僕にとっては興味深いところです。
-- やまの
diff -u -N /tmp/orig/dos2unix ./dos2unix
--- /tmp/orig/dos2unix Thu Jan 1 09:00:00 1970
+++ ./dos2unix Tue Nov 28 00:32:48 2000
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+files="makefile testutility.c testutility.h \
+ testutility_fail_test.c testutility_test.c"
+
+
+for f in $files
+do
+ sed -e 's///g' $f > tmp.$$
+ mv $f ${f}.orig && mv tmp.$$ $f
+done
diff -u -N /tmp/orig/makefile ./makefile
--- /tmp/orig/makefile Tue Nov 28 01:16:08 2000
+++ ./makefile Tue Nov 28 01:19:31 2000
@@ -1,15 +1,29 @@
+#
CC=gcc
+RM=rm
+#CFLAGS=-g -Wall -DHAVE_FAIL_BLOCK
+
+# Solaris 2.6
+#CFLAGS=-g -Wall
+# NetBSD 1.5
+CFLAGS=-g -Wall
+
+PROGS= tu tf
SRCN=testutility.c testutility_test.c
SRCF=testutility.c testutility_fail_test.c
+all: $(PROGS)
-testc: $(SRC)
- $(CC) -g -o tu $(SRCN)
+tu: $(SRCN)
+ $(CC) $(CFLAGS) -o tu $(SRCN)
-testu:
- $(CC) -g -o tf $(SRCF)
+tf: $(SRCF)
+ $(CC) $(CFLAGS) -o tf $(SRCF)
clean:
- $(RM) tu tf core a.out *.o
+ -$(RM) $(PROGS) core a.out *.o *~
+
+test: $(PROGS)
+ @for f in $(PROGS); do echo "Running $$f" && ./$$f && echo ""; done
diff -u -N /tmp/orig/testutility.c ./testutility.c
--- /tmp/orig/testutility.c Tue Nov 28 01:16:08 2000
+++ ./testutility.c Tue Nov 28 00:40:54 2000
@@ -98,7 +98,7 @@
printf( "." );
}/* test_frame */
-#ifdef __unix
+#ifndef HAVE_FAIL_BLOCK
/*------------------------------------------------------------------------*/
/* some functions directly exit.
* fail_block is designed for such functions
@@ -107,7 +107,7 @@
*/
int fail_block( test_fn fn, TEST_ENV* env ){
pid_t pid;
- if ( ( pid = fork1() ) == 0 ) { /*child */
+ if ( ( pid = fork() ) == 0 ) { /*child */
close( 1 ); close( 2 ); /* I prefer ignoring the message of the function */
if ( env ) env->setUp( (void**)&env->data );
if ( env ) fn( env->data ); else fn( NULL );
@@ -122,6 +122,6 @@
exit( INT_MIN );
}
}/* fail_block */
-#endif
+#endif /* HAVE_FAIL_BLOCK */
diff -u -N /tmp/orig/testutility.h ./testutility.h
--- /tmp/orig/testutility.h Tue Nov 28 01:16:08 2000
+++ ./testutility.h Tue Nov 28 00:41:53 2000
@@ -68,7 +68,7 @@
#define TEST_FRAME0( X ) test_frame( #X, X, NULL )
-#ifdef __unix
+#ifndef HAVE_FAIL_BLOCK
int fail_block( test_fn fn, TEST_ENV* env );
#endif
diff -u -N /tmp/orig/testutility_test.c ./testutility_test.c
--- /tmp/orig/testutility_test.c Tue Nov 28 01:16:08 2000
+++ ./testutility_test.c Tue Nov 28 00:54:46 2000
@@ -1,5 +1,6 @@
/* here are for testutility */
#include <string.h>
+#include <stdlib.h>
#include "testutility.h"
/**************** test functions ****************/
@@ -34,7 +35,7 @@
void su0( void **data ){
MY_DATA **mydata = (MY_DATA**)data;
MY_DATA *d = (MY_DATA*)malloc( sizeof( MY_DATA ) );
- d->str1 = (char*)malloc( sizeof( TESTSTR1 ) );
+ d->str1 = (char*)malloc( sizeof( TESTSTR1 )+1 );
strcpy( d->str1, TESTSTR1 );
*mydata = d;
}
@@ -42,7 +43,7 @@
void td0( void **data ){
MY_DATA **mydata = (MY_DATA**)data;
MY_DATA *d = *mydata;
- free( &d->str1 );
+ free( d->str1 );
free( *mydata );
}