忍者ブログ

2024
05
05

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2024/05/05 (Sun.)

2012
04
23

行頭と行末に特定ワードを付け加えるプログラム(C言語)

レジスタダンプするのに使いました。

ソースコード

/* head_tail_add.c */
#include <stdio.h>
#include <string.h>

#define STR_MAX 256
#define OUTPUT_FILE "output_head_tail.txt"

void usage(void)
{
	printf("usage: ./head_tail_add [input_file] [head_add] [tail_add]\n");
	printf("result: %s\n", OUTPUT_FILE);
}

int main(int argc, char *argv[])
{
	int len;
	char str[STR_MAX], output_str[STR_MAX], add_tail[STR_MAX];
	FILE *fin, *fout;

	if (argc < 4) {
		usage();
		return 1;
	}

	if ((fin = fopen(argv[1], "r")) == NULL) {
		printf("fin error:[%s]\n", argv[1]);
		return -1;
	}
	if ((fout = fopen(OUTPUT_FILE, "w")) == NULL) {
		printf("fout error:[%s]\n", OUTPUT_FILE);
		fclose(fin);
		return -1;
	}

	/* adjustment */
	strcpy(add_tail, argv[3]);
	len = strlen(add_tail);
	add_tail[len] = '\n';
	add_tail[len+1] = '\0';

	for(;;) {
		if (fgets(str, STR_MAX, fin) == NULL) {
			break; /* EOF */
		}
		sprintf(output_str, "%s%s", argv[2], str);
		len = strlen(output_str);
		output_str[len-1] = '\0';
		strcat(output_str, add_tail);
		fputs(output_str, fout);
	}
	fclose(fin);
	fclose(fout);
	return 0;
}

コンパイル例

gcc -Wall -o head_tail_add head_tail_add.c

使い方

./head_tail_add [input_file] [head_add] [tail_add]

実際の使用例

レジスタのアドレスが書いてあるファイルからawkなど使い次のように加工した
ファイルに対し、

(e1000eドライバ regs.hより)
E1000_CTRL
E1000_CTRL_DUP
E1000_STATUS
E1000_EECD
E1000_EERD
E1000_CTRL_EXT
E1000_FLA
E1000_MDIC
E1000_SCTL
E1000_FCAL
E1000_FCAH
E1000_FEXT
E1000_FEXTNVM4
E1000_FEXTNVM
E1000_FCT
E1000_CONNSW
E1000_VET
E1000_ICR
E1000_ITR
E1000_ICS
E1000_IMS
E1000_IMC
E1000_IAM
E1000_IVAR
E1000_SVCR
E1000_SVT
E1000_RCTL
E1000_FCTTV
E1000_TXCW
E1000_RXCW
E1000_PBA_ECC
E1000_TCTL
E1000_TCTL_EXT
E1000_TIPG
E1000_TBT
E1000_AIT
E1000_LEDCTL
E1000_EXTCNF_CTRL
E1000_EXTCNF_SIZE
E1000_PHY_CTRL
E1000_POEMB
E1000_PBA
E1000_PBS
E1000_EEMNGCTL
E1000_EEARBC
E1000_FLASHT
E1000_EEWR
E1000_FLSWCTL
E1000_FLSWDATA
E1000_FLSWCNT
E1000_FLOP
E1000_I2CCMD
E1000_I2CPARAMS
E1000_WDSTP
E1000_SWDSTS
E1000_FRTIMER
E1000_ERT
E1000_FCRTL
E1000_FCRTH
E1000_PSRCTL
E1000_PBRTH
E1000_FCRTV
E1000_RDPUMB
E1000_RDPUAD
E1000_RDPUWD
E1000_RDPURD
E1000_RDPUCTL
E1000_RDTR
E1000_RADV
E1000_RSRPD
E1000_TDFPC
E1000_TDPUMB
E1000_TDPUAD
E1000_TDPUWD
E1000_TDPURD
E1000_TDPUCTL
E1000_DTXCTL
E1000_TIDV
E1000_TADV
E1000_TSPMT
E1000_CRCERRS
E1000_ALGNERRC
E1000_SYMERRS
E1000_RXERRC
E1000_MPC
E1000_SCC
E1000_ECOL
E1000_MCC
E1000_LATECOL
E1000_COLC
E1000_DC
E1000_TNCRS
E1000_SEC
E1000_CEXTERR
E1000_RLEC
E1000_XONRXC
E1000_XONTXC
E1000_XOFFRXC
E1000_XOFFTXC
E1000_FCRUC
E1000_PRC64
E1000_PRC127
E1000_PRC255
E1000_PRC511
E1000_PRC1023
E1000_PRC1522
E1000_GPRC
E1000_BPRC
E1000_MPRC
E1000_GPTC
E1000_GORCL
E1000_GORCH
E1000_GOTCL
E1000_GOTCH
E1000_RNBC
E1000_RUC
E1000_RFC
E1000_ROC
E1000_RJC
E1000_MGTPRC
E1000_MGTPDC
E1000_MGTPTC
E1000_TORL
E1000_TORH
E1000_TOTL
E1000_TOTH
E1000_TPR
E1000_TPT
E1000_PTC64
E1000_PTC127
E1000_PTC255
E1000_PTC511
E1000_PTC1023
E1000_PTC1522
E1000_MPTC
E1000_BPTC
E1000_TSCTC
E1000_TSCTFC
E1000_IAC
E1000_ICRXPTC
E1000_ICRXATC
E1000_ICTXPTC
E1000_ICTXATC
E1000_ICTXQEC
E1000_ICTXQMTC
E1000_ICRXDMTC
E1000_ICRXOC
E1000_CRC_OFFSET
E1000_PCS_CFG0
E1000_PCS_LCTL
E1000_PCS_LSTAT
E1000_CBTMPC
E1000_HTDPMC
E1000_CBRDPC
E1000_CBRMPC
E1000_RPTHC
E1000_HGPTC
E1000_HTCBDPC
E1000_HGORCL
E1000_HGORCH
E1000_HGOTCL
E1000_HGOTCH
E1000_LENERRS
E1000_SCVPC
E1000_HRMPC
E1000_PCS_ANADV
E1000_PCS_LPAB
E1000_PCS_NPTX
E1000_PCS_LPABNP
E1000_1GSTAT_RCV
E1000_RXCSUM
E1000_RLPML
E1000_RFCTL
E1000_MTA
E1000_RA
E1000_VFTA
E1000_VT_CTL
E1000_CIAA
E1000_CIAD
E1000_VFQA0
E1000_VFQA1
E1000_WUC
E1000_WUFC
E1000_WUS
E1000_MANC
E1000_IPAV
E1000_IP4AT
E1000_IP6AT
E1000_WUPL
E1000_WUPM
E1000_PBACL
E1000_FFLT
E1000_HOST_IF
E1000_FFMT
E1000_FFVT
E1000_KMRNCTRLSTA
E1000_MDPHYA
E1000_MANC2H
E1000_SW_FW_SYNC
E1000_CCMCTL
E1000_GIOCTL
E1000_SCCTL
E1000_GCR
E1000_GCR2
E1000_GSCL_1
E1000_GSCL_2
E1000_GSCL_3
E1000_GSCL_4
E1000_FACTPS
E1000_SWSM
E1000_FWSM
E1000_SWSM2
E1000_DCA_ID
E1000_DCA_CTRL
E1000_FFLT_DBG
E1000_HICR
E1000_CPUVEC
E1000_RSSIR
E1000_TSYNCRXCTL
E1000_TSYNCTXCTL
E1000_TSYNCRXCFG
E1000_RXSTMPL
E1000_RXSTMPH
E1000_RXSATRL
E1000_RXSATRH
E1000_TXSTMPL
E1000_TXSTMPH
E1000_SYSTIML
E1000_SYSTIMH
E1000_TIMINCA
E1000_RXMTRL
E1000_RXUDP

このファイルに対し、プログラムを実行してみる。

./head_tail_add before 'printk("0x%04x:%04x\n", ' ', tmp);'

結果次のようになる。

printk("0x%04x:%04x\n", E1000_CTRL, tmp);
printk("0x%04x:%04x\n", E1000_CTRL_DUP, tmp);
printk("0x%04x:%04x\n", E1000_STATUS, tmp);
printk("0x%04x:%04x\n", E1000_EECD, tmp);
printk("0x%04x:%04x\n", E1000_EERD, tmp);
printk("0x%04x:%04x\n", E1000_CTRL_EXT, tmp);
printk("0x%04x:%04x\n", E1000_FLA, tmp);
printk("0x%04x:%04x\n", E1000_MDIC, tmp);
printk("0x%04x:%04x\n", E1000_SCTL, tmp);
printk("0x%04x:%04x\n", E1000_FCAL, tmp);
printk("0x%04x:%04x\n", E1000_FCAH, tmp);
printk("0x%04x:%04x\n", E1000_FEXT, tmp);
printk("0x%04x:%04x\n", E1000_FEXTNVM4, tmp);
printk("0x%04x:%04x\n", E1000_FEXTNVM, tmp);
printk("0x%04x:%04x\n", E1000_FCT, tmp);
printk("0x%04x:%04x\n", E1000_CONNSW, tmp);
printk("0x%04x:%04x\n", E1000_VET, tmp);
printk("0x%04x:%04x\n", E1000_ICR, tmp);
printk("0x%04x:%04x\n", E1000_ITR, tmp);
printk("0x%04x:%04x\n", E1000_ICS, tmp);
printk("0x%04x:%04x\n", E1000_IMS, tmp);
printk("0x%04x:%04x\n", E1000_IMC, tmp);
printk("0x%04x:%04x\n", E1000_IAM, tmp);
printk("0x%04x:%04x\n", E1000_IVAR, tmp);
printk("0x%04x:%04x\n", E1000_SVCR, tmp);
printk("0x%04x:%04x\n", E1000_SVT, tmp);
printk("0x%04x:%04x\n", E1000_RCTL, tmp);
printk("0x%04x:%04x\n", E1000_FCTTV, tmp);
printk("0x%04x:%04x\n", E1000_TXCW, tmp);
printk("0x%04x:%04x\n", E1000_RXCW, tmp);
printk("0x%04x:%04x\n", E1000_PBA_ECC, tmp);
printk("0x%04x:%04x\n", E1000_TCTL, tmp);
printk("0x%04x:%04x\n", E1000_TCTL_EXT, tmp);
printk("0x%04x:%04x\n", E1000_TIPG, tmp);
printk("0x%04x:%04x\n", E1000_TBT, tmp);
printk("0x%04x:%04x\n", E1000_AIT, tmp);
printk("0x%04x:%04x\n", E1000_LEDCTL, tmp);
printk("0x%04x:%04x\n", E1000_EXTCNF_CTRL, tmp);
printk("0x%04x:%04x\n", E1000_EXTCNF_SIZE, tmp);
printk("0x%04x:%04x\n", E1000_PHY_CTRL, tmp);
printk("0x%04x:%04x\n", E1000_POEMB, tmp);
printk("0x%04x:%04x\n", E1000_PBA, tmp);
printk("0x%04x:%04x\n", E1000_PBS, tmp);
printk("0x%04x:%04x\n", E1000_EEMNGCTL, tmp);
printk("0x%04x:%04x\n", E1000_EEARBC, tmp);
printk("0x%04x:%04x\n", E1000_FLASHT, tmp);
printk("0x%04x:%04x\n", E1000_EEWR, tmp);
printk("0x%04x:%04x\n", E1000_FLSWCTL, tmp);
printk("0x%04x:%04x\n", E1000_FLSWDATA, tmp);
printk("0x%04x:%04x\n", E1000_FLSWCNT, tmp);
printk("0x%04x:%04x\n", E1000_FLOP, tmp);
printk("0x%04x:%04x\n", E1000_I2CCMD, tmp);
printk("0x%04x:%04x\n", E1000_I2CPARAMS, tmp);
printk("0x%04x:%04x\n", E1000_WDSTP, tmp);
printk("0x%04x:%04x\n", E1000_SWDSTS, tmp);
printk("0x%04x:%04x\n", E1000_FRTIMER, tmp);
printk("0x%04x:%04x\n", E1000_ERT, tmp);
printk("0x%04x:%04x\n", E1000_FCRTL, tmp);
printk("0x%04x:%04x\n", E1000_FCRTH, tmp);
printk("0x%04x:%04x\n", E1000_PSRCTL, tmp);
printk("0x%04x:%04x\n", E1000_PBRTH, tmp);
printk("0x%04x:%04x\n", E1000_FCRTV, tmp);
printk("0x%04x:%04x\n", E1000_RDPUMB, tmp);
printk("0x%04x:%04x\n", E1000_RDPUAD, tmp);
printk("0x%04x:%04x\n", E1000_RDPUWD, tmp);
printk("0x%04x:%04x\n", E1000_RDPURD, tmp);
printk("0x%04x:%04x\n", E1000_RDPUCTL, tmp);
printk("0x%04x:%04x\n", E1000_RDTR, tmp);
printk("0x%04x:%04x\n", E1000_RADV, tmp);
printk("0x%04x:%04x\n", E1000_RSRPD, tmp);
printk("0x%04x:%04x\n", E1000_TDFPC, tmp);
printk("0x%04x:%04x\n", E1000_TDPUMB, tmp);
printk("0x%04x:%04x\n", E1000_TDPUAD, tmp);
printk("0x%04x:%04x\n", E1000_TDPUWD, tmp);
printk("0x%04x:%04x\n", E1000_TDPURD, tmp);
printk("0x%04x:%04x\n", E1000_TDPUCTL, tmp);
printk("0x%04x:%04x\n", E1000_DTXCTL, tmp);
printk("0x%04x:%04x\n", E1000_TIDV, tmp);
printk("0x%04x:%04x\n", E1000_TADV, tmp);
printk("0x%04x:%04x\n", E1000_TSPMT, tmp);
printk("0x%04x:%04x\n", E1000_CRCERRS, tmp);
printk("0x%04x:%04x\n", E1000_ALGNERRC, tmp);
printk("0x%04x:%04x\n", E1000_SYMERRS, tmp);
printk("0x%04x:%04x\n", E1000_RXERRC, tmp);
printk("0x%04x:%04x\n", E1000_MPC, tmp);
printk("0x%04x:%04x\n", E1000_SCC, tmp);
printk("0x%04x:%04x\n", E1000_ECOL, tmp);
printk("0x%04x:%04x\n", E1000_MCC, tmp);
printk("0x%04x:%04x\n", E1000_LATECOL, tmp);
printk("0x%04x:%04x\n", E1000_COLC, tmp);
printk("0x%04x:%04x\n", E1000_DC, tmp);
printk("0x%04x:%04x\n", E1000_TNCRS, tmp);
printk("0x%04x:%04x\n", E1000_SEC, tmp);
printk("0x%04x:%04x\n", E1000_CEXTERR, tmp);
printk("0x%04x:%04x\n", E1000_RLEC, tmp);
printk("0x%04x:%04x\n", E1000_XONRXC, tmp);
printk("0x%04x:%04x\n", E1000_XONTXC, tmp);
printk("0x%04x:%04x\n", E1000_XOFFRXC, tmp);
printk("0x%04x:%04x\n", E1000_XOFFTXC, tmp);
printk("0x%04x:%04x\n", E1000_FCRUC, tmp);
printk("0x%04x:%04x\n", E1000_PRC64, tmp);
printk("0x%04x:%04x\n", E1000_PRC127, tmp);
printk("0x%04x:%04x\n", E1000_PRC255, tmp);
printk("0x%04x:%04x\n", E1000_PRC511, tmp);
printk("0x%04x:%04x\n", E1000_PRC1023, tmp);
printk("0x%04x:%04x\n", E1000_PRC1522, tmp);
printk("0x%04x:%04x\n", E1000_GPRC, tmp);
printk("0x%04x:%04x\n", E1000_BPRC, tmp);
printk("0x%04x:%04x\n", E1000_MPRC, tmp);
printk("0x%04x:%04x\n", E1000_GPTC, tmp);
printk("0x%04x:%04x\n", E1000_GORCL, tmp);
printk("0x%04x:%04x\n", E1000_GORCH, tmp);
printk("0x%04x:%04x\n", E1000_GOTCL, tmp);
printk("0x%04x:%04x\n", E1000_GOTCH, tmp);
printk("0x%04x:%04x\n", E1000_RNBC, tmp);
printk("0x%04x:%04x\n", E1000_RUC, tmp);
printk("0x%04x:%04x\n", E1000_RFC, tmp);
printk("0x%04x:%04x\n", E1000_ROC, tmp);
printk("0x%04x:%04x\n", E1000_RJC, tmp);
printk("0x%04x:%04x\n", E1000_MGTPRC, tmp);
printk("0x%04x:%04x\n", E1000_MGTPDC, tmp);
printk("0x%04x:%04x\n", E1000_MGTPTC, tmp);
printk("0x%04x:%04x\n", E1000_TORL, tmp);
printk("0x%04x:%04x\n", E1000_TORH, tmp);
printk("0x%04x:%04x\n", E1000_TOTL, tmp);
printk("0x%04x:%04x\n", E1000_TOTH, tmp);
printk("0x%04x:%04x\n", E1000_TPR, tmp);
printk("0x%04x:%04x\n", E1000_TPT, tmp);
printk("0x%04x:%04x\n", E1000_PTC64, tmp);
printk("0x%04x:%04x\n", E1000_PTC127, tmp);
printk("0x%04x:%04x\n", E1000_PTC255, tmp);
printk("0x%04x:%04x\n", E1000_PTC511, tmp);
printk("0x%04x:%04x\n", E1000_PTC1023, tmp);
printk("0x%04x:%04x\n", E1000_PTC1522, tmp);
printk("0x%04x:%04x\n", E1000_MPTC, tmp);
printk("0x%04x:%04x\n", E1000_BPTC, tmp);
printk("0x%04x:%04x\n", E1000_TSCTC, tmp);
printk("0x%04x:%04x\n", E1000_TSCTFC, tmp);
printk("0x%04x:%04x\n", E1000_IAC, tmp);
printk("0x%04x:%04x\n", E1000_ICRXPTC, tmp);
printk("0x%04x:%04x\n", E1000_ICRXATC, tmp);
printk("0x%04x:%04x\n", E1000_ICTXPTC, tmp);
printk("0x%04x:%04x\n", E1000_ICTXATC, tmp);
printk("0x%04x:%04x\n", E1000_ICTXQEC, tmp);
printk("0x%04x:%04x\n", E1000_ICTXQMTC, tmp);
printk("0x%04x:%04x\n", E1000_ICRXDMTC, tmp);
printk("0x%04x:%04x\n", E1000_ICRXOC, tmp);
printk("0x%04x:%04x\n", E1000_CRC_OFFSET, tmp);
printk("0x%04x:%04x\n", E1000_PCS_CFG0, tmp);
printk("0x%04x:%04x\n", E1000_PCS_LCTL, tmp);
printk("0x%04x:%04x\n", E1000_PCS_LSTAT, tmp);
printk("0x%04x:%04x\n", E1000_CBTMPC, tmp);
printk("0x%04x:%04x\n", E1000_HTDPMC, tmp);
printk("0x%04x:%04x\n", E1000_CBRDPC, tmp);
printk("0x%04x:%04x\n", E1000_CBRMPC, tmp);
printk("0x%04x:%04x\n", E1000_RPTHC, tmp);
printk("0x%04x:%04x\n", E1000_HGPTC, tmp);
printk("0x%04x:%04x\n", E1000_HTCBDPC, tmp);
printk("0x%04x:%04x\n", E1000_HGORCL, tmp);
printk("0x%04x:%04x\n", E1000_HGORCH, tmp);
printk("0x%04x:%04x\n", E1000_HGOTCL, tmp);
printk("0x%04x:%04x\n", E1000_HGOTCH, tmp);
printk("0x%04x:%04x\n", E1000_LENERRS, tmp);
printk("0x%04x:%04x\n", E1000_SCVPC, tmp);
printk("0x%04x:%04x\n", E1000_HRMPC, tmp);
printk("0x%04x:%04x\n", E1000_PCS_ANADV, tmp);
printk("0x%04x:%04x\n", E1000_PCS_LPAB, tmp);
printk("0x%04x:%04x\n", E1000_PCS_NPTX, tmp);
printk("0x%04x:%04x\n", E1000_PCS_LPABNP, tmp);
printk("0x%04x:%04x\n", E1000_1GSTAT_RCV, tmp);
printk("0x%04x:%04x\n", E1000_RXCSUM, tmp);
printk("0x%04x:%04x\n", E1000_RLPML, tmp);
printk("0x%04x:%04x\n", E1000_RFCTL, tmp);
printk("0x%04x:%04x\n", E1000_MTA, tmp);
printk("0x%04x:%04x\n", E1000_RA, tmp);
printk("0x%04x:%04x\n", E1000_VFTA, tmp);
printk("0x%04x:%04x\n", E1000_VT_CTL, tmp);
printk("0x%04x:%04x\n", E1000_CIAA, tmp);
printk("0x%04x:%04x\n", E1000_CIAD, tmp);
printk("0x%04x:%04x\n", E1000_VFQA0, tmp);
printk("0x%04x:%04x\n", E1000_VFQA1, tmp);
printk("0x%04x:%04x\n", E1000_WUC, tmp);
printk("0x%04x:%04x\n", E1000_WUFC, tmp);
printk("0x%04x:%04x\n", E1000_WUS, tmp);
printk("0x%04x:%04x\n", E1000_MANC, tmp);
printk("0x%04x:%04x\n", E1000_IPAV, tmp);
printk("0x%04x:%04x\n", E1000_IP4AT, tmp);
printk("0x%04x:%04x\n", E1000_IP6AT, tmp);
printk("0x%04x:%04x\n", E1000_WUPL, tmp);
printk("0x%04x:%04x\n", E1000_WUPM, tmp);
printk("0x%04x:%04x\n", E1000_PBACL, tmp);
printk("0x%04x:%04x\n", E1000_FFLT, tmp);
printk("0x%04x:%04x\n", E1000_HOST_IF, tmp);
printk("0x%04x:%04x\n", E1000_FFMT, tmp);
printk("0x%04x:%04x\n", E1000_FFVT, tmp);
printk("0x%04x:%04x\n", E1000_KMRNCTRLSTA, tmp);
printk("0x%04x:%04x\n", E1000_MDPHYA, tmp);
printk("0x%04x:%04x\n", E1000_MANC2H, tmp);
printk("0x%04x:%04x\n", E1000_SW_FW_SYNC, tmp);
printk("0x%04x:%04x\n", E1000_CCMCTL, tmp);
printk("0x%04x:%04x\n", E1000_GIOCTL, tmp);
printk("0x%04x:%04x\n", E1000_SCCTL, tmp);
printk("0x%04x:%04x\n", E1000_GCR, tmp);
printk("0x%04x:%04x\n", E1000_GCR2, tmp);
printk("0x%04x:%04x\n", E1000_GSCL_1, tmp);
printk("0x%04x:%04x\n", E1000_GSCL_2, tmp);
printk("0x%04x:%04x\n", E1000_GSCL_3, tmp);
printk("0x%04x:%04x\n", E1000_GSCL_4, tmp);
printk("0x%04x:%04x\n", E1000_FACTPS, tmp);
printk("0x%04x:%04x\n", E1000_SWSM, tmp);
printk("0x%04x:%04x\n", E1000_FWSM, tmp);
printk("0x%04x:%04x\n", E1000_SWSM2, tmp);
printk("0x%04x:%04x\n", E1000_DCA_ID, tmp);
printk("0x%04x:%04x\n", E1000_DCA_CTRL, tmp);
printk("0x%04x:%04x\n", E1000_FFLT_DBG, tmp);
printk("0x%04x:%04x\n", E1000_HICR, tmp);
printk("0x%04x:%04x\n", E1000_CPUVEC, tmp);
printk("0x%04x:%04x\n", E1000_RSSIR, tmp);
printk("0x%04x:%04x\n", E1000_TSYNCRXCTL, tmp);
printk("0x%04x:%04x\n", E1000_TSYNCTXCTL, tmp);
printk("0x%04x:%04x\n", E1000_TSYNCRXCFG, tmp);
printk("0x%04x:%04x\n", E1000_RXSTMPL, tmp);
printk("0x%04x:%04x\n", E1000_RXSTMPH, tmp);
printk("0x%04x:%04x\n", E1000_RXSATRL, tmp);
printk("0x%04x:%04x\n", E1000_RXSATRH, tmp);
printk("0x%04x:%04x\n", E1000_TXSTMPL, tmp);
printk("0x%04x:%04x\n", E1000_TXSTMPH, tmp);
printk("0x%04x:%04x\n", E1000_SYSTIML, tmp);
printk("0x%04x:%04x\n", E1000_SYSTIMH, tmp);
printk("0x%04x:%04x\n", E1000_TIMINCA, tmp);
printk("0x%04x:%04x\n", E1000_RXMTRL, tmp);
printk("0x%04x:%04x\n", E1000_RXUDP, tmp);

検索用タグ C言語

拍手[0回]

PR

2012/04/23 (Mon.) Comment(0) C言語

2012
04
23

行末に特定ワードを付け加えるプログラム(C言語)

レジスタダンプするのに使いました。

ソースコード

/* tail_add.c */
#include <stdio.h>
#include <string.h>

#define STR_MAX 256
#define OUTPUT_FILE "output_tail.txt"

void usage(void)
{
	printf("usage: ./tail_add [input_file] [add_word]\n");
	printf("result: %s\n", OUTPUT_FILE);
}

int main(int argc, char *argv[])
{
	int len;
	char str[STR_MAX], add_word[STR_MAX];
	FILE *fin, *fout;

	if (argc < 3) {
		usage();
		return 1;
	}

	if ((fin = fopen(argv[1], "r")) == NULL) {
		printf("fin error:[%s]\n", argv[1]);
		return -1;
	}
	if ((fout = fopen(OUTPUT_FILE, "w")) == NULL) {
		printf("fout error:[%s]\n", OUTPUT_FILE);
		fclose(fin);
		return -1;
	}

	/* adjustment */
	strcpy(add_word, argv[2]);
	len = strlen(add_word);
	add_word[len] = '\n';
	add_word[len+1] = '\0';

	for(;;) {
		if (fgets(str, STR_MAX, fin) == NULL) {
			break; /* EOF */
		}
		len = strlen(str);
		str[len-1] = '\0';
		strcat(str, add_word);
		fputs(str, fout);
	}
	fclose(fin);
	fclose(fout);
	return 0;
}

コンパイル例

gcc -Wall -o tail_add tail_add.c

使い方

./tail_add [input_file] [add_word]

検索用タグ C言語

拍手[0回]

2012/04/23 (Mon.) Comment(0) C言語

2012
04
23

行頭に特定ワードを付け加えるプログラム(C言語)

レジスタダンプするのに使いました。

ソースコード

/* head_add.c */
#include <stdio.h>

#define STR_MAX 256
#define OUTPUT_FILE "output_head.txt"

void usage(void)
{
	printf("usage: ./head_add [input_file] [add_word]\n");
	printf("result: %s\n", OUTPUT_FILE);
}

int main(int argc, char *argv[])
{
	char str[STR_MAX], output_str[STR_MAX];
	FILE *fin, *fout;

	if (argc < 3) {
		usage();
		return 1;
	}

	if ((fin = fopen(argv[1], "r")) == NULL) {
		printf("fin error:[%s]\n", argv[1]);
		return -1;
	}
	if ((fout = fopen(OUTPUT_FILE, "w")) == NULL) {
		printf("fout error:[%s]\n", OUTPUT_FILE);
		fclose(fin);
		return -1;
	}

	for(;;) {
		if (fgets(str, STR_MAX, fin) == NULL) {
			break; /* EOF */
		}
		sprintf(output_str, "%s%s", argv[2], str);
		fputs(output_str, fout);
	}
	fclose(fin);
	fclose(fout);
	return 0;
}

コンパイル例

gcc -Wall -o head_add head_add.c

使い方

./head_add [input_file] [add_word]

検索用タグ C言語

拍手[0回]

2012/04/23 (Mon.) Comment(0) C言語

2012
03
10

zshの設定ファイル読み込み順

zshの設定ファイルにechoつけてファイルに書き出して確認

# GUIでログイン時
read .zshenv!
read .zshrc!
# ログアウト時
# 何もされない

# CUIでログイン時
read .zshenv!
read .zprofile!
read .zshrc!
read .zlogin
# ログアウト時
read .zlogout!

# シェルスクリプト起動時
zsh ./temp.sh
read .zshenv!

# インタラクティブシェル起動時
zsh
read .zshenv!
read .zshrc!


/etc/に設定ファイルを置けば、グローバルな設定にできる
ただし、ユーザのホームディレクトリにある設定ファイルのほうが
後に読み込まれて優先される。

検索用タグ zsh

拍手[0回]

2012/03/10 (Sat.) Comment(0) Linux

2012
03
06

emacsユーザーのためのvi

って誰か講義でも開いて教えてくれないかなぁ(viまともに使えない)
emacs重いから乗っけられないっていう状況のためにおぼえましょう。
以下 覚え書き(ちょっとずつ増えます)

起動
vi
vi [ファイル名]
など

コマンドモード時
:q! # 変更した行もセーブせずに終了
:q  # 終了
:w  # セーブするが終了しない (新規だと名前無いって言われる)
:w [ファイル名] # [ファイル名]で保存
:h  # ヘルプ

dd # 1行削除(カット)
p  # 貼り付け


その他
・起動直後はコマンドモード
・ファイル名指定時は編集モードから
・iで編集モードへ
・Escでコマンドモードへ

個人的見解
:とqキー遠っ..しかも両手使うし。
:w  新規だと名前無いって言われて、後ろにファイル名つけなおすの面倒
dd で1行切り取り。C-kみたいにずずずずー!って消せない。。
でもちょっと新鮮でいいかも

検索用タグ emacs vi

拍手[0回]

2012/03/06 (Tue.) Comment(0) emacs

ブログ内検索

最新記事

カテゴリー

アーカイブ

フリーエリア





プロフィール

HN:
nex2t
年齢:
8
性別:
男性
誕生日:
2016/01/01
職業:
開発エンジニア(ソフト)
趣味:
ラグビー 犬 将棋 ラーメン サーフィン(ネット)
自己紹介:
入社2年目の組込みエンジニア
好きな言語:C言語
エディタ:emacs
シェル:zsh
ディストリ:Scientific Linux, Ubuntu
略歴
お仕事のほう
2011/3 調布にある大学卒業
2011/4~6月 研修
2011/7~12月? 10GのLANドライバをがんばる
2012/1~2012/4月? VDCPデーモンを作る
2012/5~2012/10月? genlockデーモンを作る
~(現在) 装置テストなど

趣味などのほう
~2012年4月 自由気ままに。仕事の勉強など。歯医者に時間を取られる。
2012年4月~2012年6月 機動力が増す(バイクの免許&バイク(125ccの原付をゲットする)
2012年6月~2012年8月 将棋のネットゲームを作る(引きこもる)((こころざし半ば)
2012年7月~2012年8月 通勤途中にバイクでこけて('自損)、1か月チャリ通の刑になる
2012年9月~現在(2013年3月) DDRばかりする(主にDP)

(↑2013/3/10更新)

DDRのほう
------------------------------------------
・199?年 小学校高学年。
よく遊ぶ友達内でDDRが流行る。
3rdが家にあり、家庭用マットもあったが、ゲーセンでプレイすることは皆無。
(コロコロコミックとガブリチュウを買うと小遣いがなくなるぐらいしかお金がない)
Burtyfly、DAM DARIRAMとかの誰でも聞いたことあるような曲、DEAD END、Paranoia Rebirth、AFRONOVAとかちょっと難しい曲、
BUMBLE BEE、End of the Centuryとかいい感じで印象に残っている。
GRADIUSIC CYBERが当時意味不明で難しいなと思っていた。
ハンドクラップの他にもメトロノームとかついてた気がする。
スコアとかを気にしたことはなかった。
------------------------------------------
・199?年 中学。
4thを中古で購入。半年に1回ぐらいプレイしてた?(手でやるだけ)。
ワンダ・古畑・HERO・ピンクダイナソー・オリオン・DROP OUT(当時とても速かった)とかが印象に残っている。
---------------------------------------------
・200?年 高校。
MAXを中古で買って、たまにやっていた。ゲーセンに1クレだけ踏みに行ったりしてた。
SO DEEP、天ヒー、象さん、ウィッチドクター、トワイライトゾーン、MAX300が印象に残っている。
この頃、MAX300 SPのリズム(ダンダン ダダンダ(ry)が体に染みついた模様笑。
なおMAXは友人に貸したままの模様。
------------------------------------------
・200?年 大学。
数か月に1回、ストレス発散がてら踏んでいた。確かXとかX2だった気がする。
踏むのは決まって8分でけっこう踏んだ気になる、AFRONOVA、天ヒー、象さん。
Aランクとか出せたことがなかった。
---------------------------------------------
・2012年9月 社会人 X3
コミケ準備のため引きこもっていた反動で、外出ばかりする。
ゲーセンで久々にプレイするととても楽しい(画面もきれいでパネルの反応も良い)。
今まで適当にやってきたが、少しシステムとかスコアを気にし始める。
自分のお金ということもあり、ゲーセンで千円単位でお金を使うことが自然になり、
真面目にDDRをするようになる。
------------------------------------------
・2012年12月 X3
SPしかやったことがなかったが、当時よく通ったゲーセンがDPする人が多く、
楽しそうだったので、DPをやり始める、足の裏の皮がむける。
---------------------------------------------
・2013年4月? X3終了。 DDR2013へ
X3はSP足鳳凰、DP足龍で終了。DPは足12以下の好きな曲のみフルコンができるような具合だった。
------------------------------------------
・2013年7月 ついったーで記録をつけるようになる。
8月4日 足10以下の激譜面AA埋め達成。鬼鯖初クリア
8月10日 足11以下の激譜面AA埋め達成。
8月24日 DDR2013 1000クレ行く。
9月8日 足12以下の激譜面AA埋め達成。
10月   (私用でドタバタする。)
11月2日 Skill pointが1000行く。
11月3日 岐阜のDDR大会 DPノンバー部門参加(予選通過ならず)
11月16日 DP足鳳凰。(エレクリDDPフルコン)
11月22日 足13以下の激譜面AA埋め達成。
11月24日 DP足紙さま?。(苺プリンDDPフルコン、鬼鯖810k同時だった)
Double AA Line 14になる。
現在~  足14のAA埋め、足15のA取得、足13の鳥取りを頑張り中。
------------------------------------------
(↑2013/11/28追加)

最新CM

[06/01 履歴書の書き方]

カウンター