Ejemplo n.º 1
0
void OutputFileFITS::writeKeyword(const std::string& name, const std::string& value, const std::string& comment) {
	int status = 0;
	char card[FLEN_CARD];

	if(!isOpened())
		throwException("Error in OutputFileFITS::writeKeyword() ", status);

	// check if this is a protected keyword that must not be changed.
	fits_read_card(infptr, name.c_str(), card, &status);
	if(status != KEY_NO_EXIST) {
		if (*card && fits_get_keyclass(card) == TYP_STRUC_KEY)
			throwException("Error in OutputFileFITS::writeKeyword() protected ", status);
	}
	if (status != KEY_NO_EXIST && status != 0)
		throwException("Error in OutputFileFITS::writeKeyword() ", status);

	status = 0;
	std::string key = name + " = " + value + " / " + comment;
	int keytype;
	fits_parse_template((char*)key.c_str(), card, &keytype, &status);
	if (status)
		throwException("Error in OutputFileFITS::writeKeyword() ", status);

	fits_update_card(infptr, name.c_str(), card, &status);
	if (status)
		throwException("Error in OutputFileFITS::writeKeyword() ", status);
}
Ejemplo n.º 2
0
int addkey(char *outfile, char *keyword, char *keyvalue)
{
	fitsfile *outfptr;         /* FITS file pointer, defined in fitsio.h */
	char card[FLEN_CARD], newcard[FLEN_CARD];
	char oldvalue[FLEN_VALUE], comment[FLEN_COMMENT];
	int status = 0;   /*  CFITSIO status value MUST be initialized to zero!  */
	int keytype;

	if (!fits_open_file(&outfptr, outfile, READWRITE, &status))
	{
		if (fits_read_card(outfptr, keyword, card, &status))
		{
			printf("Keyword does not exist\n");
			card[0] = '\0';
			comment[0] = '\0';
			status = 0;  /* reset status after error */
		}
		else
			printf("%s\n",card);

		/* check if this is a protected keyword that must not be changed */
		if (*card && fits_get_keyclass(card) == TYP_STRUC_KEY)
		{
			printf("Protected keyword cannot be modified.\n");
		}
		else
		{
			/* get the comment string */
			if (*card)fits_parse_value(card, oldvalue, comment, &status);

			/* construct template for new keyword */
			strcpy(newcard, keyword);     /* copy keyword name */
			strcat(newcard, " = ");       /* '=' value delimiter */
			strcat(newcard, keyvalue);    /* new value */
			if (*comment) {
				strcat(newcard, " / ");  /* comment delimiter */
				strcat(newcard, comment);     /* append the comment */
			}

			/* reformat the keyword string to conform to FITS rules */
			fits_parse_template(newcard, card, &keytype, &status);

			/* overwrite the keyword with the new value */
			fits_update_card(outfptr, keyword, card, &status);

			printf("Keyword has been changed to:\n");
			printf("%s\n",card);
		}  
		fits_close_file(outfptr, &status);
	}    /* open_file */

	/* if error occured, print out error message */
	if (status) fits_report_error(stderr, status);
	return(status);
}
Ejemplo n.º 3
0
int main(int argc, char *argv[])
{
  fitsfile *fptr = 0;         /* FITS file pointer, defined in fitsio.h */
  char card[FLEN_CARD], newcard[FLEN_CARD];
  char oldvalue[FLEN_VALUE], comment[FLEN_COMMENT];
  int status = 0;   /*  CFITSIO status value MUST be initialized to zero!  */
  int keytype = 0;

  if (argc != 4) {
    fprintf(stderr, "Usage:  %s filename[ext] keyword newvalue\n", argv[0]);
    fprintf(stderr, "\n");
    fprintf(stderr, "Modify the value of a header keyword.\n");
    fprintf(stderr, "\n");
    fprintf(stderr, "Examples: \n");
    fprintf(stderr, "  %s file.fits dec 30.0 - set DEC = 30.0 \n", argv[0]);
    return (0);
  }

  if (!fits_open_file(&fptr, argv[1], READWRITE, &status)) {
    if (fits_read_card(fptr,argv[2], card, &status)) {
      fprintf(stderr, "Keyword does not exist\n");
      return (1);
    }

    if (fits_get_keyclass(card) == TYP_STRUC_KEY) {
      fprintf(stderr, "Protected keyword cannot be modified\n");
      return (1);
    }

    fits_parse_value(card, oldvalue, comment, &status);

    /* construct template for new keyword */
    strcpy(newcard, argv[2]);     /* copy keyword name */
    strcat(newcard, " = ");       /* '=' value delimiter */
    strcat(newcard, argv[3]);     /* new value */
    if (*comment) {
      strcat(newcard, " / ");  /* comment delimiter */
      strcat(newcard, comment);     /* append the comment */
    }

    /* reformat the keyword string to conform to FITS rules */
    fits_parse_template(newcard, card, &keytype, &status);

    /* overwrite the keyword with the new value */
    fits_update_card(fptr, argv[2], card, &status);

    fits_close_file(fptr, &status);
  }    /* open_file */

  /* if error occured, print out error message */
  if (status) {
    fits_report_error(stderr, status);
  }
  return (status);
}
Ejemplo n.º 4
0
int main(int argc, char *argv[])
{
    fitsfile *fptr;         /* FITS file pointer, defined in fitsio.h */
    char card[FLEN_CARD], newcard[FLEN_CARD];
    char oldvalue[FLEN_VALUE], comment[FLEN_COMMENT];
    int status = 0;   /*  CFITSIO status value MUST be initialized to zero!  */
    int iomode, keytype;

    if (argc == 3) 
      iomode = READONLY;
    else if ((argc == 4) || (argc == 5))
		iomode = READWRITE;
    else {
      printf("Usage:  modhead filename[ext] keyword newvalue [newcomment]\n");
      printf("\n");
      printf("Write or modify the value of a header keyword.\n");
      printf("If 'newvalue' is not specified then just print \n");
      printf("the current value. \n");
      printf("\n");
      printf("Examples: \n");
      printf("  modhead file.fits dec      - list the DEC keyword \n");
      printf("  modhead file.fits dec 30.0 - set DEC = 30.0 \n");
      printf("  modhead file.fits dec 30.0 \"The decline of civilization\" - set DEC = 30.0 and add a comment \n");
      return(0);
    }

    if (!fits_open_file(&fptr, argv[1], iomode, &status))
    {
      if (fits_read_card(fptr,argv[2], card, &status))
      {
        printf("Keyword does not exist\n");
        card[0] = '\0';
        comment[0] = '\0';
        status = 0;  /* reset status after error */
      }
      else
        printf("%s\n",card);

      if ((argc == 4) || (argc == 5)) /* write or overwrite the keyword */
      {
          /* check if this is a protected keyword that must not be changed */
		  /*
			if (*card && fits_get_keyclass(card) == TYP_STRUC_KEY)
			{
            printf("Protected keyword cannot be modified.\n");
			}
			else
		  */
          {
            /* get the comment string */
			if (*card)
				fits_parse_value(card, oldvalue, comment, &status);

            /* construct template for new keyword */
            strcpy(newcard, argv[2]);     /* copy keyword name */
            strcat(newcard, " = ");       /* '=' value delimiter */
            strcat(newcard, argv[3]);     /* new value */
			if (argc == 5) {
              strcat(newcard, " / ");  /* comment delimiter */
              strcat(newcard, argv[4]);     /* append the comment */
			} else if (*comment) {
			  /* old comment */
			  strcat(newcard, " / ");  /* comment delimiter */
              strcat(newcard, comment);     /* append the comment */
            }

            /* reformat the keyword string to conform to FITS rules */
            fits_parse_template(newcard, card, &keytype, &status);

            /* overwrite the keyword with the new value */
            fits_update_card(fptr, argv[2], card, &status);

            printf("Keyword has been changed to:\n");
            printf("%s\n",card);
          }
      }
      fits_close_file(fptr, &status);
    }

    /* if error occured, print out error message */
    if (status) fits_report_error(stderr, status);
    return(status);
}