- Timestamp:
- Aug 9, 2017, 12:47:22 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20170809/src/libfits/header/F_modify.c
r38441 r40113 72 72 char *ptr = va_arg (argp, char *); 73 73 if (!ptr) goto invalid; 74 strncpy (data, ptr, 68); 74 strncpy (data, ptr, 68); data[68] = 0; 75 75 snprintf (string, 81, "%-8s= '%-8s' / %-s ", field, data, comment); 76 76 goto found_it; … … 119 119 header[0].datasize += FT_RECORD_SIZE; 120 120 REALLOCATE (header[0].buffer, char, header[0].datasize); 121 /* re-find the "END" marker, in case new memory block is used */ 121 122 p = gfits_header_field (header, "END", 1); 122 123 if (p == NULL) return (FALSE); … … 138 139 /* write the boolean mode */ 139 140 if (!strcmp (mode, "%t")) { 140 if (va_arg (argp, int)) 141 snprintf (string, 81, "%-8s= %18s T / %-s ", field, " ", comment); 142 else 143 snprintf (string, 81, "%-8s= %18s F / %-s ", field, " ", comment); 141 // fill data will spaces, null terminated, so snprintf can generate a space-filled block 142 memset (data, ' ', FT_LINE_LENGTH); data[FT_LINE_LENGTH] = 0; 143 if (va_arg (argp, int)) { 144 snprintf (string, 81, "%-8s= %18s T / %-s ", field, data, comment); 145 } else { 146 snprintf (string, 81, "%-8s= %18s F / %-s ", field, data, comment); 147 } 144 148 } 145 149 … … 148 152 char *ptr = va_arg (argp, char *); 149 153 if (!ptr) goto invalid; 150 strncpy (data, ptr, 71); 154 strncpy (data, ptr, 71); data[71] = 0; 151 155 snprintf (string, 81, "%-8s %-71s", field, data); 152 156 } … … 159 163 /* keep ' on ends, if there */ 160 164 if (qe[0] == 0x27) qe ++; 161 if (qs[-1] == 0x27) qs --; 165 if (qs >= p + 1) { 166 if (qs[-1] == 0x27) qs --; 167 } 162 168 163 169 strncpy (data, qs, MAX (MIN (qe - qs, 71), 0));
Note:
See TracChangeset
for help on using the changeset viewer.
