printers CHANGE optimize printing to file descriptor without vdprintf()

Instead of repeated opening and closing duplicated FD (converted to a
FILE stream), convert it to a FILE stream just for the first time and
then change the printing method to FILE stream printing.
diff --git a/src/printer_internal.h b/src/printer_internal.h
index 4d61285..a05b612 100644
--- a/src/printer_internal.h
+++ b/src/printer_internal.h
@@ -20,6 +20,7 @@
 typedef enum LYOUT_TYPE {
     LYOUT_FD,          /**< file descriptor */
     LYOUT_STREAM,      /**< FILE stream */
+    LYOUT_FDSTREAM,    /**< FILE stream based on duplicated file descriptor */
     LYOUT_MEMORY,      /**< memory */
     LYOUT_CALLBACK     /**< print via provided callback */
 } LYOUT_TYPE;