Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mRemoteNG/PuTTYNG.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'utils/string_length_for_printf.c')
-rw-r--r--utils/string_length_for_printf.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/utils/string_length_for_printf.c b/utils/string_length_for_printf.c
new file mode 100644
index 00000000..8b455316
--- /dev/null
+++ b/utils/string_length_for_printf.c
@@ -0,0 +1,21 @@
+/*
+ * Convert a size_t value to int, by saturating it at INT_MAX. Useful
+ * if you want to use the printf idiom "%.*s", where the '*' precision
+ * specifier expects an int in the variadic argument list, but what
+ * you have is not an int but a size_t. This method of converting to
+ * int will at least do something _safe_ with overlong values, even if
+ * (due to the limitation of printf itself) the whole string still
+ * won't be printed.
+ */
+
+#include <limits.h>
+
+#include "defs.h"
+#include "misc.h"
+
+int string_length_for_printf(size_t s)
+{
+ if (s > INT_MAX)
+ return INT_MAX;
+ return s;
+}