PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ DBFWriteHeader()

static void DBFWriteHeader ( DBFHandle  psDBF)
static

Definition at line 198 of file dbfopen.c.

199{
200 unsigned char abyHeader[XBASE_FLDHDR_SZ];
201 int i;
202
203 if (!psDBF->bNoHeader)
204 return;
205
206 psDBF->bNoHeader = FALSE;
207
208 /* -------------------------------------------------------------------- */
209 /* Initialize the file header information. */
210 /* -------------------------------------------------------------------- */
211 for (i = 0; i < XBASE_FLDHDR_SZ; i++)
212 abyHeader[i] = 0;
213
214 abyHeader[0] = 0x03; /* memo field? - just copying */
215
216 /* write out a dummy date */
217 abyHeader[1] = 95; /* YY */
218 abyHeader[2] = 7; /* MM */
219 abyHeader[3] = 26; /* DD */
220
221 /* record count preset at zero */
222
223 abyHeader[8] = (unsigned char)(psDBF->nHeaderLength % 256);
224 abyHeader[9] = (unsigned char)(psDBF->nHeaderLength / 256);
225
226 abyHeader[10] = (unsigned char)(psDBF->nRecordLength % 256);
227 abyHeader[11] = (unsigned char)(psDBF->nRecordLength / 256);
228
229 abyHeader[29] = (unsigned char)(psDBF->iLanguageDriver);
230
231 /* -------------------------------------------------------------------- */
232 /* Write the initial 32 byte file header, and all the field */
233 /* descriptions. */
234 /* -------------------------------------------------------------------- */
235 psDBF->sHooks.FSeek(psDBF->fp, 0, 0);
236 psDBF->sHooks.FWrite(abyHeader, XBASE_FLDHDR_SZ, 1, psDBF->fp);
237 psDBF->sHooks.FWrite(psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, psDBF->fp);
238
239 /* -------------------------------------------------------------------- */
240 /* Write out the newline character if there is room for it. */
241 /* -------------------------------------------------------------------- */
242 if (psDBF->nHeaderLength > 32 * psDBF->nFields + 32)
243 {
244 char cNewline;
245
246 cNewline = 0x0d;
247 psDBF->sHooks.FWrite(&cNewline, 1, 1, psDBF->fp);
248 }
249}
#define FALSE
Definition dbfopen.c:168
#define XBASE_FLDHDR_SZ

References FALSE, and XBASE_FLDHDR_SZ.

Referenced by DBFClose(), DBFUpdateHeader(), DBFWriteAttribute(), DBFWriteAttributeDirectly(), and DBFWriteTuple().

Here is the caller graph for this function: