Module Name: othersrc Committed By: agc Date: Sat Jun 1 22:25:10 UTC 2013
Modified Files: othersrc/external/historical/eawk/bin: Makefile expected othersrc/external/historical/eawk/extend: Makefile Added Files: othersrc/external/historical/eawk/extend/bufgap: Makefile bufgap.c shlib_version Log Message: Add a bufgap extension, based on the buffer gap routines in othersrc. Only compile in extensinos if we have the appropriate infrastructure in place - needs to be revisited for cross-building (if ever that were to happen). To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 othersrc/external/historical/eawk/bin/Makefile \ othersrc/external/historical/eawk/bin/expected cvs rdiff -u -r1.1 -r1.2 othersrc/external/historical/eawk/extend/Makefile cvs rdiff -u -r0 -r1.1 \ othersrc/external/historical/eawk/extend/bufgap/Makefile \ othersrc/external/historical/eawk/extend/bufgap/bufgap.c \ othersrc/external/historical/eawk/extend/bufgap/shlib_version Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: othersrc/external/historical/eawk/bin/Makefile diff -u othersrc/external/historical/eawk/bin/Makefile:1.1 othersrc/external/historical/eawk/bin/Makefile:1.2 --- othersrc/external/historical/eawk/bin/Makefile:1.1 Fri May 31 05:56:36 2013 +++ othersrc/external/historical/eawk/bin/Makefile Sat Jun 1 22:25:10 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.1 2013/05/31 05:56:36 agc Exp $ +# $NetBSD: Makefile,v 1.2 2013/06/01 22:25:10 agc Exp $ .include <bsd.own.mk> @@ -60,9 +60,9 @@ t test: ${PROG} @echo "13. Testing foreign external call" @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA512_Data(buf, 3) }' @echo "14. Testing regexps" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' m2 @echo "14. Testing regexps with offsets" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' m2 @echo "15. Testing stat" @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); ok = stat("/etc/passwd", st); printf("mode %o\n", st["st_mode"])}' @echo "16. Testing stat" @@ -74,9 +74,9 @@ t test: ${PROG} @echo "18. Testing bitwise and and octal constants" @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); stat("/etc/passwd", st); printf("%o\n", and(st["st_mode"], 0777)) }' @echo "19. Testing constants and basic regexps" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' m2 @echo "20. Testing constants and extended regexps" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' m2 @echo "21. Testing getaddrinfo" @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_UNSPEC; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_protocol"] }' @echo "21. Testing getaddrinfo address returned" @@ -98,9 +98,9 @@ t test: ${PROG} @echo "28. Testing http" @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C}:${LIB_HTTP} ./${PROG} 'BEGIN { use("c"); use("http"); http = http_alloc(); url = http_asget(http, "http://www.netbsd.org/index.html", 0, 40000); print url}' @echo "29. Testing netdiff" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "Makefile", "Makefile", 0); }' + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "m2", "m2", 0); }' @echo "30. Testing netdiff with diffs" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' @echo "30. Testing unidiff with diffs" @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_set_var(d, "format", "unified"); diff_set_var(d, "context", "3"); if (diff_file(d, "Makefile", "m2", 'u')) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' @echo "31. Testing hmac" Index: othersrc/external/historical/eawk/bin/expected diff -u othersrc/external/historical/eawk/bin/expected:1.1 othersrc/external/historical/eawk/bin/expected:1.2 --- othersrc/external/historical/eawk/bin/expected:1.1 Fri May 31 05:56:36 2013 +++ othersrc/external/historical/eawk/bin/expected Sat Jun 1 22:25:10 2013 @@ -110,87 +110,7 @@ ba7816bf8f01cfea414140de5dae2223b00361a3 13. Testing foreign external call ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f 14. Testing regexps -PROG= eawk -t test: ${PROG} - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} -F: '/^#/ { next } { print $$1 }' /etc/passwd - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} -F: '/^#/ { next } { print $$1 ":" $$5 }' /etc/passwd - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { print "hello world" }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { a = 3405691582; b = 3405697037; printf("%d\n", xor(a, b)) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { a = 0xcafebabe; b = 0xcafed00d; print xor(a, b) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} '/PRO\x47/ { print }' in1 - @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} '/PRO\x47[^[:space:]]/ { print }' in1 - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA1Data(buf, 3) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print sha3(buf, 3) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA1Data(buf) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA1Data(buf, 3) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA256_Data(buf, 3) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA512_Data(buf, 3) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); ok = stat("/etc/passwd", st); printf("mode %o\n", st["st_mode"])}' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); ok = stat("/etc/passwd", st); printf("mode %d\n", st["st_size"])}' - @if [ $$(env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { t = systime(); print t }') -ne $$(date +%s) ]; then echo "wrong time!"; fi - @ct=$$(env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { print strftime() }'); d="$$(date '+%a %b %e %H:%M:%S %Y')"; if [ "$${ct}" != "$${d}" ]; then echo "wrong ctime!"; fi - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); stat("/etc/passwd", st); printf("%o\n", and(st["st_mode"], 0777)) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_UNSPEC; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_protocol"] }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_INET; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_addr"] }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_INET; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_addr"] }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_SOUNDEX} ./${PROG} 'BEGIN { use("soundex"); } { print $$0 " " soundex($$0) " " metaphone($$0) }' ${.CURDIR}/../extend/soundex/words - @echo "Another fine mess you got me into" | env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_BASE64} ./${PROG} 'BEGIN { use("base64"); } { print $$0 " " b64encode($$0) " " b85encode($$0) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIRENT} ./${PROG} 'BEGIN { use("dirent"); d = opendir("."); while (readdir(d, ent)) print ent["d_name"] }' | sort - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); a["yoyo"] = "yoyo"; a["zzzz"] = "helpme"; a["11"] = "eleven"; a["56789"] = "another fine mess"; a["a"] = "hallelujah"; a["a234567890123456789"] = "0"; n = asort(a, sorted); for (i = 1 ; i <= n ; i++) print i " " sorted[i] }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); a["iyoyo"] = "yoyo"; a["izzzz"] = "helpme"; a["i11"] = "eleven"; a["i56789"] = "another fine mess"; a["a"] = "hallelujah"; a["a234567890123456789"] = "0"; n = asorti(a, sorted); for (i = 1 ; i <= n ; i++) print i " " sorted[i] " " a[sorted[i]] }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIRENT}:${LIB_C} ./${PROG} 'BEGIN { use("c"); use("dirent"); d = opendir("."); while (readdir(d, ent)) if (fnmatch("M*", ent["d_name"], FNM_PATHNAME) == 0) print ent["d_name"] }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C}:${LIB_HTTP} ./${PROG} 'BEGIN { use("c"); use("http"); http = http_alloc(); url = http_asget(http, "http://www.netbsd.org/index.html", 0, 40000); print url}' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "Makefile", "Makefile", 0); }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_set_var(d, "format", "unified"); diff_set_var(d, "context", "3"); if (diff_file(d, "Makefile", "m2", 'u')) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_HMAC} ./${PROG} 'BEGIN { use("hmac"); mac = hmac("sha1", "akey", "the quick brown fox jumps over the lazy dog"); print hmac_bin2str(mac) }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DB} ./${PROG} 'BEGIN { use("db"); db = dbopen("/etc/pwd.db", O_RDONLY, 0666, "hash"); for (f = R_FIRST ; s = dbseq(db, s, f) ; f = R_NEXT) print s; }' - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DB} ./${PROG} 'BEGIN { s="\x20a\x20b\x20c"; printf(",%s,\n", s) }' 14. Testing regexps with offsets -a[0] 1, a[1] 5: PROG= eawk -a[0] 11, a[1] 15: t test: ${PROG} -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} -F: '/^#/ { next } { print $$1 }' /etc/passwd -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} -F: '/^#/ { next } { print $$1 ":" $$5 }' /etc/passwd -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { print "hello world" }' -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { a = 3405691582; b = 3405697037; printf("%d\n", xor(a, b)) }' -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { a = 0xcafebabe; b = 0xcafed00d; print xor(a, b) }' -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} '/PRO\x47/ { print }' in1 -a[0] 41, a[1] 45: @env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} '/PRO\x47[^[:space:]]/ { print }' in1 -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA1Data(buf, 3) }' -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print sha3(buf, 3) }' -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA1Data(buf) }' -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA1Data(buf, 3) }' -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA256_Data(buf, 3) }' -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA512_Data(buf, 3) }' -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); ok = stat("/etc/passwd", st); printf("mode %o\n", st["st_mode"])}' -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); ok = stat("/etc/passwd", st); printf("mode %d\n", st["st_size"])}' -a[0] 49, a[1] 53: @if [ $$(env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { t = systime(); print t }') -ne $$(date +%s) ]; then echo "wrong time!"; fi -a[0] 47, a[1] 51: @ct=$$(env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'BEGIN { print strftime() }'); d="$$(date '+%a %b %e %H:%M:%S %Y')"; if [ "$${ct}" != "$${d}" ]; then echo "wrong ctime!"; fi -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); stat("/etc/passwd", st); printf("%o\n", and(st["st_mode"], 0777)) }' -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_UNSPEC; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_protocol"] }' -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_INET; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_addr"] }' -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_INET; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_addr"] }' -a[0] 56, a[1] 60: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_SOUNDEX} ./${PROG} 'BEGIN { use("soundex"); } { print $$0 " " soundex($$0) " " metaphone($$0) }' ${.CURDIR}/../extend/soundex/words -a[0] 98, a[1] 102: @echo "Another fine mess you got me into" | env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_BASE64} ./${PROG} 'BEGIN { use("base64"); } { print $$0 " " b64encode($$0) " " b85encode($$0) }' -a[0] 55, a[1] 59: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIRENT} ./${PROG} 'BEGIN { use("dirent"); d = opendir("."); while (readdir(d, ent)) print ent["d_name"] }' | sort -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); a["yoyo"] = "yoyo"; a["zzzz"] = "helpme"; a["11"] = "eleven"; a["56789"] = "another fine mess"; a["a"] = "hallelujah"; a["a234567890123456789"] = "0"; n = asort(a, sorted); for (i = 1 ; i <= n ; i++) print i " " sorted[i] }' -a[0] 50, a[1] 54: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); a["iyoyo"] = "yoyo"; a["izzzz"] = "helpme"; a["i11"] = "eleven"; a["i56789"] = "another fine mess"; a["a"] = "hallelujah"; a["a234567890123456789"] = "0"; n = asorti(a, sorted); for (i = 1 ; i <= n ; i++) print i " " sorted[i] " " a[sorted[i]] }' -a[0] 64, a[1] 68: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIRENT}:${LIB_C} ./${PROG} 'BEGIN { use("c"); use("dirent"); d = opendir("."); while (readdir(d, ent)) if (fnmatch("M*", ent["d_name"], FNM_PATHNAME) == 0) print ent["d_name"] }' -a[0] 62, a[1] 66: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C}:${LIB_HTTP} ./${PROG} 'BEGIN { use("c"); use("http"); http = http_alloc(); url = http_asget(http, "http://www.netbsd.org/index.html", 0, 40000); print url}' -a[0] 56, a[1] 60: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "Makefile", "Makefile", 0); }' -a[0] 56, a[1] 60: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' -a[0] 56, a[1] 60: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_set_var(d, "format", "unified"); diff_set_var(d, "context", "3"); if (diff_file(d, "Makefile", "m2", 'u')) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' -a[0] 53, a[1] 57: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_HMAC} ./${PROG} 'BEGIN { use("hmac"); mac = hmac("sha1", "akey", "the quick brown fox jumps over the lazy dog"); print hmac_bin2str(mac) }' -a[0] 51, a[1] 55: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DB} ./${PROG} 'BEGIN { use("db"); db = dbopen("/etc/pwd.db", O_RDONLY, 0666, "hash"); for (f = R_FIRST ; s = dbseq(db, s, f) ; f = R_NEXT) print s; }' -a[0] 51, a[1] 55: @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DB} ./${PROG} 'BEGIN { s="\x20a\x20b\x20c"; printf(",%s,\n", s) }' 15. Testing stat mode 100644 16. Testing stat @@ -202,8 +122,8 @@ wrong ctime! 644 19. Testing constants and basic regexps CPPFLAGS+= -I${.CURDIR}/../dist - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile 20. Testing constants and extended regexps SRCS= main.c WARNS= 5 @@ -791,7 +711,7 @@ Makefile <!-- ##### Footer ##### --> - <!-- $NetBSD: expected,v 1.1 2013/05/31 05:56:36 agc Exp $ --> + <!-- $NetBSD: expected,v 1.2 2013/06/01 22:25:10 agc Exp $ --> <div class="rowOfBoxes"> <div id="footer"> <div id="footerLogo"> @@ -821,6 +741,8 @@ Makefile 29. Testing netdiff 30. Testing netdiff with diffs +--- +> # $NetBSD: expected,v 1.2 2013/06/01 22:25:10 agc Exp $ 5c5 < PROG= eawk --- @@ -892,11 +814,11 @@ Makefile --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGESTS} ./${PRoG} 'BEGIN { use("digests"); buf = "abc"; print SHA512_Data(buf, 3) }' 63c60 -< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile +< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' m2 --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PRoG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile 65c62 -< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile +< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' m2 --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PRoG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile 67c64 @@ -920,11 +842,11 @@ Makefile --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); stat("/etc/passwd", st); printf("%o\n", and(st["st_mode"], 0777)) }' 77c74 -< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile +< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' m2 --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile 79c76 -< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile +< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' m2 --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile 81c78 @@ -968,9 +890,9 @@ Makefile --- > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C}:${LIB_HTTP} ./${PRoG} 'BEGIN { use("c"); use("http"); http = http_alloc(); url = http_asget(http, "http://www.netbsd.org/index.html", 0, 40000); print url}' 101,111c98 -< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "Makefile", "Makefile", 0); }' +< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "m2", "m2", 0); }' < @echo "30. Testing netdiff with diffs" -< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' +< @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' < @echo "30. Testing unidiff with diffs" < @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_set_var(d, "format", "unified"); diff_set_var(d, "context", "3"); if (diff_file(d, "Makefile", "m2", 'u')) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' < @echo "31. Testing hmac" @@ -983,7 +905,9 @@ Makefile > @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PRoG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "Makefile", "Makefile", 0); }' 30. Testing unidiff with diffs -@@ -2,7 +2,7 @@ +@@ -1,8 +1,8 @@ +-# $NetBSD: expected,v 1.2 2013/06/01 22:25:10 agc Exp $ ++# $NetBSD: expected,v 1.2 2013/06/01 22:25:10 agc Exp $ .include <bsd.own.mk> @@ -1054,10 +978,10 @@ Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGEST} ./${PROG} 'BEGIN { use("digest"); buf = "abc"; print SHA512_Data(buf, 3) }' + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_DIGESTS} ./${PRoG} 'BEGIN { use("digests"); buf = "abc"; print SHA512_Data(buf, 3) }' @echo "14. Testing regexps" -- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile +- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' m2 + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PRoG", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile @echo "14. Testing regexps with offsets" -- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile +- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PROG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' m2 + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "PRoG"); } { if (regexec(r, $$0, a) == 0) printf("a[0] %d, a[1] %d: %s\n", a[0], a[1], $$0)}' Makefile @echo "15. Testing stat" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); ok = stat("/etc/passwd", st); printf("mode %o\n", st["st_mode"])}' @@ -1075,10 +999,10 @@ Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); stat("/etc/passwd", st); printf("%o\n", and(st["st_mode"], 0777)) }' + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); stat("/etc/passwd", st); printf("%o\n", and(st["st_mode"], 0777)) }' @echo "19. Testing constants and basic regexps" -- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile +- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' m2 + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_BASIC); } { if (regexec(r, $$0) == 0) print }' Makefile @echo "20. Testing constants and extended regexps" -- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile +- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' m2 + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PRoG} 'BEGIN { use("c"); r = alloc("regex_t"); regcomp(r, "S+=", REG_EXTENDED); } { if (regexec(r, $$0) == 0) print }' Makefile @echo "21. Testing getaddrinfo" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C} ./${PROG} 'BEGIN { use("c"); addr["ai_family"] = PF_UNSPEC; if (getaddrinfo("www.netbsd.org", "http", addr) == 0) print addr["ai_protocol"] }' @@ -1111,9 +1035,9 @@ Makefile - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C}:${LIB_HTTP} ./${PROG} 'BEGIN { use("c"); use("http"); http = http_alloc(); url = http_asget(http, "http://www.netbsd.org/index.html", 0, 40000); print url}' + @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_C}:${LIB_HTTP} ./${PRoG} 'BEGIN { use("c"); use("http"); http = http_alloc(); url = http_asget(http, "http://www.netbsd.org/index.html", 0, 40000); print url}' @echo "29. Testing netdiff" -- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "Makefile", "Makefile", 0); }' +- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_file(d, "m2", "m2", 0); }' - @echo "30. Testing netdiff with diffs" -- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' +- @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); if (diff_file(d, "Makefile", "m2", 0)) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' - @echo "30. Testing unidiff with diffs" - @env LD_LIBRARY_PATH=${LIBEAWKDIR}:${LIB_NETDIFF} ./${PROG} 'BEGIN { use("netdiff"); d = diff_init(); diff_set_var(d, "format", "unified"); diff_set_var(d, "context", "3"); if (diff_file(d, "Makefile", "m2", 'u')) { s = diff_get_diffs(d); print s } }' | env LD_LIBRARY_PATH=${LIBEAWKDIR} ./${PROG} 'NR > 2 { print }' - @echo "31. Testing hmac" Index: othersrc/external/historical/eawk/extend/Makefile diff -u othersrc/external/historical/eawk/extend/Makefile:1.1 othersrc/external/historical/eawk/extend/Makefile:1.2 --- othersrc/external/historical/eawk/extend/Makefile:1.1 Fri May 31 05:56:37 2013 +++ othersrc/external/historical/eawk/extend/Makefile Sat Jun 1 22:25:10 2013 @@ -1,19 +1,38 @@ -# $NetBSD: Makefile,v 1.1 2013/05/31 05:56:37 agc Exp $ +# $NetBSD: Makefile,v 1.2 2013/06/01 22:25:10 agc Exp $ SUBDIR+= base64 +.if exists(/usr/include/bufgap.h) +SUBDIR+= bufgap +.endif SUBDIR+= c +.if exists(/usr/include/circa.h) SUBDIR+= circa +.endif SUBDIR+= db SUBDIR+= digest SUBDIR+= dirent +.if exists(/usr/include/getopt2.h) SUBDIR+= getopt2 +.endif +.if exists(/usr/include/hmac.h) SUBDIR+= hmac +.endif +.if exists(/usr/include/http.h) SUBDIR+= http +.endif +.if exists(/usr/include/mat.h) SUBDIR+= mat +.endif +.if exists(/usr/include/netdiff.h) SUBDIR+= netdiff +.endif SUBDIR+= netpgp +.if exists(/usr/include/progress.h) SUBDIR+= progress +.endif +.if exists(/usr/include/rs.h) SUBDIR+= rs +.endif SUBDIR+= soundex SUBDIR+= termcap Added files: Index: othersrc/external/historical/eawk/extend/bufgap/Makefile diff -u /dev/null othersrc/external/historical/eawk/extend/bufgap/Makefile:1.1 --- /dev/null Sat Jun 1 22:25:10 2013 +++ othersrc/external/historical/eawk/extend/bufgap/Makefile Sat Jun 1 22:25:10 2013 @@ -0,0 +1,16 @@ +# $NetBSD: Makefile,v 1.1 2013/06/01 22:25:10 agc Exp $ + +.include <bsd.own.mk> + +DIST= ${.CURDIR}/../../dist +.PATH: ${DIST} + +LIB= eawk-bufgap +SRCS= bufgap.c +CPPFLAGS+= -I. -I${DIST} +MKMAN= no +LDADD+= -lbufgap + +WARNS= 5 + +.include <bsd.lib.mk> Index: othersrc/external/historical/eawk/extend/bufgap/bufgap.c diff -u /dev/null othersrc/external/historical/eawk/extend/bufgap/bufgap.c:1.1 --- /dev/null Sat Jun 1 22:25:10 2013 +++ othersrc/external/historical/eawk/extend/bufgap/bufgap.c Sat Jun 1 22:25:10 2013 @@ -0,0 +1,477 @@ +/*- + * Copyright (c) 2013 Alistair Crooks <a...@netbsd.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include <bufgap.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "eawk.h" + +#ifndef USE_ARG +#define USE_ARG(x) /*LINTED*/(void)&x +#endif + +/* convert number to ptr */ +static int64_t +p2num(void *p) +{ + union { + void *p; + int64_t n; + } u; + + u.p = p; + return u.n; +} + +/* convert ptr to number */ +static void * +n2ptr(int64_t n) +{ + union { + void *p; + int64_t n; + } u; + + u.n = n; + return u.p; +} + +/* define the constants which relate to the CPP definitions */ +static int +eawk_bufgap_constants(eawk_t *eawk) +{ + /* bufgap constants */ + eawk_define_constant(eawk, "BGByte", BGByte); + eawk_define_constant(eawk, "BGChar", BGChar); + eawk_define_constant(eawk, "BGLine", BGLine); + eawk_define_constant(eawk, "BGFromBOF", BGFromBOF); + eawk_define_constant(eawk, "BGFromHere", BGFromHere); + eawk_define_constant(eawk, "BGFromEOF", BGFromEOF); + return 1; +} + +/* extension module to provide bufgap functionality to eawk */ + +/* accept function */ +static awkcell_t * +eawk_bufgap_bufgap_alloc(void *veawk, char *name, int argc, awkcell_t **a) +{ + eawk_t *eawk = (eawk_t *)veawk; + void *v; + + USE_ARG(name); + USE_ARG(argc); + USE_ARG(a); + v = calloc(1, sizeof(bufgap_t)); + /* return code */ + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)p2num(v)); + return eawk->fp->retval; +} + +/* open function */ +static awkcell_t * +eawk_bufgap_bufgap_open(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + eawk_t *eawk = (eawk_t *)veawk; + char *f; + int rc; + + USE_ARG(name); + rc = 0; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + f = eawk_getsval(eawk, a[1]); + rc = bufgap_open(b, f); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* close function */ +static awkcell_t * +eawk_bufgap_bufgap_close(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + eawk_t *eawk = (eawk_t *)veawk; + + USE_ARG(name); + if (argc == 1) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + bufgap_close(b); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)1); + return eawk->fp->retval; +} + +/* forwards function */ +static awkcell_t * +eawk_bufgap_bufgap_forwards(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + uint64_t off; + eawk_t *eawk = (eawk_t *)veawk; + int type; + int rc; + + USE_ARG(name); + rc = 0; + if (argc == 3) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + off = (uint64_t)eawk_getfval(eawk, a[1]); + type = (int)eawk_getfval(eawk, a[2]); + rc = bufgap_forwards(b, off, type); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* backwards function */ +static awkcell_t * +eawk_bufgap_bufgap_backwards(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + uint64_t off; + eawk_t *eawk = (eawk_t *)veawk; + int type; + int rc; + + USE_ARG(name); + rc = 0; + if (argc == 3) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + off = (uint64_t)eawk_getfval(eawk, a[1]); + type = (int)eawk_getfval(eawk, a[2]); + rc = bufgap_backwards(b, off, type); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* seek function */ +static awkcell_t * +eawk_bufgap_bufgap_seek(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + int64_t off; + eawk_t *eawk = (eawk_t *)veawk; + int whence; + int type; + int rc; + + USE_ARG(name); + rc = 0; + if (argc == 4) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + off = (uint64_t)eawk_getfval(eawk, a[1]); + whence = (int)eawk_getfval(eawk, a[2]); + type = (int)eawk_getfval(eawk, a[3]); + rc = bufgap_seek(b, off, whence, type); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* getstr function */ +static awkcell_t * +eawk_bufgap_bufgap_getstr(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + eawk_t *eawk = (eawk_t *)veawk; + char *s; + + USE_ARG(name); + s = NULL; + if (argc == 1) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + s = bufgap_getstr(b); + } + eawk_setsval(eawk, eawk->fp->retval, (s) ? s : ""); + return eawk->fp->retval; +} + +/* seek function */ +static awkcell_t * +eawk_bufgap_bufgap_getbin(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + eawk_t *eawk = (eawk_t *)veawk; + size_t cc; + char *buf; + int rc; + + USE_ARG(name); + rc = 0; + buf = NULL; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + cc = (size_t)eawk_getfval(eawk, a[1]); + buf = calloc(1, cc); + rc = bufgap_getbin(b, buf, cc); + } + /* return code */ + eawk_setsvalN(eawk, eawk->fp->retval, buf, (size_t)rc); + if (argc == 2) { + free(buf); + } + return eawk->fp->retval; +} + +/* seek function */ +static awkcell_t * +eawk_bufgap_bufgap_tell(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + int64_t rc; + eawk_t *eawk = (eawk_t *)veawk; + int whence; + int type; + + USE_ARG(name); + rc = 0; + if (argc == 3) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + whence = (int)eawk_getfval(eawk, a[1]); + type = (int)eawk_getfval(eawk, a[2]); + rc = bufgap_tell(b, whence, type); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* size function */ +static awkcell_t * +eawk_bufgap_bufgap_size(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + int64_t rc; + eawk_t *eawk = (eawk_t *)veawk; + int type; + + USE_ARG(name); + rc = 0; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + type = (int)eawk_getfval(eawk, a[1]); + rc = bufgap_size(b, type); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* insert function */ +static awkcell_t * +eawk_bufgap_bufgap_insert(void *veawk, char *name, int argc, awkcell_t **a) +{ + const char *s; + bufgap_t *b; + int64_t rc; + eawk_t *eawk = (eawk_t *)veawk; + int len; + + USE_ARG(name); + rc = 0; + if (argc == 3) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + s = (const char *)eawk_getsval(eawk, a[1]); + len = (int)eawk_getfval(eawk, a[2]); + rc = bufgap_insert(b, s, len); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* delete function */ +static awkcell_t * +eawk_bufgap_bufgap_delete(void *veawk, char *name, int argc, awkcell_t **a) +{ + uint64_t len; + bufgap_t *b; + int64_t rc; + eawk_t *eawk = (eawk_t *)veawk; + + USE_ARG(name); + rc = 0; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + len = (uint64_t)eawk_getfval(eawk, a[1]); + rc = bufgap_delete(b, len); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* peek function */ +static awkcell_t * +eawk_bufgap_bufgap_peek(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + int64_t len; + eawk_t *eawk = (eawk_t *)veawk; + int rc; + + USE_ARG(name); + rc = 0; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + len = (uint64_t)eawk_getfval(eawk, a[1]); + rc = bufgap_peek(b, len); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* gettext function */ +static awkcell_t * +eawk_bufgap_bufgap_gettext(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + int64_t from; + int64_t to; + eawk_t *eawk = (eawk_t *)veawk; + char *s; + + USE_ARG(name); + s = NULL; + if (argc == 3) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + from = (int64_t)eawk_getfval(eawk, a[1]); + to = (int64_t)eawk_getfval(eawk, a[2]); + s = bufgap_gettext(b, from, to); + } + eawk_setsval(eawk, eawk->fp->retval, (s) ? s : ""); + return eawk->fp->retval; +} + +/* getline function */ +static awkcell_t * +eawk_bufgap_bufgap_getline(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + int64_t n; + eawk_t *eawk = (eawk_t *)veawk; + char *s; + + USE_ARG(name); + s = NULL; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + n = (int64_t)eawk_getfval(eawk, a[1]); + s = bufgap_getline(b, n); + } + eawk_setsval(eawk, eawk->fp->retval, (s) ? s : ""); + return eawk->fp->retval; +} + +/* write function */ +static awkcell_t * +eawk_bufgap_bufgap_write(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + eawk_t *eawk = (eawk_t *)veawk; + FILE *fp; + int rc; + + USE_ARG(name); + rc = 0; + fp = NULL; + if (argc == 2) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + fp = n2ptr((int64_t)eawk_getfval(eawk, a[1])); + rc = bufgap_write(b, fp); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + +/* dirty function */ +static awkcell_t * +eawk_bufgap_bufgap_dirty(void *veawk, char *name, int argc, awkcell_t **a) +{ + bufgap_t *b; + eawk_t *eawk = (eawk_t *)veawk; + int rc; + + USE_ARG(name); + rc = 0; + if (argc == 1) { + /* get data off stack */ + b = n2ptr((int64_t)eawk_getfval(eawk, a[0])); + rc = bufgap_dirty(b); + } + eawk_setfval(eawk, eawk->fp->retval, (awknum_t)rc); + return eawk->fp->retval; +} + + +/**************************************************************/ +/* now the glue to register functions when use("bufgap") is called */ +/**************************************************************/ + +int eawk_use_bufgap(eawk_t */*eawk*/); + +/* register bufgap functions */ +int +eawk_use_bufgap(eawk_t *eawk) +{ + if (eawk_find_lib(eawk, "bufgap") < 0) { + eawk_bufgap_constants(eawk); + eawk_register_func(eawk, "bufgap", "bufgap_alloc", eawk_bufgap_bufgap_alloc); + eawk_register_func(eawk, "bufgap", "bufgap_open", eawk_bufgap_bufgap_open); + eawk_register_func(eawk, "bufgap", "bufgap_close", eawk_bufgap_bufgap_close); + eawk_register_func(eawk, "bufgap", "bufgap_forwards", eawk_bufgap_bufgap_forwards); + eawk_register_func(eawk, "bufgap", "bufgap_backwards", eawk_bufgap_bufgap_backwards); + eawk_register_func(eawk, "bufgap", "bufgap_seek", eawk_bufgap_bufgap_seek); + eawk_register_func(eawk, "bufgap", "bufgap_getstr", eawk_bufgap_bufgap_getstr); + eawk_register_func(eawk, "bufgap", "bufgap_getbin", eawk_bufgap_bufgap_getbin); + eawk_register_func(eawk, "bufgap", "bufgap_tell", eawk_bufgap_bufgap_tell); + eawk_register_func(eawk, "bufgap", "bufgap_size", eawk_bufgap_bufgap_size); + eawk_register_func(eawk, "bufgap", "bufgap_insert", eawk_bufgap_bufgap_insert); + eawk_register_func(eawk, "bufgap", "bufgap_delete", eawk_bufgap_bufgap_delete); + eawk_register_func(eawk, "bufgap", "bufgap_peek", eawk_bufgap_bufgap_peek); + eawk_register_func(eawk, "bufgap", "bufgap_gettext", eawk_bufgap_bufgap_gettext); + eawk_register_func(eawk, "bufgap", "bufgap_getline", eawk_bufgap_bufgap_getline); + eawk_register_func(eawk, "bufgap", "bufgap_write", eawk_bufgap_bufgap_write); + eawk_register_func(eawk, "bufgap", "bufgap_dirty", eawk_bufgap_bufgap_dirty); + } + return 1; +} Index: othersrc/external/historical/eawk/extend/bufgap/shlib_version diff -u /dev/null othersrc/external/historical/eawk/extend/bufgap/shlib_version:1.1 --- /dev/null Sat Jun 1 22:25:10 2013 +++ othersrc/external/historical/eawk/extend/bufgap/shlib_version Sat Jun 1 22:25:10 2013 @@ -0,0 +1,2 @@ +major=0 +minor=0