[1411] in Moira

home help back first fref pref prev next nref lref last post

Don't lose leading whitespace with mrbackup

daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Thu Mar 9 15:46:12 2000

Message-Id: <200003092046.PAA01337@wing-commander.mit.edu>
To: moiradev@MIT.EDU
Date: Thu, 09 Mar 2000 15:46:06 EST
From: Garry Zacheiss <zacheiss@MIT.EDU>

	Experimentally, this works for preventing duplicate strings;
strings with leading spaces go into the backups the right way.  Code for
endtrim shamelessly stolen from strtrim.  

Index: db2bkup.awk
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository//moira/backup/db2bkup.awk,v
retrieving revision 1.13
diff -c -r1.13 db2bkup.awk
*** db2bkup.awk	1998/02/13 21:32:26	1.13
--- db2bkup.awk	2000/03/09 19:13:40
***************
*** 87,93 ****
  	for (i = 0; i < count; i++) {
  		if (i != 0) print "      dump_sep(f);";
  		if (vtype[i] ~ /str/ || vtype[i] ~ /date/) {
! 			printf "      dump_str(f, strtrim(t_%s));\n", vname[i];
  		} else {
  			printf "      dump_%s(f, t_%s);\n", vtype[i], vname[i];
  		}
--- 87,93 ----
  	for (i = 0; i < count; i++) {
  		if (i != 0) print "      dump_sep(f);";
  		if (vtype[i] ~ /str/ || vtype[i] ~ /date/) {
! 			printf "      dump_str(f, endtrim(t_%s));\n", vname[i];
  		} else {
  			printf "      dump_%s(f, t_%s);\n", vtype[i], vname[i];
  		}
Index: dump_db.h
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository//moira/backup/dump_db.h,v
retrieving revision 1.5
diff -c -r1.5 dump_db.h
*** dump_db.h	1998/03/10 21:18:03	1.5
--- dump_db.h	2000/03/09 19:13:12
***************
*** 23,25 ****
--- 23,26 ----
  void dbmserr(void);
  void safe_close(FILE *stream);
  FILE *open_file(char *prefix, char *suffix);
+ char *endtrim(char *save);
Index: dump_db.pc
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository//moira/backup/dump_db.pc,v
retrieving revision 1.8
diff -c -r1.8 dump_db.pc
*** dump_db.pc	1998/03/10 21:18:04	1.8
--- dump_db.pc	2000/03/09 20:33:14
***************
*** 115,117 ****
--- 115,141 ----
    fprintf(stderr, "Working on %s\n", name);
    return f;
  }
+ 
+ /*
+  * Trim whitespace off the tail end of a string
+  */
+ char *endtrim(char *save)
+ {
+   char *t, *s;
+ 
+   s = save;
+   for (t = s; *t; t++)
+     continue;
+   while (t > s)
+     {
+       --t;
+       if (!isspace(*t))
+ 	{
+ 	  t++;
+ 	  break;
+ 	}
+     }
+   if (*t)
+     *t = '\0';
+   return s;
+ }

home help back first fref pref prev next nref lref last post