@@ -135,6 +135,14 @@ static void ui_message(Tcl_Interp *interp, const char *severity, const char *for
135135 free (tclcmd );
136136}
137137
138+ __attribute__((format (printf , 3 , 0 )))
139+ static void ui_debug_x (Tcl_Interp * interp , unsigned int level , const char * format , va_list va ) {
140+ char cLevel [20 ]; // longer than necessary, but also safer
141+
142+ sprintf (cLevel , "debug%u" , level );
143+ ui_message (interp , cLevel , format , va );
144+ }
145+
138146__attribute__((format (printf , 2 , 3 )))
139147void ui_error (Tcl_Interp * interp , const char * format , ...) {
140148 va_list va ;
@@ -187,6 +195,33 @@ void ui_debug(Tcl_Interp *interp, const char *format, ...) {
187195 va_end (va );
188196}
189197
198+ __attribute__((format (printf , 2 , 3 )))
199+ void ui_debug1 (Tcl_Interp * interp , const char * format , ...) {
200+ va_list va ;
201+
202+ va_start (va , format );
203+ ui_debug_x (interp , 1 /*debug level*/ , format , va );
204+ va_end (va );
205+ }
206+
207+ __attribute__((format (printf , 2 , 3 )))
208+ void ui_debug2 (Tcl_Interp * interp , const char * format , ...) {
209+ va_list va ;
210+
211+ va_start (va , format );
212+ ui_debug_x (interp , 2 /*debug level*/ , format , va );
213+ va_end (va );
214+ }
215+
216+ __attribute__((format (printf , 2 , 3 )))
217+ void ui_debug3 (Tcl_Interp * interp , const char * format , ...) {
218+ va_list va ;
219+
220+ va_start (va , format );
221+ ui_debug_x (interp , 3 /*debug level*/ , format , va );
222+ va_end (va );
223+ }
224+
190225int StrsedCmd (ClientData clientData UNUSED , Tcl_Interp * interp , int objc , Tcl_Obj * CONST objv [])
191226{
192227 char * pattern , * string , * res ;
0 commit comments