@@ -43,15 +43,33 @@ int main(int argc, char **argv)
4343 }
4444
4545 const int iRecord = DBFGetRecordCount (hDBF );
46-
46+
47+ SHPDate date ;
48+ char bool ;
49+
4750 // Loop assigning the new field values.
4851 for (int i = 0 ; i < DBFGetFieldCount (hDBF ); i ++ )
4952 {
5053 if (strcmp (argv [i + 2 ], "" ) == 0 )
5154 DBFWriteNULLAttribute (hDBF , iRecord , i );
5255 else if (DBFGetFieldInfo (hDBF , i , NULL , NULL , NULL ) == FTString )
5356 DBFWriteStringAttribute (hDBF , iRecord , i , argv [i + 2 ]);
57+ else if (DBFGetFieldInfo (hDBF , i , NULL , NULL , NULL ) == FTDate )
58+ {
59+ if (3 == sscanf (argv [i + 2 ], "%4d%2d%2d" , & date .year , & date .month ,
60+ & date .day ))
61+ {
62+ DBFWriteDateAttribute (hDBF , iRecord , i , & date );
63+ }
64+ }
65+ else if (DBFGetFieldInfo (hDBF , i , NULL , NULL , NULL ) == FTLogical )
66+ {
67+ if (1 == sscanf (argv [i + 2 ], "%c" , & bool )) {
68+ DBFWriteLogicalAttribute (hDBF , iRecord , i , bool );
69+ }
70+ }
5471 else
72+
5573 DBFWriteDoubleAttribute (hDBF , iRecord , i , atof (argv [i + 2 ]));
5674 }
5775
0 commit comments