[ncview] 02/06: Imported Upstream version 2.1.6+ds

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat Oct 31 09:31:20 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository ncview.

commit 720a8b6e93f7cadca95c8e09135ab96e99001ac9
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat Oct 31 10:15:57 2015 +0100

    Imported Upstream version 2.1.6+ds
---
 src/calcalcs.c        | 12 ++++++++----
 src/calcalcs.h        |  4 ++--
 src/file_netcdf.c     | 19 ++++++++++++++++---
 src/ncview.c          |  5 +++++
 src/ncview.defines.h  |  5 +++--
 src/udu.c             |  5 +++++
 src/utCalendar2_cal.c | 36 ++++++++++++++++++++++++++++--------
 src/view.c            |  4 ++++
 8 files changed, 71 insertions(+), 19 deletions(-)

diff --git a/src/calcalcs.c b/src/calcalcs.c
index 763ddd7..a18efd2 100644
--- a/src/calcalcs.c
+++ b/src/calcalcs.c
@@ -1,10 +1,14 @@
 /*
     The CalCalcs routines, a set of C-language routines to perform
-    calendar calculations.
+    calendar calculations with an emphasis on calendars used by 
+    global climate models, including "noleap", "365_day", "360_day",
+    "proleptic_gregorian", and "standard" calendars. Support is 
+    also provided for what I call "year 0" calendars, which is to
+    say calendars that have a valid year 0, unlike the real calendar.
 
-    Version 1.0, released 7 January 2010
+    Version 1.2, released 8 June 2014
 
-    Copyright (C) 2010 David W. Pierce, dpierce at ucsd.edu
+    Copyright (C) 2010-2014, David W. Pierce, dpierce at ucsd.edu
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -321,7 +325,7 @@ calcalcs_cal *ccs_init_calendar( const char *calname )
 	else
 		{
 		fprintf( stderr, "Error, ccs_init_calendar called with unknown calendar name: %s\n", calname );
-		exit(-1);
+		return( NULL );
 		}
 
 	return( retval );
diff --git a/src/calcalcs.h b/src/calcalcs.h
index b93068c..b7e42b3 100644
--- a/src/calcalcs.h
+++ b/src/calcalcs.h
@@ -2,9 +2,9 @@
     The CalCalcs routines, a set of C-language routines to perform
     calendar calculations.
 
-    Version 1.0, released 7 January 2010
+    Version 1.2, released 16 June 2014
 
-    Copyright (C) 2010 David W. Pierce, dpierce at ucsd.edu
+    Copyright (C) 2010-2014 David W. Pierce, dpierce at ucsd.edu
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/src/file_netcdf.c b/src/file_netcdf.c
index edc8ef5..a3752a8 100644
--- a/src/file_netcdf.c
+++ b/src/file_netcdf.c
@@ -1554,6 +1554,7 @@ void netcdf_fill_value( int file_id, char *var_name, float *v, NetCDFOptions *au
 {
 	int	err, varid, foundit, gid;
 	char	var_name_ng[MAX_NC_NAME];
+	nc_type	vartype;
 
 	if( options.debug ) 
 		fprintf( stderr, "Checking %s for a missing value...\n",
@@ -1619,10 +1620,22 @@ void netcdf_fill_value( int file_id, char *var_name, float *v, NetCDFOptions *au
 		return;
 		}
 
-	/* default behavior, if no specified "_FillValue" attribute */
-	*v = FILL_FLOAT;
+	/* default behavior, if no specified "_FillValue" attribute.
+	 * Thanks to Heiko Klein <Heiko.Klein at met.no> for the suggestion & code.
+	*/
+	if ( nc_inq_vartype( file_id, varid, &vartype) == NC_NOERR ) {
+		switch (vartype) {
+			case NC_BYTE:   *v = (float) NC_FILL_BYTE; break;
+			case NC_SHORT:  *v = (float) NC_FILL_SHORT; break;
+			case NC_INT:    *v = (float) NC_FILL_INT; break;
+			case NC_FLOAT:  *v = NC_FILL_FLOAT; break;
+			case NC_DOUBLE: *v = (float) NC_FILL_DOUBLE; break;
+			default: 	*v = NC_FILL_FLOAT;
+			}
+		}
+
 	if( options.debug )
-		fprintf( stderr, "setting fillvalue to default=%g\n",
+		fprintf( stderr, "setting fillvalue to default for var type=%g\n",
 			*v );
 }
 
diff --git a/src/ncview.c b/src/ncview.c
index ec00f12..4c6900f 100644
--- a/src/ncview.c
+++ b/src/ncview.c
@@ -218,6 +218,9 @@ parse_options( int argc, char *argv[] )
 			else if( strncmp( argv[i], "-beep", 5 ) == 0 )
 				options.beep_on_restart = TRUE;
 
+			else if( strncmp( argv[i], "-pause_on_restart", 17 ) == 0 )
+				options.stop_on_restart = TRUE;
+
 			else if( strncmp( argv[i], "-fra", 4 ) == 0 )
 				options.dump_frames = TRUE;
 
@@ -370,6 +373,7 @@ initialize_misc()
 	options.show_sel	 = FALSE;
 	options.want_extra_info  = FALSE;
 	options.beep_on_restart  = FALSE;
+	options.stop_on_restart  = FALSE;
 	options.small  		 = FALSE;
 	options.blowup_type      = DEFAULT_BLOWUP_TYPE;
 	options.save_frames      = DEFAULT_SAVEFRAMES;
@@ -789,6 +793,7 @@ fprintf( stderr, "	-calendar: Specify time calendar to use, overriding value in
 fprintf( stderr, "	-private: Use a private colormap.\n" );
 fprintf( stderr, "	-debug: Print lots of debugging info.\n" );
 fprintf( stderr, "	-beep: 	Ring the bell when the movie restarts at frame zero.\n" );
+fprintf( stderr, "	-pause_on_restart: Pause playback when the movie restarts at frame zero.\n" );
 fprintf( stderr, "	-extra: Put some extra information on the display window.\n" );
 fprintf( stderr, "	-mtitle: My title to use on the display window.\n" );
 fprintf( stderr, "	-noautoflip: Do not automatically flip image, even\n" );
diff --git a/src/ncview.defines.h b/src/ncview.defines.h
index 2773d38..749a8ae 100644
--- a/src/ncview.defines.h
+++ b/src/ncview.defines.h
@@ -31,8 +31,8 @@
 #include <udunits2.h>
 #endif
 
-#define PROGRAM_ID		"Ncview 2.1.5 David W. Pierce  18 Mar 2015"
-#define PROGRAM_VERSION_STRING	"2.1.5"
+#define PROGRAM_ID		"Ncview 2.1.6 David W. Pierce  29 Oct 2015"
+#define PROGRAM_VERSION_STRING	"2.1.6"
 #define APP_RES_VERSION 	1.93
 
 #ifndef TRUE
@@ -516,6 +516,7 @@ typedef struct {
 		listsel_max,	/* if # of vars is more than this, auto switch from VARSEL_LIST to VARSEL_MENU */
 		color_by_ndims,	/* if 1, then button is color coded by # of effective dims */
 		beep_on_restart,
+		stop_on_restart,
 		auto_overlay,	/* if 1, then tries to figure out if coastlines should automatically be added */
 		blowup,
 		maxsize_pct,	/* -1 if a width/height pair specified instead */
diff --git a/src/udu.c b/src/udu.c
index 4411321..ffd6a89 100644
--- a/src/udu.c
+++ b/src/udu.c
@@ -241,6 +241,11 @@ void udu_fmt_time( char *temp_string, size_t temp_string_len, double new_dimval,
 		fprintf( stderr, "units: >%s<\n", dim->units );
 		exit( -1 );
 		}
+
+	if( debug ) {
+		fprintf( stderr, "udu_fmt_time: dimval=%lf units=%s calendar=%s utCalendar2_cal returns: year=%d month=%d day=%d hour=%d minute=%d second=%lf\n",
+			new_dimval, dim->units, dim->calendar, year, month, day, hour, minute, second );
+		}
 	
 	if( include_granularity ) {
 		switch( dim->tgran ) {
diff --git a/src/utCalendar2_cal.c b/src/utCalendar2_cal.c
index 5427369..4ccbb4b 100644
--- a/src/utCalendar2_cal.c
+++ b/src/utCalendar2_cal.c
@@ -3,9 +3,9 @@
     The CalCalcs routines, a set of C-language routines to perform
     calendar calculations.
 
-    Version 1.0, released 7 January 2010
+    Version 1.2, released 8 June 2014
 
-    Copyright (C) 2010 David W. Pierce, dpierce at ucsd.edu
+    Copyright (C) 2010-2014 David W. Pierce, dpierce at ucsd.edu
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-/* #define DEBUG */
+/* #define DEBUG  */
 
 #include <stdio.h>
 #include <unistd.h>
@@ -50,7 +50,7 @@ static ut_unit *udu_ref_date;
    in seconds, so, for example, 1.e-3 means round up to 1 second if the value is 0.999 seconds or greater,
    and 1.e-6 means round up to 1 second if the value is 0.999999 seconds or greater.
 */
-static double sec_rounding_value = 1.e-8;
+static double sec_rounding_value = 1.e-6;
 
 /* Internal to this file only */
 static void 	initialize( const char *ut_read_xml_arg );
@@ -273,11 +273,11 @@ fuckyou = (char *)ccs_err_str((int)ierr);
 	*second = tot_extra_seconds;
 
 	/* Handle the rouding issues */
-#ifdef DEBUG
-	fprintf( stderr, "utCalendar2_cal: handling rounding issues\n" );
-#endif
 	iorig  = *second;			/* Integer conversion */
 	iround = *second + sec_rounding_value;	
+#ifdef DEBUG
+	fprintf( stderr, "utCalendar2_cal: handling rounding issues; orig second=%lf  orig+rounding value:%lf\n", *second, *second + sec_rounding_value );
+#endif
 	if( iround > iorig ) {
 #ifdef DEBUG
 		printf( "rounding alg invoked, orig date: %04d-%02d-%02d %02d:%02d:%.20lf\n", *year, *month, *day, *hour, *minute, *second );
@@ -612,6 +612,26 @@ static void initialize( const char *ut_read_xml_arg )
 }
 
 /*========================================================================================
+ * We already have routine ccs_date2doy, so why do we need this one? It can be convenient
+ * to supply this functionality to Fortran, which does not have the ability to easily
+ * initialize or use calendars, and only identify them by a character-string name. So,
+ * provide an interface that gives the ccs_date2doy functionality given only a character
+ * string calendar name.
+ */
+int ccs_date2doy_calname( char *calendar_name, int year, int month, int day, int *doy )
+{
+	calcalcs_cal	*cal2use;
+
+	cal2use = getcal( calendar_name );
+	if( cal2use == NULL ) {
+		unknown_cal_emit_warning( calendar_name );
+		cal2use = getcal( "Standard" );
+		}
+
+	return( ccs_date2doy( cal2use, year, month, day, doy ));
+}
+
+/*========================================================================================
  * Returns NULL if the passed calendar name is both not found and not creatable
  */
 static calcalcs_cal *getcal( const char *name )
@@ -691,7 +711,7 @@ static int inferred_origin_year( const char *s )
 /* printf( "loc that string 'since' starts: %d\n", loc_since_start ); */
 
 	ifnbss = loc_since_start + 5;	/* ifnbss = "i first non blank since since" */
-	while( (ifnbss < sl) && isblank( *(s+ifnbss) ) && (*(s+ifnbss) != '\0'))
+	while( isblank( *(s+ifnbss) ) && (*(s+ifnbss) != '\0') && (ifnbss < sl))
 		ifnbss++;
 
 /* printf( "i first non blank since since:%d\n", ifnbss ); */
diff --git a/src/view.c b/src/view.c
index f3633d6..db784d4 100644
--- a/src/view.c
+++ b/src/view.c
@@ -486,6 +486,10 @@ change_view( int delta, int interpretation )
 		place = 0L;
 		if( options.beep_on_restart )
 			beep();
+		if( options.stop_on_restart ) {
+			do_pause( MOD_1 );
+			return(0);
+			}
 		}
 		
 	/* Have we decremented below the minimum allowed value? */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/ncview.git



More information about the Pkg-grass-devel mailing list