2025
11
06
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言語
PR
2012/04/23 (Mon.) Comment(0) C言語
Comments
