diff --git a/src/cgribexlib.c b/src/cgribexlib.c index 05ea0e60993415484c18609f72953880e5a8d32b..d1786fdb3f92f03a25b3281075ebed8795cd8f77 100644 --- a/src/cgribexlib.c +++ b/src/cgribexlib.c @@ -1,5 +1,5 @@ -// Automatically generated by m214003 at 2024-10-23, do not edit +// Automatically generated by m214003 at 2024-10-30, do not edit // CGRIBEXLIB_VERSION="2.3.1" @@ -2324,11 +2324,7 @@ gribPrintSec1(int *isec0, int *isec1) int ibit, ierr, iout, iyear; int jiloop; float value; - char hversion[9]; - /* - char hfirst[121], hsecond[121], hthird[121], hfourth[121]; - */ grsdef(); @@ -2352,22 +2348,6 @@ gribPrintSec1(int *isec0, int *isec1) fprintf(grprsm, " Flag (Code Table 1) %8.8d\n", iout); fprintf(grprsm, " Parameter identifier (Code Table 2). %9d\n", isec1[5]); - /* - IERR = CHKTAB2(ISEC1,HFIRST,HSECOND,HTHIRD,HFOURTH) - IF( IERR .EQ. 0 ) THEN - DO JLOOP = 121, 1, -1 - IF( HSECOND(JLOOP:JLOOP).NE.' ' ) THEN - IOFFSET = JLOOP - GOTO 110 - ENDIF - ENDDO - GOTO 120 - 110 CONTINUE - WRITE(*,'(2H ",A,1H")') HSECOND(1:IOFFSET) - 120 CONTINUE - ENDIF - */ - if (isec1[5] != 127) { fprintf(grprsm, " Type of level (Code Table 3). %9d\n", isec1[6]); @@ -2384,7 +2364,6 @@ gribPrintSec1(int *isec0, int *isec1) if (iyear != 255) { int date, time; - /* iyear = ((isec1[20]-1)*100 + isec1[9]); */ gribDateTime(isec1, &date, &time); iyear = date / 10000; fprintf(grprsm, " Year of reference time of data. %9d (%4d)\n", isec1[9], iyear); @@ -2413,10 +2392,10 @@ gribPrintSec1(int *isec0, int *isec1) else fprintf(grprsm, " Century of reference time of data. %9d\n", isec1[20]); - /* Print sub-centre */ + // Print sub-centre fprintf(grprsm, " Sub-centre identifier. %9d\n", ISEC1_SubCenterID); - /* Decimal scale factor */ + // Decimal scale factor fprintf(grprsm, " Units decimal scaling factor. %9d\n", isec1[22]); /* @@ -2478,7 +2457,7 @@ gribPrintSec1(int *isec0, int *isec1) fprintf(grprsm, " Class. %9d\n", isec1[37]); fprintf(grprsm, " Type. %9d\n", isec1[38]); fprintf(grprsm, " Stream. %9d\n", isec1[39]); - sprintf(hversion, "%4s", (char *) &isec1[40]); + snprintf(hversion, sizeof(hversion), "%4s", (char *) &isec1[40]); hversion[4] = 0; fprintf(grprsm, " Version number or Experiment identifier. %4s\n", hversion); /* @@ -2797,14 +2776,11 @@ gribPrintSec1(int *isec0, int *isec1) fprintf(grprsm, " Type %9d\n", isec1[42]); fprintf(grprsm, " Stream %9d\n", isec1[43]); /* - sprintf(hversion, "%8d", isec1[44]); + snprintf(hversion, sizeof(hversion), "%8d", isec1[44]); fprintf(grprsm, " Version number/experiment identifier: %4s\n", &hversion[4]); */ iyear = isec1[45]; - if (iyear > 50) - iyear = iyear + 1900; - else - iyear = iyear + 2000; + iyear = iyear + ((iyear > 50) ? 1900 : 2000); fprintf(grprsm, " Year %9d\n", iyear); fprintf(grprsm, " Month %9d\n", isec1[46]); @@ -3025,11 +3001,7 @@ printQuasi(int *isec2) fprintf(grprsm, " Number of points along a parallel varies.\n"); int ntos = (fmod((double) isec2[10], 128.) < 64); - - if (ntos) - fprintf(grprsm, " Number of points. Parallel. (North to South)\n"); - else - fprintf(grprsm, " Number of points. Parallel. (South to North)\n"); + fprintf(grprsm, " Number of points. Parallel. %s\n", ntos ? "(North to South)" : "(South to North)"); // Display number of points for each latitude int latcnt = isec2[2]; @@ -3039,7 +3011,7 @@ printQuasi(int *isec2) for (int j = 0; j < latcnt; ++j) { nextlat = nextlat + 1; - sprintf(yout, "%4d", nextlat); + snprintf(yout, sizeof(yout), "%4d", nextlat); // Finished? if (nextlat > latcnt) break; @@ -3060,7 +3032,7 @@ printQuasi(int *isec2) if (nextlat < latcnt) goto LABEL110; } // Display neighbouring latitudes with same number of points as 'nn to mm'. - if (nrepeat >= 1) sprintf(yout + 4, "to %5d", nextlat); + if (nrepeat >= 1) snprintf(yout + 4, sizeof(yout) - 4, "to %5d", nextlat); fprintf(grprsm, " %5d %-12s\n", isec2[nextlat + 21], yout); memset(yout, ' ', (size_t) 11); } @@ -4057,9 +4029,7 @@ C ---------------------------------------------------------------- /* Common area variables have not been set. Set them. */ - /* - Set GRIB calendar. - */ + // Set GRIB calendar. if (CGRIBEX_grib_calendar == -1) { CGRIBEX_grib_calendar = CALENDAR_PROLEPTIC; @@ -4081,18 +4051,14 @@ C ---------------------------------------------------------------- CGRIBEX_grib_calendar = CALENDAR_NONE; } } - /* - Set GRIBEX compatibility mode. - */ + // Set GRIBEX compatibility mode. envString = getenv("GRIB_GRIBEX_MODE_ON"); if (envString != NULL) { if (atoi(envString) == 1) CGRIBEX_Const = 0; } - /* - See if output stream needs changing - */ + // See if output stream needs changing grprsm = stdout; env_stream = getenv("GRPRS_STREAM"); if (env_stream) @@ -4110,7 +4076,7 @@ C ---------------------------------------------------------------- else { char filename[] = "unit.00"; - sprintf(filename, "%2.2d", unit); + snprintf(filename, sizeof(filename), "%2.2d", unit); grprsm = fopen(filename, "w"); if (!grprsm) SysError("GRPRS_STREAM = %d", unit); } @@ -4124,9 +4090,7 @@ C ---------------------------------------------------------------- } } } - /* - Mark common area values set by user. - */ + // Mark common area values set by user. lfirst = false; } @@ -5188,7 +5152,7 @@ grib2PrintALL(int nrec, long offset, long recpos, long recsize, unsigned char *g printf("level %d %d %d %d %d %d %d\n", level1type, level1sf, level1, level1*level1sf, level2sf, level2, level2*level2sf); */ char paramstr[16]; - sprintf(paramstr, "%d.%d.%d", paramnum, paramcat, dis); + snprintf(paramstr, sizeof(paramstr), "%d.%d.%d", paramnum, paramcat, dis); fprintf(stdout, "%5d :%4ld %8ld %6ld :%2d %3ld %3ld %3ld %3ld %4ld %6ld %6ld : %-9s %7d : %5d %5d %6.4g\n", nrec, offset, recpos, recsize, GRIB_EDITION(is), ids_len, lus_len, gds_len, pds_len, drs_len, bms_len, bds_len, paramstr, level1, level1type, gridtype, cr);