mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Add current date to CSV import
Since CSV import does not include date/time stamp, we need to generate one for ourselves. This patch uses current time of the import as dive time. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									3e48511318
								
							
						
					
					
						commit
						89770249d0
					
				
					 2 changed files with 31 additions and 7 deletions
				
			
		
							
								
								
									
										30
									
								
								file.c
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								file.c
									
										
									
									
									
								
							|  | @ -6,6 +6,7 @@ | |||
| #include <errno.h> | ||||
| #include "gettext.h" | ||||
| #include <zip.h> | ||||
| #include <time.h> | ||||
| 
 | ||||
| #include "dive.h" | ||||
| #include "file.h" | ||||
|  | @ -326,24 +327,35 @@ void parse_file(const char *filename, char **error) | |||
| 
 | ||||
| #define MAXCOLDIGITS 3 | ||||
| #define MAXCOLS 100 | ||||
| void parse_csv_file(const char *filename, int time, int depth, int temp, char **error) | ||||
| void parse_csv_file(const char *filename, int timef, int depthf, int tempf, char **error) | ||||
| { | ||||
| 	struct memblock mem; | ||||
| 	char *params[7]; | ||||
| 	char *params[11]; | ||||
| 	char timebuf[MAXCOLDIGITS]; | ||||
| 	char depthbuf[MAXCOLDIGITS]; | ||||
| 	char tempbuf[MAXCOLDIGITS]; | ||||
| 	time_t now; | ||||
| 	struct tm *timep; | ||||
| 	char curdate[9]; | ||||
| 	char curtime[6]; | ||||
| 
 | ||||
| 	if (time >= MAXCOLS || depth >= MAXCOLS || temp >= MAXCOLS) { | ||||
| 	if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS) { | ||||
| 		int len = strlen(translate("gettextFromC", "Maximum number of supported columns on CSV import is %d")) + MAXCOLDIGITS; | ||||
| 		*error = malloc(len); | ||||
| 		snprintf(*error, len, translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS); | ||||
| 
 | ||||
| 		return; | ||||
| 	} | ||||
| 	snprintf(timebuf, MAXCOLDIGITS, "%d", time); | ||||
| 	snprintf(depthbuf, MAXCOLDIGITS, "%d", depth); | ||||
| 	snprintf(tempbuf, MAXCOLDIGITS, "%d", temp); | ||||
| 	snprintf(timebuf, MAXCOLDIGITS, "%d", timef); | ||||
| 	snprintf(depthbuf, MAXCOLDIGITS, "%d", depthf); | ||||
| 	snprintf(tempbuf, MAXCOLDIGITS, "%d", tempf); | ||||
| 	time(&now); | ||||
| 	timep = localtime(&now); | ||||
| 	strftime(curdate, sizeof(curdate), "%Y%m%d", timep); | ||||
| 
 | ||||
| 	/* As the parameter is numeric, we need to ensure that the leading zero
 | ||||
| 	* is not discarded during the transform, thus prepend time with 1 */ | ||||
| 	strftime(curtime, sizeof(curtime), "1%H%M", timep); | ||||
| 
 | ||||
| 	params[0] = "timeField"; | ||||
| 	params[1] = timebuf; | ||||
|  | @ -351,7 +363,11 @@ void parse_csv_file(const char *filename, int time, int depth, int temp, char ** | |||
| 	params[3] = depthbuf; | ||||
| 	params[4] = "tempField"; | ||||
| 	params[5] = tempbuf; | ||||
| 	params[6] = NULL; | ||||
| 	params[6] = "date"; | ||||
| 	params[7] = curdate; | ||||
| 	params[8] = "time"; | ||||
| 	params[9] = curtime; | ||||
| 	params[10] = NULL; | ||||
| 
 | ||||
| 	if (filename == NULL) | ||||
| 		return; | ||||
|  |  | |||
|  | @ -5,6 +5,8 @@ | |||
|   <xsl:param name="timeField" select="timeField"/> | ||||
|   <xsl:param name="depthField" select="depthField"/> | ||||
|   <xsl:param name="tempField" select="tempField"/> | ||||
|   <xsl:param name="date" select="date"/> | ||||
|   <xsl:param name="time" select="time"/> | ||||
|   <xsl:output method="xml" indent="yes"/> | ||||
| 
 | ||||
|   <xsl:variable name="lf"><xsl:text> | ||||
|  | @ -15,6 +17,12 @@ | |||
|     <divelog program="subsurface-import" version="2"> | ||||
|       <dives> | ||||
|         <dive> | ||||
|           <xsl:attribute name="date"> | ||||
|             <xsl:value-of select="concat(substring($date, 1, 4), '-', substring($date, 5, 2), '-', substring($date, 7, 2))"/> | ||||
|           </xsl:attribute> | ||||
|           <xsl:attribute name="time"> | ||||
|             <xsl:value-of select="concat(substring($time, 2, 2), ':', substring($time, 4, 2))"/> | ||||
|           </xsl:attribute> | ||||
|           <divecomputerid deviceid="ffffffff" model="stone" /> | ||||
|           <xsl:call-template name="printLine"> | ||||
|             <xsl:with-param name="line" select="substring-before(//csv, $lf)"/> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue