8#include "tpcclibConfig.h"
23static char *info[] = {
24 "Edits the information in NIfTI-1 image header.",
25 "New contents are given in an ASCII text file with one or more header fields",
26 "in the same format as is the output of nii_lhdr (IFT format).",
27 "Use this program only if you are familiar with NIfTI format; note that",
28 "no backup is created.",
29 "Note that frame times are not stored in NIfTI header but in SIF.",
31 "Usage: @P niftifile headerfile",
36 "Example: copy header contents from image1.nii to image2.nii",
37 " nii_lhdr image1.nii > header.dat",
38 " @P image2.nii header.dat",
40 "See also: nii_lhdr, iftlist, iftdel, iftadd, ana_lhdr",
42 "Keywords: image, NIfTI, header, IFT",
61int main(
int argc,
char **argv)
63 int ai, help=0, version=0, verbose=1;
65 char hdrfile[FILENAME_MAX], iftfile[FILENAME_MAX], tmp[256];
73 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
74 hdrfile[0]=iftfile[0]=(char)0;
77 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
79 fprintf(stderr,
"Error: invalid option '%s'.\n", argv[ai]);
84 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
89 for(; ai<argc; ai++) {
90 if(!hdrfile[0]) {
strlcpy(hdrfile, argv[ai], FILENAME_MAX);
continue;}
91 else if(!iftfile[0]) {
strlcpy(iftfile, argv[ai], FILENAME_MAX);
continue;}
92 fprintf(stderr,
"Error: invalid argument '%s'.\n", argv[ai]);
98 fprintf(stderr,
"Error: missing command-line argument.\n");
105 printf(
"hdrfile := %s\n", hdrfile);
106 printf(
"iftfile := %s\n", iftfile);
113 if(verbose>1) printf(
"reading %s\n", hdrfile);
116 fprintf(stderr,
"Error: cannot read %s: %s.\n", hdrfile, tmp);
122 fprintf(stderr,
"Error: invalid header structure (%d).\n", ret);
126 fprintf(stdout,
"\nOriginal header:\n\n");
128 fprintf(stdout,
"\n");
135 if(verbose>1) printf(
"reading %s\n", iftfile);
136 ret=
iftRead(&ift2, iftfile, 1, 0);
138 fprintf(stderr,
"Error in reading %s: %s.\n", iftfile, ift2.
status);
143 fprintf(stdout,
"\nNew header contents:\n\n");
145 fprintf(stdout,
"\n");
154 fprintf(stderr,
"Error: invalid header contents in %s.\n", iftfile);
162 fprintf(stderr,
"Error: invalid header structure (%d).\n", ret);
166 fprintf(stdout,
"\nNew header contents:\n\n");
168 fprintf(stdout,
"\n");
175 if(verbose>1) printf(
"writing %s\n", hdrfile);
178 fprintf(stderr,
"Error: cannot write file: %s.\n", tmp);
int iftRead(IFT *ift, char *filename, int is_key_required, int verbose)
int iftWrite(IFT *ift, char *filename, int verbose)
Header file for libtpcimgio.
int niftiWriteHeader(char *filename, NIFTI_DSR *dsr, int verbose, char *status)
int niftiReadHeader(char *filename, NIFTI_DSR *h, int verbose, char *status)
Header file for libtpcmisc.
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
int niftiHeaderFromIFT(NIFTI_DSR *dsr, IFT *ift, int verbose)
int niftiHeaderToIFT(NIFTI_DSR *dsr, IFT *ift, int verbose)
Header file for niftiift.c.