Просмотр исходного кода

libdpkg: Add new trigdef_update_printf to avoid exposing trig_new_deferred

Make trig_new_deferred static and create a printer function for it.
Guillem Jover лет назад: 16
Родитель
Сommit
0f96ab4c34
3 измененных файлов с 16 добавлено и 9 удалено
  1. 1 2
      lib/dpkg/dpkg-db.h
  2. 11 2
      lib/dpkg/trigdeferred.l
  3. 4 5
      src/trigcmd.c

+ 1 - 2
lib/dpkg/dpkg-db.h

@@ -232,7 +232,6 @@ struct trigdefmeths {
 };
 
 void trigdef_set_methods(const struct trigdefmeths *methods);
-extern FILE *trig_new_deferred;
 
 /* Return values:
  *  -1  Lock ENOENT with O_CREAT (directory does not exist)
@@ -242,7 +241,7 @@ extern FILE *trig_new_deferred;
  *   2  ok                                        }  trigdef_update_done!
  */
 int trigdef_update_start(enum trigdef_updateflags uf, const char *admindir);
-
+void trigdef_update_printf(const char *format, ...) DPKG_ATTR_PRINTF(1);
 int trigdef_yylex(void);
 void trigdef_process_done(void);
 

+ 11 - 2
lib/dpkg/trigdeferred.l

@@ -88,8 +88,7 @@ static const struct trigdefmeths *trigdef;
 
 static int lock_fd = -1;
 static FILE *old_deferred;
-
-FILE *trig_new_deferred;
+static FILE *trig_new_deferred;
 
 static void
 constructfn(struct varbuf *vb, const char *admindir, const char *tail)
@@ -178,6 +177,16 @@ trigdef_set_methods(const struct trigdefmeths *methods)
 	trigdef = methods;
 }
 
+void
+trigdef_update_printf(const char *format, ...)
+{
+	va_list ap;
+
+	va_start(ap, format);
+	vfprintf(trig_new_deferred, format, ap);
+	va_end(ap);
+}
+
 void
 trigdef_process_done(void)
 {

+ 4 - 5
src/trigcmd.c

@@ -107,14 +107,14 @@ noawait(const struct cmdinfo *ci, const char *value)
 static void
 yespackage(const char *awname)
 {
-	fprintf(trig_new_deferred, " %s", awname);
+	trigdef_update_printf(" %s", awname);
 }
 
 static void
 tdm_add_trig_begin(const char *trig)
 {
 	ctrig = !strcmp(trig, activate);
-	fputs(trig, trig_new_deferred);
+	trigdef_update_printf("%s", trig);
 	if (!ctrig || done_trig)
 		return;
 	yespackage(bypackage);
@@ -132,7 +132,7 @@ tdm_add_package(const char *awname)
 static void
 tdm_add_trig_end(void)
 {
-	fputc('\n', trig_new_deferred);
+	trigdef_update_printf("\n");
 }
 
 static const struct trigdefmeths tdm_add = {
@@ -227,8 +227,7 @@ main(int argc, const char *const *argv)
 	if (uf >= 0) {
 		trigdef_yylex();
 		if (!done_trig)
-			fprintf(trig_new_deferred, "%s %s\n",
-			        activate, bypackage);
+			trigdef_update_printf("%s %s\n", activate, bypackage);
 		trigdef_process_done();
 	}