gen_t_subr_prf revision 272343
175578Skris#!/bin/sh
275578Skris
375578Skriscat << _EOF > $2
475578Skris#include <sys/types.h>
575578Skris#include <sys/time.h>
675578Skris#include <stdio.h>
775578Skris#include <stdarg.h>
875578Skris#include <stdint.h>
975578Skris#include <string.h>
1075578Skris#include <sha2.h>
1175578Skris
1275578Skris#include <atf-c.h>
1375578Skris
1475578Skris/* Avoid SSP re-definitions */
1575578Skris#undef snprintf
1675578Skris#undef vsnprintf
1775578Skris#undef sprintf
1875578Skris#undef vsprintf
1975578Skris
2075578Skris#define KPRINTF_BUFSIZE 1024
2175578Skris#undef putchar
2275578Skris#define putchar xputchar
2375578Skris
2475578Skrisstatic int putchar(char c, int foo, void *b)
2575578Skris{
2675578Skris	return fputc(c, stderr);
2775578Skris}
2875578Skris
2975578Skris#define TOBUFONLY 1
3075578Skrisstatic const char HEXDIGITS[] = "0123456789ABCDEF";
3175578Skrisstatic const char hexdigits[] = "0123456789abcdef";
3275578Skris
3375578Skristypedef int device_t;
3475578Skris
3575578Skris#if 0
3690039Sobrienstatic SHA512_CTX kprnd_sha;
3775578Skris#endif
3890039Sobrien
3975578Skris#define timespec timeval
4075578Skris#define nanotime(ts) gettimeofday(ts, NULL)
4175578Skris
4275578Skris#define device_xname(a) ""
4375578Skrisint kprintf(const char *, int, void *, char *, va_list) __printflike(1, 0);
4498908Sdeischenvoid device_printf(device_t, const char *, ...) __printflike(2, 3);
4575578Skris
4675578Skrisstatic void
4775578Skrisempty(void)
4875578Skris{
4975578Skris}
5075578Skris
5175578Skrisstatic void (*v_flush)(void) = empty;
5275578Skris
5375578SkrisATF_TC(snprintf_print);
5475578SkrisATF_TC_HEAD(snprintf_print, tc)
5575578Skris{
5675578Skris        atf_tc_set_md_var(tc, "descr", "checks snprintf print");
5775578Skris}
5875578Skris 
5975578SkrisATF_TC_BODY(snprintf_print, tc)
6075578Skris{
6175578Skris	char buf[10];
6275578Skris	int i;
6375578Skris
6475578Skris	memset(buf, 'x', sizeof(buf));
6575578Skris	i = snprintf(buf, sizeof(buf), "number %d", 10);
6675578Skris	ATF_CHECK_EQ(i, 9);
6775578Skris	ATF_CHECK_STREQ(buf, "number 10");
6875578Skris}
6975578Skris
7075578SkrisATF_TC(snprintf_print_overflow);
7175578SkrisATF_TC_HEAD(snprintf_print_overflow, tc)
7275578Skris{
7375578Skris        atf_tc_set_md_var(tc, "descr", "checks snprintf print with overflow");
7475578Skris}
7575578Skris 
7675578SkrisATF_TC_BODY(snprintf_print_overflow, tc)
7775578Skris{
7875578Skris	char buf[10];
7975578Skris	int i;
8075578Skris
8175578Skris	memset(buf, 'x', sizeof(buf));
8275578Skris	i = snprintf(buf, sizeof(buf), "fjsdfsdjfsdf %d\n", 10);
8375578Skris	ATF_CHECK_EQ(i, 16);
8475578Skris	ATF_CHECK_STREQ(buf, "fjsdfsdjf");
8575578Skris}
8675578Skris
8775578SkrisATF_TC(snprintf_count);
8875578SkrisATF_TC_HEAD(snprintf_count, tc)
8975578Skris{
9075578Skris        atf_tc_set_md_var(tc, "descr", "checks snprintf count");
9175578Skris}
9275578Skris 
9375578SkrisATF_TC_BODY(snprintf_count, tc)
9475578Skris{
9575578Skris	int i;
9675578Skris	
9775578Skris	i = snprintf(NULL, 20, "number %d", 10);
9875578Skris	ATF_CHECK_EQ(i, 9);
9975578Skris}
10075578Skris
10175578SkrisATF_TC(snprintf_count_overflow);
10275578SkrisATF_TC_HEAD(snprintf_count_overflow, tc)
10375578Skris{
10475578Skris        atf_tc_set_md_var(tc, "descr", "checks snprintf count with overflow");
10575578Skris}
10675578Skris 
10775578SkrisATF_TC_BODY(snprintf_count_overflow, tc)
10875578Skris{
10975578Skris	int i;
11075578Skris
11175578Skris	i = snprintf(NULL, 10, "fjsdfsdjfsdf %d\n", 10);
11275578Skris	ATF_CHECK_EQ(i, 16);
11375578Skris}
11475578Skris
11575578SkrisATF_TP_ADD_TCS(tp)
11675578Skris{
11775578Skris        ATF_TP_ADD_TC(tp, snprintf_print);
11875578Skris        ATF_TP_ADD_TC(tp, snprintf_print_overflow);
11975578Skris        ATF_TP_ADD_TC(tp, snprintf_count);
12075578Skris        ATF_TP_ADD_TC(tp, snprintf_count_overflow);
12175578Skris
12275578Skris        return atf_no_error();
12375578Skris}
12475578Skris_EOF
12575578Skris
12675578Skrisawk '
12775578Skris/^snprintf\(/ {
12875578Skris	print prevline
12975578Skris	out = 1
13075578Skris}
13175578Skris{
13275578Skris	if (out) print
13375578Skris	else prevline = $0
13475578Skris}' $1 >>$2
13575578Skris