From 76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Mon, 4 Nov 2013 17:08:47 +0000 Subject: Slackware 14.1 Mon Nov 4 17:08:47 UTC 2013 Slackware 14.1 x86_64 stable is released! It's been another interesting release cycle here at Slackware bringing new features like support for UEFI machines, updated compilers and development tools, the switch from MySQL to MariaDB, and many more improvements throughout the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-) --- source/ap/acct/581421-sa-hz-division.patch | 66 + source/ap/acct/acct.SlackBuild | 6 +- source/ap/alsa-utils/alsa-utils.SlackBuild | 6 +- source/ap/alsa-utils/doinst.sh | 21 + source/ap/alsa-utils/rc.alsa | 30 +- source/ap/alsa-utils/rc.alsa-oss | 24 + source/ap/aumix/aumix.SlackBuild | 83 - source/ap/aumix/slack-desc | 19 - source/ap/dc3dd/slack-desc | 2 +- source/ap/diffutils/diffutils.SlackBuild | 13 +- source/ap/diffutils/diffutils.mkdir_p.diff | 11 + source/ap/dmapi/dmapi.SlackBuild | 8 +- source/ap/dmapi/dmapi.destdir.diff | 36 - source/ap/ghostscript/cidfmap | 12 +- source/ap/ghostscript/ghostscript.SlackBuild | 37 +- source/ap/ghostscript/ghostscript.gs_sprintf.diff | 28431 +++++++++++++++++++ source/ap/ghostscript/slack-desc | 4 +- source/ap/hplip/hplip.56-hpmud.background.diff | 11 + source/ap/hplip/hplip.SlackBuild | 8 +- source/ap/hplip/hplip.no.upgrade.diff | 16 + source/ap/itstool/itstool.SlackBuild | 110 + source/ap/itstool/slack-desc | 19 + source/ap/jed/jed.SlackBuild | 4 +- source/ap/ksh93/EPL-1.0 | 213 + source/ap/ksh93/ksh93.SlackBuild | 23 +- .../ap/ksh93/patches/ksh-20070328-builtins.patch | 32 + source/ap/ksh93/patches/ksh-20100826-fixregr.patch | 68 + source/ap/ksh93/patches/ksh-20120801-cdfix.patch | 14 + source/ap/ksh93/patches/ksh-20120801-cdfix2.patch | 25 + source/ap/ksh93/patches/ksh-20120801-tabfix.patch | 18 + source/ap/ksh93/patches/ksh-20130214-fixkill.patch | 21 + source/ap/ksh93/patches/rmdirfix.patch | 505 + source/ap/linuxdoc-tools/ChangeLog.txt | 28 + source/ap/linuxdoc-tools/arm/build | 4 +- source/ap/linuxdoc-tools/linuxdoc-tools.build | 156 +- source/ap/linuxdoc-tools/postbuildfixes.sh | 3 + .../linuxdoc-tools/sources/docbook2x_0.8.8-8.diff | 886 + source/ap/linuxdoc-tools/sources/source.download | 32 +- source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools | 5 +- source/ap/lm_sensors/lm_sensors.SlackBuild | 4 +- source/ap/lsscsi/lsscsi.SlackBuild | 2 +- source/ap/lxc/lxc.SlackBuild | 8 +- source/ap/madplay/madplay.SlackBuild | 2 +- source/ap/man-pages/man-pages-3.53.tar.sign | Bin 0 -> 543 bytes source/ap/man-pages/man-pages.SlackBuild | 4 +- source/ap/mariadb/doinst.sh | 28 + source/ap/mariadb/mariadb.SlackBuild | 189 + source/ap/mariadb/mirror.url | 1 + source/ap/mariadb/rc.mysqld | 89 + source/ap/mariadb/slack-desc | 19 + ...t_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff | 87 + ...t_54a5139eec69438f8771ffddcff96a2e72a197ff.diff | 66 + source/ap/mc/mc.SlackBuild | 11 +- source/ap/mc/mc.image.sh.geeqie.diff | 18 +- source/ap/mc/mc.save.file.diff | 37 - source/ap/moc/moc.SlackBuild | 4 +- source/ap/mysql/README.mysql-embedded | 7 - source/ap/mysql/doinst.sh | 23 - source/ap/mysql/mirror-url | 1 - source/ap/mysql/mysql-embedded.SlackBuild | 221 - source/ap/mysql/mysql.SlackBuild | 221 - source/ap/mysql/rc.mysqld | 86 - source/ap/mysql/slack-desc | 19 - source/ap/nano/nano.SlackBuild | 2 +- source/ap/normalize/normalize.SlackBuild | 2 +- source/ap/pm-utils/49bluetooth-generic | 8 +- source/ap/pm-utils/README.SLACKWARE | 33 +- .../fix-wrong-path-in-intel-audio-powersave.patch | 32 - .../patches/add-in-kernel-suspend-to-both.patch | 32 + .../fix-wrong-path-in-intel-audio-powersave.patch | 32 + .../ap/pm-utils/patches/hook-exit-code-log.patch | 19 + .../ap/pm-utils/patches/init-logfile-append.patch | 13 + .../ap/pm-utils/patches/log-line-spacing-fix.patch | 14 + .../patches/use_more_sane_harddrive_defaults.patch | 12 + source/ap/pm-utils/pm-utils.SlackBuild | 53 +- .../use_more_sane_harddrive_defaults.patch | 12 - source/ap/powertop/powertop.SlackBuild | 2 +- source/ap/powertop/slack-desc | 2 +- source/ap/rexima/rexima.SlackBuild | 77 - source/ap/rexima/slack-desc | 19 - source/ap/screen/screen.SlackBuild | 7 +- source/ap/screen/screen.crypt.diff | 126 + source/ap/sqlite/sqlite.SlackBuild | 6 +- source/ap/terminus-font/doinst.sh | 10 + source/ap/terminus-font/slack-desc | 19 + .../terminus-font.Makefile.paths.diff | 15 + source/ap/terminus-font/terminus-font.SlackBuild | 86 + source/ap/tmux/slack-desc | 19 + source/ap/tmux/tmux.SlackBuild | 149 + source/ap/vim/patches/7.3.001 | 55 - source/ap/vim/patches/7.3.002 | 55 - source/ap/vim/patches/7.3.003 | 45 - source/ap/vim/patches/7.3.004 | 44 - source/ap/vim/patches/7.3.005 | 96 - source/ap/vim/patches/7.3.006 | 117 - source/ap/vim/patches/7.3.007 | 187 - source/ap/vim/patches/7.3.008 | 439 - source/ap/vim/patches/7.3.009 | 99 - source/ap/vim/patches/7.3.010 | 167 - source/ap/vim/patches/7.3.011 | 290 - source/ap/vim/patches/7.3.012 | 71 - source/ap/vim/patches/7.3.013 | 208 - source/ap/vim/patches/7.3.014 | 87 - source/ap/vim/patches/7.3.015 | 68 - source/ap/vim/patches/7.3.016 | 240 - source/ap/vim/patches/7.3.017 | 124 - source/ap/vim/patches/7.3.018 | 74 - source/ap/vim/patches/7.3.019 | 55 - source/ap/vim/patches/7.3.020 | 131 - source/ap/vim/patches/7.3.021 | 70 - source/ap/vim/patches/7.3.022 | 54 - source/ap/vim/patches/7.3.023 | 69 - source/ap/vim/patches/7.3.024 | 115 - source/ap/vim/patches/7.3.025 | 136 - source/ap/vim/patches/7.3.026 | 61 - source/ap/vim/patches/7.3.027 | 88 - source/ap/vim/patches/7.3.028 | 179 - source/ap/vim/patches/7.3.029 | 177 - source/ap/vim/patches/7.3.030 | 366 - source/ap/vim/patches/7.3.031 | 121 - source/ap/vim/patches/7.3.032 | 704 - source/ap/vim/patches/7.3.033 | 49 - source/ap/vim/patches/7.3.034 | 431 - source/ap/vim/patches/7.3.035 | 58 - source/ap/vim/patches/7.3.036 | 68 - source/ap/vim/patches/7.3.037 | 137 - source/ap/vim/patches/7.3.038 | 76 - source/ap/vim/patches/7.3.039 | 90 - source/ap/vim/patches/7.3.040 | 48 - source/ap/vim/patches/7.3.041 | 57 - source/ap/vim/patches/7.3.042 | 65 - source/ap/vim/patches/7.3.043 | 460 - source/ap/vim/patches/7.3.044 | 58 - source/ap/vim/patches/7.3.045 | 57 - source/ap/vim/patches/7.3.046 | 76 - source/ap/vim/patches/7.3.047 | 172 - source/ap/vim/patches/7.3.048 | 109 - source/ap/vim/patches/7.3.049 | 495 - source/ap/vim/patches/7.3.050 | 199 - source/ap/vim/patches/7.3.051 | 111 - source/ap/vim/patches/7.3.052 | 345 - source/ap/vim/patches/7.3.053 | 89 - source/ap/vim/patches/7.3.054 | 112 - source/ap/vim/patches/7.3.055 | 359 - source/ap/vim/patches/7.3.056 | 542 - source/ap/vim/patches/7.3.057 | 62 - source/ap/vim/patches/7.3.058 | 158 - source/ap/vim/patches/7.3.059 | 116 - source/ap/vim/patches/7.3.060 | 227 - source/ap/vim/patches/7.3.061 | 89 - source/ap/vim/patches/7.3.062 | 609 - source/ap/vim/patches/7.3.063 | 59 - source/ap/vim/patches/7.3.064 | 72 - source/ap/vim/patches/7.3.065 | 120 - source/ap/vim/patches/7.3.066 | 90 - source/ap/vim/patches/7.3.067 | 68 - source/ap/vim/patches/7.3.068 | 50 - source/ap/vim/patches/7.3.069 | 49 - source/ap/vim/patches/7.3.070 | 53 - source/ap/vim/patches/7.3.071 | 65 - source/ap/vim/patches/7.3.072 | 295 - source/ap/vim/patches/7.3.073 | 92 - source/ap/vim/patches/7.3.074 | 235 - source/ap/vim/patches/7.3.075 | 132 - source/ap/vim/patches/7.3.076 | 203 - source/ap/vim/patches/7.3.077 | 134 - source/ap/vim/patches/7.3.078 | 58 - source/ap/vim/patches/7.3.079 | 50 - source/ap/vim/patches/7.3.080 | 205 - source/ap/vim/patches/7.3.081 | 84 - source/ap/vim/patches/7.3.082 | 51 - source/ap/vim/patches/7.3.083 | 362 - source/ap/vim/patches/7.3.084 | 123 - source/ap/vim/patches/7.3.085 | 313 - source/ap/vim/patches/7.3.086 | 138 - source/ap/vim/patches/7.3.087 | 152 - source/ap/vim/patches/7.3.088 | 152 - source/ap/vim/patches/7.3.089 | 52 - source/ap/vim/patches/7.3.090 | 68 - source/ap/vim/patches/7.3.091 | 321 - source/ap/vim/patches/7.3.092 | 62 - source/ap/vim/patches/7.3.093 | 201 - source/ap/vim/patches/7.3.094 | 70 - source/ap/vim/patches/7.3.095 | 70 - source/ap/vim/patches/7.3.096 | 97 - source/ap/vim/patches/7.3.097 | 54 - source/ap/vim/patches/7.3.098 | 61 - source/ap/vim/patches/7.3.099 | 54 - source/ap/vim/patches/7.3.100 | 52 - source/ap/vim/patches/7.3.101 | 92 - source/ap/vim/patches/7.3.102 | 615 - source/ap/vim/patches/7.3.103 | 145 - source/ap/vim/patches/7.3.104 | 50 - source/ap/vim/patches/7.3.105 | 50 - source/ap/vim/patches/7.3.106 | 58 - source/ap/vim/patches/7.3.107 | 58 - source/ap/vim/patches/7.3.108 | 111 - source/ap/vim/patches/7.3.109 | 266 - source/ap/vim/patches/7.3.110 | 76 - source/ap/vim/patches/7.3.111 | 121 - source/ap/vim/patches/7.3.112 | 63 - source/ap/vim/patches/7.3.113 | 55 - source/ap/vim/patches/7.3.114 | 50 - source/ap/vim/patches/7.3.115 | 58 - source/ap/vim/patches/7.3.116 | 58 - source/ap/vim/patches/7.3.117 | 89 - source/ap/vim/patches/7.3.118 | 69 - source/ap/vim/patches/7.3.119 | 52 - source/ap/vim/patches/7.3.120 | 59 - source/ap/vim/patches/7.3.121 | 57 - source/ap/vim/patches/7.3.122 | 100 - source/ap/vim/patches/7.3.123 | 55 - source/ap/vim/patches/7.3.124 | 229 - source/ap/vim/patches/7.3.125 | 66 - source/ap/vim/patches/7.3.126 | 63 - source/ap/vim/patches/7.3.127 | 55 - source/ap/vim/patches/7.3.128 | 58 - source/ap/vim/patches/7.3.129 | 241 - source/ap/vim/patches/7.3.130 | 74 - source/ap/vim/patches/7.3.131 | 47 - source/ap/vim/patches/7.3.132 | 82 - source/ap/vim/patches/7.3.133 | 122 - source/ap/vim/patches/7.3.134 | 51 - source/ap/vim/patches/7.3.135 | 90 - source/ap/vim/patches/7.3.136 | 51 - source/ap/vim/patches/7.3.137 | 81 - source/ap/vim/patches/7.3.138 | 69 - source/ap/vim/patches/7.3.139 | 111 - source/ap/vim/patches/7.3.140 | 58 - source/ap/vim/patches/7.3.141 | 94 - source/ap/vim/patches/7.3.142 | 85 - source/ap/vim/patches/7.3.143 | 1520 - source/ap/vim/patches/7.3.144 | 80 - source/ap/vim/patches/7.3.145 | 64 - source/ap/vim/patches/7.3.146 | 224 - source/ap/vim/patches/7.3.147 | 53 - source/ap/vim/patches/7.3.148 | 252 - source/ap/vim/patches/7.3.149 | 78 - source/ap/vim/patches/7.3.150 | 113 - source/ap/vim/patches/7.3.151 | 59 - source/ap/vim/patches/7.3.152 | 643 - source/ap/vim/patches/7.3.153 | 66 - source/ap/vim/patches/7.3.154 | 106 - source/ap/vim/patches/7.3.155 | 286 - source/ap/vim/patches/7.3.156 | 89 - source/ap/vim/patches/7.3.157 | 52 - source/ap/vim/patches/7.3.158 | 48 - source/ap/vim/patches/7.3.159 | 54 - source/ap/vim/patches/7.3.160 | 482 - source/ap/vim/patches/7.3.161 | 1645 -- source/ap/vim/patches/7.3.162 | 83 - source/ap/vim/patches/7.3.163 | 59 - source/ap/vim/patches/7.3.164 | 181 - source/ap/vim/patches/7.3.165 | 47 - source/ap/vim/patches/7.3.166 | 70 - source/ap/vim/patches/7.3.167 | 96 - source/ap/vim/patches/7.3.168 | 82 - source/ap/vim/patches/7.3.169 | 130 - source/ap/vim/patches/7.3.170 | 70 - source/ap/vim/patches/7.3.171 | 142 - source/ap/vim/patches/7.3.172 | 268 - source/ap/vim/patches/7.3.173 | 79 - source/ap/vim/patches/7.3.174 | 109 - source/ap/vim/patches/7.3.175 | 50 - source/ap/vim/patches/7.3.176 | 165 - source/ap/vim/patches/7.3.177 | 97 - source/ap/vim/patches/7.3.178 | 163 - source/ap/vim/patches/7.3.179 | 95 - source/ap/vim/patches/7.3.180 | 295 - source/ap/vim/patches/7.3.181 | 171 - source/ap/vim/patches/7.3.182 | 53 - source/ap/vim/patches/7.3.183 | 87 - source/ap/vim/patches/7.3.184 | 86 - source/ap/vim/patches/7.3.185 | 77 - source/ap/vim/patches/7.3.186 | 59 - source/ap/vim/patches/7.3.187 | 6621 ----- source/ap/vim/patches/7.3.188 | 184 - source/ap/vim/patches/7.3.189 | 49 - source/ap/vim/patches/7.3.190 | 48 - source/ap/vim/patches/7.3.191 | 526 - source/ap/vim/patches/7.3.192 | 61 - source/ap/vim/patches/7.3.193 | 70 - source/ap/vim/patches/7.3.194 | 48 - source/ap/vim/patches/7.3.195 | 199 - source/ap/vim/patches/7.3.196 | 224 - source/ap/vim/patches/7.3.197 | 78 - source/ap/vim/patches/7.3.198 | 403 - source/ap/vim/patches/7.3.199 | 57 - source/ap/vim/patches/7.3.200 | 75 - source/ap/vim/patches/7.3.201 | 124 - source/ap/vim/patches/7.3.202 | 868 - source/ap/vim/patches/7.3.203 | 102 - source/ap/vim/patches/7.3.204 | 51 - source/ap/vim/patches/7.3.205 | 93 - source/ap/vim/patches/7.3.206 | 54 - source/ap/vim/patches/7.3.207 | 54 - source/ap/vim/patches/7.3.208 | 51 - source/ap/vim/patches/7.3.209 | 95 - source/ap/vim/patches/7.3.210 | 182 - source/ap/vim/patches/7.3.211 | 51 - source/ap/vim/patches/7.3.212 | 243 - source/ap/vim/patches/7.3.213 | 142 - source/ap/vim/patches/7.3.214 | 55 - source/ap/vim/patches/7.3.215 | 63 - source/ap/vim/patches/7.3.216 | 263 - source/ap/vim/patches/7.3.217 | 63 - source/ap/vim/patches/7.3.218 | 91 - source/ap/vim/patches/7.3.219 | 92 - source/ap/vim/patches/7.3.220 | 1230 - source/ap/vim/patches/7.3.221 | 287 - source/ap/vim/patches/7.3.222 | 71 - source/ap/vim/patches/7.3.223 | 387 - source/ap/vim/patches/7.3.224 | 162 - source/ap/vim/patches/7.3.225 | Bin 18841 -> 0 bytes source/ap/vim/patches/7.3.226 | 58 - source/ap/vim/patches/7.3.227 | 109 - source/ap/vim/patches/7.3.228 | 45 - source/ap/vim/patches/7.3.229 | 55 - source/ap/vim/patches/7.3.230 | 70 - source/ap/vim/patches/7.3.231 | 128 - source/ap/vim/patches/7.3.232 | 84 - source/ap/vim/patches/7.3.233 | 81 - source/ap/vim/patches/7.3.234 | 178 - source/ap/vim/patches/7.3.235 | 360 - source/ap/vim/patches/7.3.236 | 87 - source/ap/vim/patches/7.3.237 | 222 - source/ap/vim/patches/7.3.238 | 53 - source/ap/vim/patches/7.3.239 | 321 - source/ap/vim/patches/7.3.240 | 795 - source/ap/vim/patches/7.3.241 | 71 - source/ap/vim/patches/7.3.242 | 71 - source/ap/vim/patches/7.3.243 | 52 - source/ap/vim/patches/7.3.244 | 48 - source/ap/vim/patches/7.3.245 | 81 - source/ap/vim/patches/7.3.246 | 55 - source/ap/vim/patches/7.3.247 | 95 - source/ap/vim/patches/7.3.248 | 129 - source/ap/vim/patches/7.3.249 | 134 - source/ap/vim/patches/7.3.250 | 104 - source/ap/vim/patches/7.3.251 | 184 - source/ap/vim/patches/7.3.252 | 43 - source/ap/vim/patches/7.3.253 | 539 - source/ap/vim/patches/7.3.254 | 47 - source/ap/vim/patches/7.3.255 | 81 - source/ap/vim/patches/7.3.256 | 322 - source/ap/vim/patches/7.3.257 | 97 - source/ap/vim/patches/7.3.258 | 70 - source/ap/vim/patches/7.3.259 | 503 - source/ap/vim/patches/7.3.260 | 69 - source/ap/vim/patches/7.3.261 | 53 - source/ap/vim/patches/7.3.262 | 1356 - source/ap/vim/patches/7.3.263 | 162 - source/ap/vim/patches/7.3.264 | 159 - source/ap/vim/patches/7.3.265 | 145 - source/ap/vim/patches/7.3.266 | 54 - source/ap/vim/patches/7.3.267 | 67 - source/ap/vim/patches/7.3.268 | 69 - source/ap/vim/patches/7.3.269 | 112 - source/ap/vim/patches/7.3.270 | 52 - source/ap/vim/patches/7.3.271 | 504 - source/ap/vim/patches/7.3.272 | 51 - source/ap/vim/patches/7.3.273 | 124 - source/ap/vim/patches/7.3.274 | 55 - source/ap/vim/patches/7.3.275 | 77 - source/ap/vim/patches/7.3.276 | 130 - source/ap/vim/patches/7.3.277 | 348 - source/ap/vim/patches/7.3.278 | 73 - source/ap/vim/patches/7.3.279 | 118 - source/ap/vim/patches/7.3.280 | 181 - source/ap/vim/patches/7.3.281 | 134 - source/ap/vim/patches/7.3.282 | 60 - source/ap/vim/patches/7.3.283 | 114 - source/ap/vim/patches/7.3.284 | 211 - source/ap/vim/patches/7.3.285 | 144 - source/ap/vim/patches/7.3.286 | 84 - source/ap/vim/patches/7.3.287 | 100 - source/ap/vim/patches/7.3.288 | 76 - source/ap/vim/patches/7.3.289 | 56 - source/ap/vim/patches/7.3.290 | 75 - source/ap/vim/patches/7.3.291 | 125 - source/ap/vim/patches/7.3.292 | 55 - source/ap/vim/patches/7.3.293 | 74 - source/ap/vim/patches/7.3.294 | 58 - source/ap/vim/patches/7.3.295 | 109 - source/ap/vim/patches/7.3.296 | 222 - source/ap/vim/patches/7.3.297 | 130 - source/ap/vim/patches/7.3.298 | 167 - source/ap/vim/patches/7.3.299 | 516 - source/ap/vim/patches/7.3.300 | 74 - source/ap/vim/patches/7.3.301 | 97 - source/ap/vim/patches/7.3.302 | 68 - source/ap/vim/patches/7.3.303 | 55 - source/ap/vim/patches/7.3.304 | 103 - source/ap/vim/patches/7.3.305 | 58 - source/ap/vim/patches/7.3.306 | 244 - source/ap/vim/patches/7.3.307 | 180 - source/ap/vim/patches/7.3.308 | 260 - source/ap/vim/patches/7.3.309 | 105 - source/ap/vim/patches/7.3.310 | 3524 --- source/ap/vim/patches/7.3.311 | 351 - source/ap/vim/patches/7.3.312 | 58 - source/ap/vim/patches/7.3.313 | 53 - source/ap/vim/patches/7.3.314 | 54 - source/ap/vim/patches/7.3.315 | 475 - source/ap/vim/patches/7.3.316 | 48 - source/ap/vim/patches/7.3.317 | 116 - source/ap/vim/patches/7.3.318 | 90 - source/ap/vim/patches/7.3.319 | 154 - source/ap/vim/patches/7.3.320 | 130 - source/ap/vim/patches/7.3.321 | 304 - source/ap/vim/patches/7.3.322 | 52 - source/ap/vim/patches/7.3.323 | 52 - source/ap/vim/patches/7.3.324 | 53 - source/ap/vim/patches/7.3.325 | 64 - source/ap/vim/patches/7.3.326 | 285 - source/ap/vim/patches/7.3.327 | 64 - source/ap/vim/patches/7.3.328 | 45 - source/ap/vim/patches/7.3.329 | 72 - source/ap/vim/patches/7.3.330 | 45 - source/ap/vim/patches/7.3.331 | 53 - source/ap/vim/patches/7.3.332 | 206 - source/ap/vim/patches/7.3.333 | 245 - source/ap/vim/patches/7.3.334 | 58 - source/ap/vim/patches/7.3.335 | 48 - source/ap/vim/patches/7.3.336 | 1100 - source/ap/vim/patches/7.3.337 | 58 - source/ap/vim/patches/7.3.338 | 100 - source/ap/vim/patches/7.3.339 | 57 - source/ap/vim/patches/7.3.340 | 62 - source/ap/vim/patches/7.3.341 | 360 - source/ap/vim/patches/7.3.342 | 93 - source/ap/vim/patches/7.3.343 | 252 - source/ap/vim/patches/7.3.344 | 121 - source/ap/vim/patches/7.3.345 | 48 - source/ap/vim/patches/7.3.346 | 143 - source/ap/vim/patches/7.3.347 | 54 - source/ap/vim/patches/7.3.348 | 57 - source/ap/vim/patches/7.3.349 | 88 - source/ap/vim/patches/7.3.350 | 46 - source/ap/vim/patches/7.3.351 | 46 - source/ap/vim/patches/7.3.352 | 108 - source/ap/vim/patches/7.3.353 | 155 - source/ap/vim/patches/7.3.354 | 71 - source/ap/vim/patches/7.3.355 | 56 - source/ap/vim/patches/7.3.356 | 79 - source/ap/vim/patches/7.3.357 | 52 - source/ap/vim/patches/7.3.358 | 74 - source/ap/vim/patches/7.3.359 | 64 - source/ap/vim/patches/7.3.360 | 61 - source/ap/vim/patches/7.3.361 | 55 - source/ap/vim/patches/7.3.362 | 59 - source/ap/vim/patches/7.3.363 | 110 - source/ap/vim/patches/7.3.364 | 57 - source/ap/vim/patches/7.3.365 | 131 - source/ap/vim/patches/7.3.366 | 76 - source/ap/vim/patches/7.3.367 | 53 - source/ap/vim/patches/7.3.368 | 103 - source/ap/vim/patches/7.3.369 | 48 - source/ap/vim/patches/7.3.370 | 63 - source/ap/vim/patches/7.3.371 | 75 - source/ap/vim/patches/7.3.372 | 52 - source/ap/vim/patches/7.3.373 | 78 - source/ap/vim/patches/7.3.374 | 59 - source/ap/vim/patches/7.3.375 | 64 - source/ap/vim/patches/7.3.376 | 57 - source/ap/vim/patches/7.3.377 | 406 - source/ap/vim/patches/7.3.378 | 71 - source/ap/vim/patches/7.3.379 | 112 - source/ap/vim/patches/7.3.380 | 318 - source/ap/vim/patches/7.3.381 | 260 - source/ap/vim/patches/7.3.382 | 173 - source/ap/vim/patches/7.3.383 | 51 - source/ap/vim/patches/7.3.384 | 53 - source/ap/vim/patches/7.3.385 | 69 - source/ap/vim/patches/7.3.386 | 55 - source/ap/vim/patches/7.3.387 | 61 - source/ap/vim/patches/7.3.388 | 45 - source/ap/vim/patches/7.3.389 | 61 - source/ap/vim/patches/7.3.390 | 155 - source/ap/vim/patches/7.3.391 | 51 - source/ap/vim/patches/7.3.392 | 115 - source/ap/vim/patches/7.3.393 | 130 - source/ap/vim/patches/7.3.394 | 62 - source/ap/vim/patches/7.3.395 | 115 - source/ap/vim/patches/7.3.396 | 49 - source/ap/vim/patches/7.3.397 | 224 - source/ap/vim/patches/7.3.398 | 65 - source/ap/vim/patches/7.3.399 | 137 - source/ap/vim/patches/7.3.400 | 1762 -- source/ap/vim/patches/7.3.401 | 191 - source/ap/vim/patches/7.3.402 | 59 - source/ap/vim/patches/7.3.403 | 108 - source/ap/vim/patches/7.3.404 | 85 - source/ap/vim/patches/7.3.405 | 101 - source/ap/vim/patches/7.3.406 | 103 - source/ap/vim/patches/7.3.407 | 270 - source/ap/vim/patches/7.3.408 | 48 - source/ap/vim/patches/7.3.409 | 48 - source/ap/vim/patches/7.3.410 | 54 - source/ap/vim/patches/7.3.411 | 55 - source/ap/vim/patches/7.3.412 | 51 - source/ap/vim/patches/7.3.413 | 90 - source/ap/vim/patches/7.3.414 | 90 - source/ap/vim/patches/7.3.415 | 54 - source/ap/vim/patches/7.3.416 | 54 - source/ap/vim/patches/7.3.417 | 47 - source/ap/vim/patches/7.3.418 | 53 - source/ap/vim/patches/7.3.419 | 85 - source/ap/vim/patches/7.3.420 | 70 - source/ap/vim/patches/7.3.421 | 60 - source/ap/vim/patches/7.3.422 | 94 - source/ap/vim/patches/7.3.423 | 130 - source/ap/vim/patches/7.3.424 | 62 - source/ap/vim/patches/7.3.425 | 78 - source/ap/vim/patches/7.3.426 | 279 - source/ap/vim/patches/7.3.427 | 378 - source/ap/vim/patches/7.3.428 | 113 - source/ap/vim/patches/7.3.429 | 192 - source/ap/vim/patches/7.3.430 | 80 - source/ap/vim/patches/7.3.431 | 280 - source/ap/vim/patches/7.3.432 | 228 - source/ap/vim/patches/7.3.433 | 92 - source/ap/vim/patches/7.3.434 | 233 - source/ap/vim/patches/7.3.435 | 63 - source/ap/vim/patches/7.3.436 | 111 - source/ap/vim/patches/7.3.437 | 73 - source/ap/vim/patches/7.3.438 | 126 - source/ap/vim/patches/7.3.439 | 87 - source/ap/vim/patches/7.3.440 | 211 - source/ap/vim/patches/7.3.441 | 341 - source/ap/vim/patches/7.3.442 | 186 - source/ap/vim/patches/7.3.443 | 206 - source/ap/vim/patches/7.3.444 | 96 - source/ap/vim/patches/7.3.445 | 199 - source/ap/vim/patches/7.3.446 | 164 - source/ap/vim/patches/7.3.447 | 377 - source/ap/vim/patches/7.3.448 | 180 - source/ap/vim/patches/7.3.449 | 455 - source/ap/vim/patches/7.3.450 | 81 - source/ap/vim/patches/7.3.451 | 363 - source/ap/vim/patches/7.3.452 | 70 - source/ap/vim/patches/7.3.453 | 58 - source/ap/vim/patches/7.3.454 | 84 - source/ap/vim/patches/7.3.455 | 70 - source/ap/vim/patches/7.3.456 | 376 - source/ap/vim/patches/7.3.457 | 81 - source/ap/vim/patches/7.3.458 | 52 - source/ap/vim/patches/7.3.459 | 71 - source/ap/vim/patches/7.3.460 | 89 - source/ap/vim/patches/7.3.461 | 243 - source/ap/vim/patches/7.3.462 | 191 - source/ap/vim/patches/7.3.463 | 63 - source/ap/vim/patches/7.3.464 | 60 - source/ap/vim/patches/7.3.465 | 398 - source/ap/vim/patches/7.3.466 | 49 - source/ap/vim/patches/7.3.467 | 54 - source/ap/vim/patches/7.3.468 | 144 - source/ap/vim/patches/7.3.469 | 53 - source/ap/vim/patches/7.3.470 | 67 - source/ap/vim/patches/7.3.471 | 92 - source/ap/vim/patches/7.3.472 | 88 - source/ap/vim/patches/7.3.473 | 68 - source/ap/vim/patches/7.3.474 | 62 - source/ap/vim/patches/7.3.475 | 98 - source/ap/vim/patches/7.3.476 | 56 - source/ap/vim/patches/7.3.477 | 52 - source/ap/vim/patches/7.3.478 | 46 - source/ap/vim/patches/7.3.479 | 134 - source/ap/vim/patches/7.3.480 | 237 - source/ap/vim/patches/7.3.481 | 65 - source/ap/vim/patches/7.3.482 | 57 - source/ap/vim/patches/7.3.483 | 97 - source/ap/vim/patches/7.3.484 | 62 - source/ap/vim/patches/7.3.485 | 52 - source/ap/vim/patches/7.3.486 | 58 - source/ap/vim/patches/7.3.487 | 572 - source/ap/vim/patches/7.3.488 | 52 - source/ap/vim/patches/7.3.489 | 89 - source/ap/vim/patches/7.3.490 | 2517 -- source/ap/vim/patches/7.3.491 | 235 - source/ap/vim/patches/7.3.492 | 718 - source/ap/vim/patches/7.3.493 | 54 - source/ap/vim/patches/7.3.494 | 186 - source/ap/vim/patches/7.3.495 | 124 - source/ap/vim/patches/7.3.496 | 69 - source/ap/vim/patches/7.3.497 | 50 - source/ap/vim/patches/7.3.498 | 63 - source/ap/vim/patches/7.3.499 | 84 - source/ap/vim/patches/7.3.500 | 46 - source/ap/vim/patches/7.3.501 | 63 - source/ap/vim/patches/7.3.502 | 67 - source/ap/vim/patches/7.3.503 | 51 - source/ap/vim/patches/7.3.504 | 87 - source/ap/vim/patches/7.3.505 | 116 - source/ap/vim/patches/7.3.506 | 100 - source/ap/vim/patches/7.3.507 | 149 - source/ap/vim/patches/7.3.508 | 85 - source/ap/vim/patches/7.3.509 | 304 - source/ap/vim/patches/7.3.510 | 53 - source/ap/vim/patches/7.3.511 | 49 - source/ap/vim/patches/7.3.512 | 70 - source/ap/vim/patches/7.3.513 | 129 - source/ap/vim/patches/7.3.514 | 232 - source/ap/vim/patches/7.3.515 | 68 - source/ap/vim/patches/7.3.516 | 94 - source/ap/vim/patches/7.3.517 | 60 - source/ap/vim/patches/7.3.518 | 57 - source/ap/vim/patches/7.3.519 | 64 - source/ap/vim/patches/7.3.520 | 140 - source/ap/vim/patches/7.3.521 | 129 - source/ap/vim/patches/7.3.522 | 56 - source/ap/vim/patches/7.3.523 | 103 - source/ap/vim/patches/7.3.524 | 46 - source/ap/vim/patches/7.3.525 | 55 - source/ap/vim/patches/7.3.526 | 59 - source/ap/vim/patches/7.3.527 | 59 - source/ap/vim/patches/7.3.528 | 171 - source/ap/vim/patches/7.3.529 | 81 - source/ap/vim/patches/7.3.530 | 50 - source/ap/vim/patches/7.3.531 | 52 - source/ap/vim/patches/7.3.532 | 53 - source/ap/vim/patches/7.3.533 | 46 - source/ap/vim/patches/7.3.534 | 101 - source/ap/vim/patches/7.3.535 | 356 - source/ap/vim/patches/7.3.536 | 73 - source/ap/vim/patches/7.3.537 | 47 - source/ap/vim/patches/7.3.538 | 321 - source/ap/vim/patches/7.3.539 | 51 - source/ap/vim/patches/7.3.540 | 55 - source/ap/vim/patches/7.3.541 | 1090 - source/ap/vim/patches/7.3.542 | 73 - source/ap/vim/patches/7.3.543 | 55 - source/ap/vim/patches/7.3.544 | 81 - source/ap/vim/patches/7.3.545 | 359 - source/ap/vim/patches/7.3.546 | 54 - source/ap/vim/patches/7.3.547 | 52 - source/ap/vim/patches/7.3.548 | 53 - source/ap/vim/patches/7.3.549 | 125 - source/ap/vim/patches/7.3.550 | 160 - source/ap/vim/patches/7.3.551 | 494 - source/ap/vim/patches/7.3.552 | 582 - source/ap/vim/patches/7.3.553 | 85 - source/ap/vim/patches/7.3.554 | 52 - source/ap/vim/patches/7.3.555 | 232 - source/ap/vim/patches/7.3.556 | 70 - source/ap/vim/patches/7.3.557 | 99 - source/ap/vim/patches/7.3.558 | 90 - source/ap/vim/patches/7.3.559 | 131 - source/ap/vim/patches/7.3.560 | 49 - source/ap/vim/patches/7.3.561 | 52 - source/ap/vim/patches/7.3.562 | 63 - source/ap/vim/patches/7.3.563 | 97 - source/ap/vim/patches/7.3.564 | 53 - source/ap/vim/patches/7.3.565 | 52 - source/ap/vim/patches/7.3.566 | 83 - source/ap/vim/patches/7.3.567 | 56 - source/ap/vim/patches/7.3.568 | 138 - source/ap/vim/patches/7.3.569 | 4762 ---- source/ap/vim/patches/7.3.570 | 145 - source/ap/vim/patches/7.3.571 | 117 - source/ap/vim/patches/7.3.572 | 59 - source/ap/vim/patches/7.3.573 | 52 - source/ap/vim/patches/7.3.574 | 88 - source/ap/vim/patches/7.3.575 | 60 - source/ap/vim/patches/7.3.576 | 255 - source/ap/vim/patches/7.3.577 | 273 - source/ap/vim/patches/7.3.578 | 80 - source/ap/vim/patches/7.3.579 | 232 - source/ap/vim/patches/7.3.580 | 52 - source/ap/vim/patches/7.3.581 | 117 - source/ap/vim/patches/7.3.582 | 61 - source/ap/vim/patches/7.3.583 | 79 - source/ap/vim/patches/7.3.584 | 134 - source/ap/vim/patches/7.3.585 | 56 - source/ap/vim/patches/7.3.586 | 103 - source/ap/vim/patches/7.3.587 | 84 - source/ap/vim/patches/7.3.588 | 85 - source/ap/vim/patches/7.3.589 | 69 - source/ap/vim/patches/7.3.590 | 61 - source/ap/vim/patches/7.3.591 | 208 - source/ap/vim/patches/7.3.592 | 126 - source/ap/vim/patches/7.3.593 | 81 - source/ap/vim/patches/7.3.594 | 171 - source/ap/vim/patches/7.3.595 | 154 - source/ap/vim/patches/7.3.596 | 171 - source/ap/vim/patches/7.3.597 | 720 - source/ap/vim/patches/7.3.598 | 73 - source/ap/vim/patches/7.3.599 | 107 - source/ap/vim/patches/7.3.600 | 68 - source/ap/vim/patches/7.3.601 | 51 - source/ap/vim/patches/7.3.602 | 55 - source/ap/vim/patches/7.3.603 | 370 - source/ap/vim/patches/7.3.604 | 60 - source/ap/vim/patches/7.3.605 | 86 - source/ap/vim/patches/7.3.606 | 76 - source/ap/vim/patches/7.3.607 | 56 - source/ap/vim/patches/7.3.608 | 119 - source/ap/vim/patches/7.3.609 | 251 - source/ap/vim/patches/7.3.610 | 400 - source/ap/vim/patches/7.3.611 | 58 - source/ap/vim/patches/7.3.612 | 83 - source/ap/vim/patches/7.3.613 | 149 - source/ap/vim/patches/7.3.614 | 176 - source/ap/vim/patches/7.3.615 | 107 - source/ap/vim/patches/7.3.616 | 46 - source/ap/vim/patches/7.3.617 | 65 - source/ap/vim/patches/7.3.618 | 367 - source/ap/vim/patches/7.3.619 | 50 - source/ap/vim/patches/7.3.620 | 163 - source/ap/vim/patches/7.3.621 | 72 - source/ap/vim/patches/7.3.622 | 56 - source/ap/vim/patches/7.3.623 | 92 - source/ap/vim/patches/7.3.624 | 52 - source/ap/vim/patches/7.3.625 | 140 - source/ap/vim/patches/7.3.626 | 49 - source/ap/vim/patches/7.3.627 | 102 - source/ap/vim/patches/7.3.628 | 54 - source/ap/vim/patches/7.3.629 | 437 - source/ap/vim/patches/7.3.630 | 48 - source/ap/vim/patches/7.3.631 | 322 - source/ap/vim/patches/7.3.632 | 537 - source/ap/vim/patches/7.3.633 | 81 - source/ap/vim/patches/7.3.634 | 57 - source/ap/vim/patches/7.3.635 | 50 - source/ap/vim/patches/7.3.636 | 148 - source/ap/vim/patches/7.3.637 | 94 - source/ap/vim/patches/7.3.638 | 55 - source/ap/vim/patches/7.3.639 | 846 - source/ap/vim/patches/7.3.640 | Bin 455297 -> 0 bytes source/ap/vim/patches/7.3.641 | 68 - source/ap/vim/patches/7.3.642 | 55 - source/ap/vim/patches/7.3.643 | 73 - source/ap/vim/patches/7.3.644 | 72 - source/ap/vim/patches/7.3.645 | 118 - source/ap/vim/patches/7.4.001 | 489 + source/ap/vim/patches/7.4.002 | 77 + source/ap/vim/patches/7.4.003 | 100 + source/ap/vim/patches/7.4.004 | 232 + source/ap/vim/patches/7.4.005 | 48 + source/ap/vim/patches/7.4.006 | 66 + source/ap/vim/patches/7.4.007 | 95 + source/ap/vim/patches/7.4.008 | 71 + source/ap/vim/patches/7.4.009 | 64 + source/ap/vim/patches/7.4.010 | 79 + source/ap/vim/patches/7.4.011 | 100 + source/ap/vim/patches/7.4.012 | 202 + source/ap/vim/patches/7.4.013 | 99 + source/ap/vim/patches/7.4.014 | 102 + source/ap/vim/patches/7.4.015 | 106 + source/ap/vim/patches/7.4.016 | 221 + source/ap/vim/patches/7.4.017 | 78 + source/ap/vim/patches/7.4.018 | 45 + source/ap/vim/patches/7.4.019 | 61 + source/ap/vim/patches/7.4.020 | 82 + source/ap/vim/patches/7.4.021 | 86 + source/ap/vim/patches/7.4.022 | 148 + source/ap/vim/patches/7.4.023 | 53 + source/ap/vim/patches/7.4.024 | 61 + source/ap/vim/patches/7.4.025 | 62 + source/ap/vim/patches/7.4.026 | 65 + source/ap/vim/patches/7.4.027 | 89 + source/ap/vim/patches/7.4.028 | 753 + source/ap/vim/patches/7.4.029 | 63 + source/ap/vim/patches/7.4.030 | 109 + source/ap/vim/patches/7.4.031 | 54 + source/ap/vim/patches/7.4.032 | 82 + source/ap/vim/patches/7.4.033 | 116 + source/ap/vim/patches/7.4.034 | 180 + source/ap/vim/patches/7.4.035 | 53 + source/ap/vim/patches/7.4.036 | 273 + source/ap/vim/patches/7.4.037 | 130 + source/ap/vim/patches/7.4.038 | 116 + source/ap/vim/patches/7.4.039 | 217 + source/ap/vim/patches/7.4.040 | 68 + source/ap/vim/patches/7.4.041 | 61 + source/ap/vim/patches/7.4.042 | 71 + source/ap/vim/patches/7.4.043 | 89 + source/ap/vim/patches/7.4.044 | 83 + source/ap/vim/patches/7.4.045 | 111 + source/ap/vim/patches/7.4.046 | 80 + source/ap/vim/patches/7.4.047 | 56 + source/ap/vim/patches/7.4.048 | 96 + source/ap/vim/patches/7.4.049 | 67 + source/ap/vim/patches/7.4.050 | 90 + source/ap/vim/vim-gvim.SlackBuild | 17 +- source/ap/vim/vim-runtime-syntax-20110328.diff | 2487 -- source/ap/vim/vim-runtime-syntax-20131002.diff | 0 source/ap/vim/vim.SlackBuild | 17 +- source/ap/xfsdump/xfsdump.SlackBuild | 4 +- source/ap/xfsdump/xfsdump.destdir.diff | 34 - 790 files changed, 37917 insertions(+), 113531 deletions(-) create mode 100644 source/ap/acct/581421-sa-hz-division.patch create mode 100644 source/ap/alsa-utils/rc.alsa-oss delete mode 100755 source/ap/aumix/aumix.SlackBuild delete mode 100644 source/ap/aumix/slack-desc create mode 100644 source/ap/diffutils/diffutils.mkdir_p.diff delete mode 100644 source/ap/dmapi/dmapi.destdir.diff create mode 100644 source/ap/ghostscript/ghostscript.gs_sprintf.diff create mode 100644 source/ap/hplip/hplip.56-hpmud.background.diff create mode 100644 source/ap/hplip/hplip.no.upgrade.diff create mode 100755 source/ap/itstool/itstool.SlackBuild create mode 100644 source/ap/itstool/slack-desc create mode 100644 source/ap/ksh93/EPL-1.0 create mode 100644 source/ap/ksh93/patches/ksh-20070328-builtins.patch create mode 100644 source/ap/ksh93/patches/ksh-20100826-fixregr.patch create mode 100644 source/ap/ksh93/patches/ksh-20120801-cdfix.patch create mode 100644 source/ap/ksh93/patches/ksh-20120801-cdfix2.patch create mode 100644 source/ap/ksh93/patches/ksh-20120801-tabfix.patch create mode 100644 source/ap/ksh93/patches/ksh-20130214-fixkill.patch create mode 100644 source/ap/ksh93/patches/rmdirfix.patch create mode 100644 source/ap/linuxdoc-tools/sources/docbook2x_0.8.8-8.diff create mode 100644 source/ap/man-pages/man-pages-3.53.tar.sign create mode 100644 source/ap/mariadb/doinst.sh create mode 100755 source/ap/mariadb/mariadb.SlackBuild create mode 100644 source/ap/mariadb/mirror.url create mode 100644 source/ap/mariadb/rc.mysqld create mode 100644 source/ap/mariadb/slack-desc create mode 100644 source/ap/mc/changeset_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff create mode 100644 source/ap/mc/changeset_54a5139eec69438f8771ffddcff96a2e72a197ff.diff delete mode 100644 source/ap/mc/mc.save.file.diff delete mode 100644 source/ap/mysql/README.mysql-embedded delete mode 100644 source/ap/mysql/doinst.sh delete mode 100644 source/ap/mysql/mirror-url delete mode 100755 source/ap/mysql/mysql-embedded.SlackBuild delete mode 100755 source/ap/mysql/mysql.SlackBuild delete mode 100644 source/ap/mysql/rc.mysqld delete mode 100644 source/ap/mysql/slack-desc delete mode 100644 source/ap/pm-utils/fix-wrong-path-in-intel-audio-powersave.patch create mode 100644 source/ap/pm-utils/patches/add-in-kernel-suspend-to-both.patch create mode 100644 source/ap/pm-utils/patches/fix-wrong-path-in-intel-audio-powersave.patch create mode 100644 source/ap/pm-utils/patches/hook-exit-code-log.patch create mode 100644 source/ap/pm-utils/patches/init-logfile-append.patch create mode 100644 source/ap/pm-utils/patches/log-line-spacing-fix.patch create mode 100644 source/ap/pm-utils/patches/use_more_sane_harddrive_defaults.patch delete mode 100644 source/ap/pm-utils/use_more_sane_harddrive_defaults.patch delete mode 100755 source/ap/rexima/rexima.SlackBuild delete mode 100644 source/ap/rexima/slack-desc create mode 100644 source/ap/screen/screen.crypt.diff create mode 100644 source/ap/terminus-font/doinst.sh create mode 100644 source/ap/terminus-font/slack-desc create mode 100644 source/ap/terminus-font/terminus-font.Makefile.paths.diff create mode 100755 source/ap/terminus-font/terminus-font.SlackBuild create mode 100644 source/ap/tmux/slack-desc create mode 100755 source/ap/tmux/tmux.SlackBuild delete mode 100644 source/ap/vim/patches/7.3.001 delete mode 100644 source/ap/vim/patches/7.3.002 delete mode 100644 source/ap/vim/patches/7.3.003 delete mode 100644 source/ap/vim/patches/7.3.004 delete mode 100644 source/ap/vim/patches/7.3.005 delete mode 100644 source/ap/vim/patches/7.3.006 delete mode 100644 source/ap/vim/patches/7.3.007 delete mode 100644 source/ap/vim/patches/7.3.008 delete mode 100644 source/ap/vim/patches/7.3.009 delete mode 100644 source/ap/vim/patches/7.3.010 delete mode 100644 source/ap/vim/patches/7.3.011 delete mode 100644 source/ap/vim/patches/7.3.012 delete mode 100644 source/ap/vim/patches/7.3.013 delete mode 100644 source/ap/vim/patches/7.3.014 delete mode 100644 source/ap/vim/patches/7.3.015 delete mode 100644 source/ap/vim/patches/7.3.016 delete mode 100644 source/ap/vim/patches/7.3.017 delete mode 100644 source/ap/vim/patches/7.3.018 delete mode 100644 source/ap/vim/patches/7.3.019 delete mode 100644 source/ap/vim/patches/7.3.020 delete mode 100644 source/ap/vim/patches/7.3.021 delete mode 100644 source/ap/vim/patches/7.3.022 delete mode 100644 source/ap/vim/patches/7.3.023 delete mode 100644 source/ap/vim/patches/7.3.024 delete mode 100644 source/ap/vim/patches/7.3.025 delete mode 100644 source/ap/vim/patches/7.3.026 delete mode 100644 source/ap/vim/patches/7.3.027 delete mode 100644 source/ap/vim/patches/7.3.028 delete mode 100644 source/ap/vim/patches/7.3.029 delete mode 100644 source/ap/vim/patches/7.3.030 delete mode 100644 source/ap/vim/patches/7.3.031 delete mode 100644 source/ap/vim/patches/7.3.032 delete mode 100644 source/ap/vim/patches/7.3.033 delete mode 100644 source/ap/vim/patches/7.3.034 delete mode 100644 source/ap/vim/patches/7.3.035 delete mode 100644 source/ap/vim/patches/7.3.036 delete mode 100644 source/ap/vim/patches/7.3.037 delete mode 100644 source/ap/vim/patches/7.3.038 delete mode 100644 source/ap/vim/patches/7.3.039 delete mode 100644 source/ap/vim/patches/7.3.040 delete mode 100644 source/ap/vim/patches/7.3.041 delete mode 100644 source/ap/vim/patches/7.3.042 delete mode 100644 source/ap/vim/patches/7.3.043 delete mode 100644 source/ap/vim/patches/7.3.044 delete mode 100644 source/ap/vim/patches/7.3.045 delete mode 100644 source/ap/vim/patches/7.3.046 delete mode 100644 source/ap/vim/patches/7.3.047 delete mode 100644 source/ap/vim/patches/7.3.048 delete mode 100644 source/ap/vim/patches/7.3.049 delete mode 100644 source/ap/vim/patches/7.3.050 delete mode 100644 source/ap/vim/patches/7.3.051 delete mode 100644 source/ap/vim/patches/7.3.052 delete mode 100644 source/ap/vim/patches/7.3.053 delete mode 100644 source/ap/vim/patches/7.3.054 delete mode 100644 source/ap/vim/patches/7.3.055 delete mode 100644 source/ap/vim/patches/7.3.056 delete mode 100644 source/ap/vim/patches/7.3.057 delete mode 100644 source/ap/vim/patches/7.3.058 delete mode 100644 source/ap/vim/patches/7.3.059 delete mode 100644 source/ap/vim/patches/7.3.060 delete mode 100644 source/ap/vim/patches/7.3.061 delete mode 100644 source/ap/vim/patches/7.3.062 delete mode 100644 source/ap/vim/patches/7.3.063 delete mode 100644 source/ap/vim/patches/7.3.064 delete mode 100644 source/ap/vim/patches/7.3.065 delete mode 100644 source/ap/vim/patches/7.3.066 delete mode 100644 source/ap/vim/patches/7.3.067 delete mode 100644 source/ap/vim/patches/7.3.068 delete mode 100644 source/ap/vim/patches/7.3.069 delete mode 100644 source/ap/vim/patches/7.3.070 delete mode 100644 source/ap/vim/patches/7.3.071 delete mode 100644 source/ap/vim/patches/7.3.072 delete mode 100644 source/ap/vim/patches/7.3.073 delete mode 100644 source/ap/vim/patches/7.3.074 delete mode 100644 source/ap/vim/patches/7.3.075 delete mode 100644 source/ap/vim/patches/7.3.076 delete mode 100644 source/ap/vim/patches/7.3.077 delete mode 100644 source/ap/vim/patches/7.3.078 delete mode 100644 source/ap/vim/patches/7.3.079 delete mode 100644 source/ap/vim/patches/7.3.080 delete mode 100644 source/ap/vim/patches/7.3.081 delete mode 100644 source/ap/vim/patches/7.3.082 delete mode 100644 source/ap/vim/patches/7.3.083 delete mode 100644 source/ap/vim/patches/7.3.084 delete mode 100644 source/ap/vim/patches/7.3.085 delete mode 100644 source/ap/vim/patches/7.3.086 delete mode 100644 source/ap/vim/patches/7.3.087 delete mode 100644 source/ap/vim/patches/7.3.088 delete mode 100644 source/ap/vim/patches/7.3.089 delete mode 100644 source/ap/vim/patches/7.3.090 delete mode 100644 source/ap/vim/patches/7.3.091 delete mode 100644 source/ap/vim/patches/7.3.092 delete mode 100644 source/ap/vim/patches/7.3.093 delete mode 100644 source/ap/vim/patches/7.3.094 delete mode 100644 source/ap/vim/patches/7.3.095 delete mode 100644 source/ap/vim/patches/7.3.096 delete mode 100644 source/ap/vim/patches/7.3.097 delete mode 100644 source/ap/vim/patches/7.3.098 delete mode 100644 source/ap/vim/patches/7.3.099 delete mode 100644 source/ap/vim/patches/7.3.100 delete mode 100644 source/ap/vim/patches/7.3.101 delete mode 100644 source/ap/vim/patches/7.3.102 delete mode 100644 source/ap/vim/patches/7.3.103 delete mode 100644 source/ap/vim/patches/7.3.104 delete mode 100644 source/ap/vim/patches/7.3.105 delete mode 100644 source/ap/vim/patches/7.3.106 delete mode 100644 source/ap/vim/patches/7.3.107 delete mode 100644 source/ap/vim/patches/7.3.108 delete mode 100644 source/ap/vim/patches/7.3.109 delete mode 100644 source/ap/vim/patches/7.3.110 delete mode 100644 source/ap/vim/patches/7.3.111 delete mode 100644 source/ap/vim/patches/7.3.112 delete mode 100644 source/ap/vim/patches/7.3.113 delete mode 100644 source/ap/vim/patches/7.3.114 delete mode 100644 source/ap/vim/patches/7.3.115 delete mode 100644 source/ap/vim/patches/7.3.116 delete mode 100644 source/ap/vim/patches/7.3.117 delete mode 100644 source/ap/vim/patches/7.3.118 delete mode 100644 source/ap/vim/patches/7.3.119 delete mode 100644 source/ap/vim/patches/7.3.120 delete mode 100644 source/ap/vim/patches/7.3.121 delete mode 100644 source/ap/vim/patches/7.3.122 delete mode 100644 source/ap/vim/patches/7.3.123 delete mode 100644 source/ap/vim/patches/7.3.124 delete mode 100644 source/ap/vim/patches/7.3.125 delete mode 100644 source/ap/vim/patches/7.3.126 delete mode 100644 source/ap/vim/patches/7.3.127 delete mode 100644 source/ap/vim/patches/7.3.128 delete mode 100644 source/ap/vim/patches/7.3.129 delete mode 100644 source/ap/vim/patches/7.3.130 delete mode 100644 source/ap/vim/patches/7.3.131 delete mode 100644 source/ap/vim/patches/7.3.132 delete mode 100644 source/ap/vim/patches/7.3.133 delete mode 100644 source/ap/vim/patches/7.3.134 delete mode 100644 source/ap/vim/patches/7.3.135 delete mode 100644 source/ap/vim/patches/7.3.136 delete mode 100644 source/ap/vim/patches/7.3.137 delete mode 100644 source/ap/vim/patches/7.3.138 delete mode 100644 source/ap/vim/patches/7.3.139 delete mode 100644 source/ap/vim/patches/7.3.140 delete mode 100644 source/ap/vim/patches/7.3.141 delete mode 100644 source/ap/vim/patches/7.3.142 delete mode 100644 source/ap/vim/patches/7.3.143 delete mode 100644 source/ap/vim/patches/7.3.144 delete mode 100644 source/ap/vim/patches/7.3.145 delete mode 100644 source/ap/vim/patches/7.3.146 delete mode 100644 source/ap/vim/patches/7.3.147 delete mode 100644 source/ap/vim/patches/7.3.148 delete mode 100644 source/ap/vim/patches/7.3.149 delete mode 100644 source/ap/vim/patches/7.3.150 delete mode 100644 source/ap/vim/patches/7.3.151 delete mode 100644 source/ap/vim/patches/7.3.152 delete mode 100644 source/ap/vim/patches/7.3.153 delete mode 100644 source/ap/vim/patches/7.3.154 delete mode 100644 source/ap/vim/patches/7.3.155 delete mode 100644 source/ap/vim/patches/7.3.156 delete mode 100644 source/ap/vim/patches/7.3.157 delete mode 100644 source/ap/vim/patches/7.3.158 delete mode 100644 source/ap/vim/patches/7.3.159 delete mode 100644 source/ap/vim/patches/7.3.160 delete mode 100644 source/ap/vim/patches/7.3.161 delete mode 100644 source/ap/vim/patches/7.3.162 delete mode 100644 source/ap/vim/patches/7.3.163 delete mode 100644 source/ap/vim/patches/7.3.164 delete mode 100644 source/ap/vim/patches/7.3.165 delete mode 100644 source/ap/vim/patches/7.3.166 delete mode 100644 source/ap/vim/patches/7.3.167 delete mode 100644 source/ap/vim/patches/7.3.168 delete mode 100644 source/ap/vim/patches/7.3.169 delete mode 100644 source/ap/vim/patches/7.3.170 delete mode 100644 source/ap/vim/patches/7.3.171 delete mode 100644 source/ap/vim/patches/7.3.172 delete mode 100644 source/ap/vim/patches/7.3.173 delete mode 100644 source/ap/vim/patches/7.3.174 delete mode 100644 source/ap/vim/patches/7.3.175 delete mode 100644 source/ap/vim/patches/7.3.176 delete mode 100644 source/ap/vim/patches/7.3.177 delete mode 100644 source/ap/vim/patches/7.3.178 delete mode 100644 source/ap/vim/patches/7.3.179 delete mode 100644 source/ap/vim/patches/7.3.180 delete mode 100644 source/ap/vim/patches/7.3.181 delete mode 100644 source/ap/vim/patches/7.3.182 delete mode 100644 source/ap/vim/patches/7.3.183 delete mode 100644 source/ap/vim/patches/7.3.184 delete mode 100644 source/ap/vim/patches/7.3.185 delete mode 100644 source/ap/vim/patches/7.3.186 delete mode 100644 source/ap/vim/patches/7.3.187 delete mode 100644 source/ap/vim/patches/7.3.188 delete mode 100644 source/ap/vim/patches/7.3.189 delete mode 100644 source/ap/vim/patches/7.3.190 delete mode 100644 source/ap/vim/patches/7.3.191 delete mode 100644 source/ap/vim/patches/7.3.192 delete mode 100644 source/ap/vim/patches/7.3.193 delete mode 100644 source/ap/vim/patches/7.3.194 delete mode 100644 source/ap/vim/patches/7.3.195 delete mode 100644 source/ap/vim/patches/7.3.196 delete mode 100644 source/ap/vim/patches/7.3.197 delete mode 100644 source/ap/vim/patches/7.3.198 delete mode 100644 source/ap/vim/patches/7.3.199 delete mode 100644 source/ap/vim/patches/7.3.200 delete mode 100644 source/ap/vim/patches/7.3.201 delete mode 100644 source/ap/vim/patches/7.3.202 delete mode 100644 source/ap/vim/patches/7.3.203 delete mode 100644 source/ap/vim/patches/7.3.204 delete mode 100644 source/ap/vim/patches/7.3.205 delete mode 100644 source/ap/vim/patches/7.3.206 delete mode 100644 source/ap/vim/patches/7.3.207 delete mode 100644 source/ap/vim/patches/7.3.208 delete mode 100644 source/ap/vim/patches/7.3.209 delete mode 100644 source/ap/vim/patches/7.3.210 delete mode 100644 source/ap/vim/patches/7.3.211 delete mode 100644 source/ap/vim/patches/7.3.212 delete mode 100644 source/ap/vim/patches/7.3.213 delete mode 100644 source/ap/vim/patches/7.3.214 delete mode 100644 source/ap/vim/patches/7.3.215 delete mode 100644 source/ap/vim/patches/7.3.216 delete mode 100644 source/ap/vim/patches/7.3.217 delete mode 100644 source/ap/vim/patches/7.3.218 delete mode 100644 source/ap/vim/patches/7.3.219 delete mode 100644 source/ap/vim/patches/7.3.220 delete mode 100644 source/ap/vim/patches/7.3.221 delete mode 100644 source/ap/vim/patches/7.3.222 delete mode 100644 source/ap/vim/patches/7.3.223 delete mode 100644 source/ap/vim/patches/7.3.224 delete mode 100644 source/ap/vim/patches/7.3.225 delete mode 100644 source/ap/vim/patches/7.3.226 delete mode 100644 source/ap/vim/patches/7.3.227 delete mode 100644 source/ap/vim/patches/7.3.228 delete mode 100644 source/ap/vim/patches/7.3.229 delete mode 100644 source/ap/vim/patches/7.3.230 delete mode 100644 source/ap/vim/patches/7.3.231 delete mode 100644 source/ap/vim/patches/7.3.232 delete mode 100644 source/ap/vim/patches/7.3.233 delete mode 100644 source/ap/vim/patches/7.3.234 delete mode 100644 source/ap/vim/patches/7.3.235 delete mode 100644 source/ap/vim/patches/7.3.236 delete mode 100644 source/ap/vim/patches/7.3.237 delete mode 100644 source/ap/vim/patches/7.3.238 delete mode 100644 source/ap/vim/patches/7.3.239 delete mode 100644 source/ap/vim/patches/7.3.240 delete mode 100644 source/ap/vim/patches/7.3.241 delete mode 100644 source/ap/vim/patches/7.3.242 delete mode 100644 source/ap/vim/patches/7.3.243 delete mode 100644 source/ap/vim/patches/7.3.244 delete mode 100644 source/ap/vim/patches/7.3.245 delete mode 100644 source/ap/vim/patches/7.3.246 delete mode 100644 source/ap/vim/patches/7.3.247 delete mode 100644 source/ap/vim/patches/7.3.248 delete mode 100644 source/ap/vim/patches/7.3.249 delete mode 100644 source/ap/vim/patches/7.3.250 delete mode 100644 source/ap/vim/patches/7.3.251 delete mode 100644 source/ap/vim/patches/7.3.252 delete mode 100644 source/ap/vim/patches/7.3.253 delete mode 100644 source/ap/vim/patches/7.3.254 delete mode 100644 source/ap/vim/patches/7.3.255 delete mode 100644 source/ap/vim/patches/7.3.256 delete mode 100644 source/ap/vim/patches/7.3.257 delete mode 100644 source/ap/vim/patches/7.3.258 delete mode 100644 source/ap/vim/patches/7.3.259 delete mode 100644 source/ap/vim/patches/7.3.260 delete mode 100644 source/ap/vim/patches/7.3.261 delete mode 100644 source/ap/vim/patches/7.3.262 delete mode 100644 source/ap/vim/patches/7.3.263 delete mode 100644 source/ap/vim/patches/7.3.264 delete mode 100644 source/ap/vim/patches/7.3.265 delete mode 100644 source/ap/vim/patches/7.3.266 delete mode 100644 source/ap/vim/patches/7.3.267 delete mode 100644 source/ap/vim/patches/7.3.268 delete mode 100644 source/ap/vim/patches/7.3.269 delete mode 100644 source/ap/vim/patches/7.3.270 delete mode 100644 source/ap/vim/patches/7.3.271 delete mode 100644 source/ap/vim/patches/7.3.272 delete mode 100644 source/ap/vim/patches/7.3.273 delete mode 100644 source/ap/vim/patches/7.3.274 delete mode 100644 source/ap/vim/patches/7.3.275 delete mode 100644 source/ap/vim/patches/7.3.276 delete mode 100644 source/ap/vim/patches/7.3.277 delete mode 100644 source/ap/vim/patches/7.3.278 delete mode 100644 source/ap/vim/patches/7.3.279 delete mode 100644 source/ap/vim/patches/7.3.280 delete mode 100644 source/ap/vim/patches/7.3.281 delete mode 100644 source/ap/vim/patches/7.3.282 delete mode 100644 source/ap/vim/patches/7.3.283 delete mode 100644 source/ap/vim/patches/7.3.284 delete mode 100644 source/ap/vim/patches/7.3.285 delete mode 100644 source/ap/vim/patches/7.3.286 delete mode 100644 source/ap/vim/patches/7.3.287 delete mode 100644 source/ap/vim/patches/7.3.288 delete mode 100644 source/ap/vim/patches/7.3.289 delete mode 100644 source/ap/vim/patches/7.3.290 delete mode 100644 source/ap/vim/patches/7.3.291 delete mode 100644 source/ap/vim/patches/7.3.292 delete mode 100644 source/ap/vim/patches/7.3.293 delete mode 100644 source/ap/vim/patches/7.3.294 delete mode 100644 source/ap/vim/patches/7.3.295 delete mode 100644 source/ap/vim/patches/7.3.296 delete mode 100644 source/ap/vim/patches/7.3.297 delete mode 100644 source/ap/vim/patches/7.3.298 delete mode 100644 source/ap/vim/patches/7.3.299 delete mode 100644 source/ap/vim/patches/7.3.300 delete mode 100644 source/ap/vim/patches/7.3.301 delete mode 100644 source/ap/vim/patches/7.3.302 delete mode 100644 source/ap/vim/patches/7.3.303 delete mode 100644 source/ap/vim/patches/7.3.304 delete mode 100644 source/ap/vim/patches/7.3.305 delete mode 100644 source/ap/vim/patches/7.3.306 delete mode 100644 source/ap/vim/patches/7.3.307 delete mode 100644 source/ap/vim/patches/7.3.308 delete mode 100644 source/ap/vim/patches/7.3.309 delete mode 100644 source/ap/vim/patches/7.3.310 delete mode 100644 source/ap/vim/patches/7.3.311 delete mode 100644 source/ap/vim/patches/7.3.312 delete mode 100644 source/ap/vim/patches/7.3.313 delete mode 100644 source/ap/vim/patches/7.3.314 delete mode 100644 source/ap/vim/patches/7.3.315 delete mode 100644 source/ap/vim/patches/7.3.316 delete mode 100644 source/ap/vim/patches/7.3.317 delete mode 100644 source/ap/vim/patches/7.3.318 delete mode 100644 source/ap/vim/patches/7.3.319 delete mode 100644 source/ap/vim/patches/7.3.320 delete mode 100644 source/ap/vim/patches/7.3.321 delete mode 100644 source/ap/vim/patches/7.3.322 delete mode 100644 source/ap/vim/patches/7.3.323 delete mode 100644 source/ap/vim/patches/7.3.324 delete mode 100644 source/ap/vim/patches/7.3.325 delete mode 100644 source/ap/vim/patches/7.3.326 delete mode 100644 source/ap/vim/patches/7.3.327 delete mode 100644 source/ap/vim/patches/7.3.328 delete mode 100644 source/ap/vim/patches/7.3.329 delete mode 100644 source/ap/vim/patches/7.3.330 delete mode 100644 source/ap/vim/patches/7.3.331 delete mode 100644 source/ap/vim/patches/7.3.332 delete mode 100644 source/ap/vim/patches/7.3.333 delete mode 100644 source/ap/vim/patches/7.3.334 delete mode 100644 source/ap/vim/patches/7.3.335 delete mode 100644 source/ap/vim/patches/7.3.336 delete mode 100644 source/ap/vim/patches/7.3.337 delete mode 100644 source/ap/vim/patches/7.3.338 delete mode 100644 source/ap/vim/patches/7.3.339 delete mode 100644 source/ap/vim/patches/7.3.340 delete mode 100644 source/ap/vim/patches/7.3.341 delete mode 100644 source/ap/vim/patches/7.3.342 delete mode 100644 source/ap/vim/patches/7.3.343 delete mode 100644 source/ap/vim/patches/7.3.344 delete mode 100644 source/ap/vim/patches/7.3.345 delete mode 100644 source/ap/vim/patches/7.3.346 delete mode 100644 source/ap/vim/patches/7.3.347 delete mode 100644 source/ap/vim/patches/7.3.348 delete mode 100644 source/ap/vim/patches/7.3.349 delete mode 100644 source/ap/vim/patches/7.3.350 delete mode 100644 source/ap/vim/patches/7.3.351 delete mode 100644 source/ap/vim/patches/7.3.352 delete mode 100644 source/ap/vim/patches/7.3.353 delete mode 100644 source/ap/vim/patches/7.3.354 delete mode 100644 source/ap/vim/patches/7.3.355 delete mode 100644 source/ap/vim/patches/7.3.356 delete mode 100644 source/ap/vim/patches/7.3.357 delete mode 100644 source/ap/vim/patches/7.3.358 delete mode 100644 source/ap/vim/patches/7.3.359 delete mode 100644 source/ap/vim/patches/7.3.360 delete mode 100644 source/ap/vim/patches/7.3.361 delete mode 100644 source/ap/vim/patches/7.3.362 delete mode 100644 source/ap/vim/patches/7.3.363 delete mode 100644 source/ap/vim/patches/7.3.364 delete mode 100644 source/ap/vim/patches/7.3.365 delete mode 100644 source/ap/vim/patches/7.3.366 delete mode 100644 source/ap/vim/patches/7.3.367 delete mode 100644 source/ap/vim/patches/7.3.368 delete mode 100644 source/ap/vim/patches/7.3.369 delete mode 100644 source/ap/vim/patches/7.3.370 delete mode 100644 source/ap/vim/patches/7.3.371 delete mode 100644 source/ap/vim/patches/7.3.372 delete mode 100644 source/ap/vim/patches/7.3.373 delete mode 100644 source/ap/vim/patches/7.3.374 delete mode 100644 source/ap/vim/patches/7.3.375 delete mode 100644 source/ap/vim/patches/7.3.376 delete mode 100644 source/ap/vim/patches/7.3.377 delete mode 100644 source/ap/vim/patches/7.3.378 delete mode 100644 source/ap/vim/patches/7.3.379 delete mode 100644 source/ap/vim/patches/7.3.380 delete mode 100644 source/ap/vim/patches/7.3.381 delete mode 100644 source/ap/vim/patches/7.3.382 delete mode 100644 source/ap/vim/patches/7.3.383 delete mode 100644 source/ap/vim/patches/7.3.384 delete mode 100644 source/ap/vim/patches/7.3.385 delete mode 100644 source/ap/vim/patches/7.3.386 delete mode 100644 source/ap/vim/patches/7.3.387 delete mode 100644 source/ap/vim/patches/7.3.388 delete mode 100644 source/ap/vim/patches/7.3.389 delete mode 100644 source/ap/vim/patches/7.3.390 delete mode 100644 source/ap/vim/patches/7.3.391 delete mode 100644 source/ap/vim/patches/7.3.392 delete mode 100644 source/ap/vim/patches/7.3.393 delete mode 100644 source/ap/vim/patches/7.3.394 delete mode 100644 source/ap/vim/patches/7.3.395 delete mode 100644 source/ap/vim/patches/7.3.396 delete mode 100644 source/ap/vim/patches/7.3.397 delete mode 100644 source/ap/vim/patches/7.3.398 delete mode 100644 source/ap/vim/patches/7.3.399 delete mode 100644 source/ap/vim/patches/7.3.400 delete mode 100644 source/ap/vim/patches/7.3.401 delete mode 100644 source/ap/vim/patches/7.3.402 delete mode 100644 source/ap/vim/patches/7.3.403 delete mode 100644 source/ap/vim/patches/7.3.404 delete mode 100644 source/ap/vim/patches/7.3.405 delete mode 100644 source/ap/vim/patches/7.3.406 delete mode 100644 source/ap/vim/patches/7.3.407 delete mode 100644 source/ap/vim/patches/7.3.408 delete mode 100644 source/ap/vim/patches/7.3.409 delete mode 100644 source/ap/vim/patches/7.3.410 delete mode 100644 source/ap/vim/patches/7.3.411 delete mode 100644 source/ap/vim/patches/7.3.412 delete mode 100644 source/ap/vim/patches/7.3.413 delete mode 100644 source/ap/vim/patches/7.3.414 delete mode 100644 source/ap/vim/patches/7.3.415 delete mode 100644 source/ap/vim/patches/7.3.416 delete mode 100644 source/ap/vim/patches/7.3.417 delete mode 100644 source/ap/vim/patches/7.3.418 delete mode 100644 source/ap/vim/patches/7.3.419 delete mode 100644 source/ap/vim/patches/7.3.420 delete mode 100644 source/ap/vim/patches/7.3.421 delete mode 100644 source/ap/vim/patches/7.3.422 delete mode 100644 source/ap/vim/patches/7.3.423 delete mode 100644 source/ap/vim/patches/7.3.424 delete mode 100644 source/ap/vim/patches/7.3.425 delete mode 100644 source/ap/vim/patches/7.3.426 delete mode 100644 source/ap/vim/patches/7.3.427 delete mode 100644 source/ap/vim/patches/7.3.428 delete mode 100644 source/ap/vim/patches/7.3.429 delete mode 100644 source/ap/vim/patches/7.3.430 delete mode 100644 source/ap/vim/patches/7.3.431 delete mode 100644 source/ap/vim/patches/7.3.432 delete mode 100644 source/ap/vim/patches/7.3.433 delete mode 100644 source/ap/vim/patches/7.3.434 delete mode 100644 source/ap/vim/patches/7.3.435 delete mode 100644 source/ap/vim/patches/7.3.436 delete mode 100644 source/ap/vim/patches/7.3.437 delete mode 100644 source/ap/vim/patches/7.3.438 delete mode 100644 source/ap/vim/patches/7.3.439 delete mode 100644 source/ap/vim/patches/7.3.440 delete mode 100644 source/ap/vim/patches/7.3.441 delete mode 100644 source/ap/vim/patches/7.3.442 delete mode 100644 source/ap/vim/patches/7.3.443 delete mode 100644 source/ap/vim/patches/7.3.444 delete mode 100644 source/ap/vim/patches/7.3.445 delete mode 100644 source/ap/vim/patches/7.3.446 delete mode 100644 source/ap/vim/patches/7.3.447 delete mode 100644 source/ap/vim/patches/7.3.448 delete mode 100644 source/ap/vim/patches/7.3.449 delete mode 100644 source/ap/vim/patches/7.3.450 delete mode 100644 source/ap/vim/patches/7.3.451 delete mode 100644 source/ap/vim/patches/7.3.452 delete mode 100644 source/ap/vim/patches/7.3.453 delete mode 100644 source/ap/vim/patches/7.3.454 delete mode 100644 source/ap/vim/patches/7.3.455 delete mode 100644 source/ap/vim/patches/7.3.456 delete mode 100644 source/ap/vim/patches/7.3.457 delete mode 100644 source/ap/vim/patches/7.3.458 delete mode 100644 source/ap/vim/patches/7.3.459 delete mode 100644 source/ap/vim/patches/7.3.460 delete mode 100644 source/ap/vim/patches/7.3.461 delete mode 100644 source/ap/vim/patches/7.3.462 delete mode 100644 source/ap/vim/patches/7.3.463 delete mode 100644 source/ap/vim/patches/7.3.464 delete mode 100644 source/ap/vim/patches/7.3.465 delete mode 100644 source/ap/vim/patches/7.3.466 delete mode 100644 source/ap/vim/patches/7.3.467 delete mode 100644 source/ap/vim/patches/7.3.468 delete mode 100644 source/ap/vim/patches/7.3.469 delete mode 100644 source/ap/vim/patches/7.3.470 delete mode 100644 source/ap/vim/patches/7.3.471 delete mode 100644 source/ap/vim/patches/7.3.472 delete mode 100644 source/ap/vim/patches/7.3.473 delete mode 100644 source/ap/vim/patches/7.3.474 delete mode 100644 source/ap/vim/patches/7.3.475 delete mode 100644 source/ap/vim/patches/7.3.476 delete mode 100644 source/ap/vim/patches/7.3.477 delete mode 100644 source/ap/vim/patches/7.3.478 delete mode 100644 source/ap/vim/patches/7.3.479 delete mode 100644 source/ap/vim/patches/7.3.480 delete mode 100644 source/ap/vim/patches/7.3.481 delete mode 100644 source/ap/vim/patches/7.3.482 delete mode 100644 source/ap/vim/patches/7.3.483 delete mode 100644 source/ap/vim/patches/7.3.484 delete mode 100644 source/ap/vim/patches/7.3.485 delete mode 100644 source/ap/vim/patches/7.3.486 delete mode 100644 source/ap/vim/patches/7.3.487 delete mode 100644 source/ap/vim/patches/7.3.488 delete mode 100644 source/ap/vim/patches/7.3.489 delete mode 100644 source/ap/vim/patches/7.3.490 delete mode 100644 source/ap/vim/patches/7.3.491 delete mode 100644 source/ap/vim/patches/7.3.492 delete mode 100644 source/ap/vim/patches/7.3.493 delete mode 100644 source/ap/vim/patches/7.3.494 delete mode 100644 source/ap/vim/patches/7.3.495 delete mode 100644 source/ap/vim/patches/7.3.496 delete mode 100644 source/ap/vim/patches/7.3.497 delete mode 100644 source/ap/vim/patches/7.3.498 delete mode 100644 source/ap/vim/patches/7.3.499 delete mode 100644 source/ap/vim/patches/7.3.500 delete mode 100644 source/ap/vim/patches/7.3.501 delete mode 100644 source/ap/vim/patches/7.3.502 delete mode 100644 source/ap/vim/patches/7.3.503 delete mode 100644 source/ap/vim/patches/7.3.504 delete mode 100644 source/ap/vim/patches/7.3.505 delete mode 100644 source/ap/vim/patches/7.3.506 delete mode 100644 source/ap/vim/patches/7.3.507 delete mode 100644 source/ap/vim/patches/7.3.508 delete mode 100644 source/ap/vim/patches/7.3.509 delete mode 100644 source/ap/vim/patches/7.3.510 delete mode 100644 source/ap/vim/patches/7.3.511 delete mode 100644 source/ap/vim/patches/7.3.512 delete mode 100644 source/ap/vim/patches/7.3.513 delete mode 100644 source/ap/vim/patches/7.3.514 delete mode 100644 source/ap/vim/patches/7.3.515 delete mode 100644 source/ap/vim/patches/7.3.516 delete mode 100644 source/ap/vim/patches/7.3.517 delete mode 100644 source/ap/vim/patches/7.3.518 delete mode 100644 source/ap/vim/patches/7.3.519 delete mode 100644 source/ap/vim/patches/7.3.520 delete mode 100644 source/ap/vim/patches/7.3.521 delete mode 100644 source/ap/vim/patches/7.3.522 delete mode 100644 source/ap/vim/patches/7.3.523 delete mode 100644 source/ap/vim/patches/7.3.524 delete mode 100644 source/ap/vim/patches/7.3.525 delete mode 100644 source/ap/vim/patches/7.3.526 delete mode 100644 source/ap/vim/patches/7.3.527 delete mode 100644 source/ap/vim/patches/7.3.528 delete mode 100644 source/ap/vim/patches/7.3.529 delete mode 100644 source/ap/vim/patches/7.3.530 delete mode 100644 source/ap/vim/patches/7.3.531 delete mode 100644 source/ap/vim/patches/7.3.532 delete mode 100644 source/ap/vim/patches/7.3.533 delete mode 100644 source/ap/vim/patches/7.3.534 delete mode 100644 source/ap/vim/patches/7.3.535 delete mode 100644 source/ap/vim/patches/7.3.536 delete mode 100644 source/ap/vim/patches/7.3.537 delete mode 100644 source/ap/vim/patches/7.3.538 delete mode 100644 source/ap/vim/patches/7.3.539 delete mode 100644 source/ap/vim/patches/7.3.540 delete mode 100644 source/ap/vim/patches/7.3.541 delete mode 100644 source/ap/vim/patches/7.3.542 delete mode 100644 source/ap/vim/patches/7.3.543 delete mode 100644 source/ap/vim/patches/7.3.544 delete mode 100644 source/ap/vim/patches/7.3.545 delete mode 100644 source/ap/vim/patches/7.3.546 delete mode 100644 source/ap/vim/patches/7.3.547 delete mode 100644 source/ap/vim/patches/7.3.548 delete mode 100644 source/ap/vim/patches/7.3.549 delete mode 100644 source/ap/vim/patches/7.3.550 delete mode 100644 source/ap/vim/patches/7.3.551 delete mode 100644 source/ap/vim/patches/7.3.552 delete mode 100644 source/ap/vim/patches/7.3.553 delete mode 100644 source/ap/vim/patches/7.3.554 delete mode 100644 source/ap/vim/patches/7.3.555 delete mode 100644 source/ap/vim/patches/7.3.556 delete mode 100644 source/ap/vim/patches/7.3.557 delete mode 100644 source/ap/vim/patches/7.3.558 delete mode 100644 source/ap/vim/patches/7.3.559 delete mode 100644 source/ap/vim/patches/7.3.560 delete mode 100644 source/ap/vim/patches/7.3.561 delete mode 100644 source/ap/vim/patches/7.3.562 delete mode 100644 source/ap/vim/patches/7.3.563 delete mode 100644 source/ap/vim/patches/7.3.564 delete mode 100644 source/ap/vim/patches/7.3.565 delete mode 100644 source/ap/vim/patches/7.3.566 delete mode 100644 source/ap/vim/patches/7.3.567 delete mode 100644 source/ap/vim/patches/7.3.568 delete mode 100644 source/ap/vim/patches/7.3.569 delete mode 100644 source/ap/vim/patches/7.3.570 delete mode 100644 source/ap/vim/patches/7.3.571 delete mode 100644 source/ap/vim/patches/7.3.572 delete mode 100644 source/ap/vim/patches/7.3.573 delete mode 100644 source/ap/vim/patches/7.3.574 delete mode 100644 source/ap/vim/patches/7.3.575 delete mode 100644 source/ap/vim/patches/7.3.576 delete mode 100644 source/ap/vim/patches/7.3.577 delete mode 100644 source/ap/vim/patches/7.3.578 delete mode 100644 source/ap/vim/patches/7.3.579 delete mode 100644 source/ap/vim/patches/7.3.580 delete mode 100644 source/ap/vim/patches/7.3.581 delete mode 100644 source/ap/vim/patches/7.3.582 delete mode 100644 source/ap/vim/patches/7.3.583 delete mode 100644 source/ap/vim/patches/7.3.584 delete mode 100644 source/ap/vim/patches/7.3.585 delete mode 100644 source/ap/vim/patches/7.3.586 delete mode 100644 source/ap/vim/patches/7.3.587 delete mode 100644 source/ap/vim/patches/7.3.588 delete mode 100644 source/ap/vim/patches/7.3.589 delete mode 100644 source/ap/vim/patches/7.3.590 delete mode 100644 source/ap/vim/patches/7.3.591 delete mode 100644 source/ap/vim/patches/7.3.592 delete mode 100644 source/ap/vim/patches/7.3.593 delete mode 100644 source/ap/vim/patches/7.3.594 delete mode 100644 source/ap/vim/patches/7.3.595 delete mode 100644 source/ap/vim/patches/7.3.596 delete mode 100644 source/ap/vim/patches/7.3.597 delete mode 100644 source/ap/vim/patches/7.3.598 delete mode 100644 source/ap/vim/patches/7.3.599 delete mode 100644 source/ap/vim/patches/7.3.600 delete mode 100644 source/ap/vim/patches/7.3.601 delete mode 100644 source/ap/vim/patches/7.3.602 delete mode 100644 source/ap/vim/patches/7.3.603 delete mode 100644 source/ap/vim/patches/7.3.604 delete mode 100644 source/ap/vim/patches/7.3.605 delete mode 100644 source/ap/vim/patches/7.3.606 delete mode 100644 source/ap/vim/patches/7.3.607 delete mode 100644 source/ap/vim/patches/7.3.608 delete mode 100644 source/ap/vim/patches/7.3.609 delete mode 100644 source/ap/vim/patches/7.3.610 delete mode 100644 source/ap/vim/patches/7.3.611 delete mode 100644 source/ap/vim/patches/7.3.612 delete mode 100644 source/ap/vim/patches/7.3.613 delete mode 100644 source/ap/vim/patches/7.3.614 delete mode 100644 source/ap/vim/patches/7.3.615 delete mode 100644 source/ap/vim/patches/7.3.616 delete mode 100644 source/ap/vim/patches/7.3.617 delete mode 100644 source/ap/vim/patches/7.3.618 delete mode 100644 source/ap/vim/patches/7.3.619 delete mode 100644 source/ap/vim/patches/7.3.620 delete mode 100644 source/ap/vim/patches/7.3.621 delete mode 100644 source/ap/vim/patches/7.3.622 delete mode 100644 source/ap/vim/patches/7.3.623 delete mode 100644 source/ap/vim/patches/7.3.624 delete mode 100644 source/ap/vim/patches/7.3.625 delete mode 100644 source/ap/vim/patches/7.3.626 delete mode 100644 source/ap/vim/patches/7.3.627 delete mode 100644 source/ap/vim/patches/7.3.628 delete mode 100644 source/ap/vim/patches/7.3.629 delete mode 100644 source/ap/vim/patches/7.3.630 delete mode 100644 source/ap/vim/patches/7.3.631 delete mode 100644 source/ap/vim/patches/7.3.632 delete mode 100644 source/ap/vim/patches/7.3.633 delete mode 100644 source/ap/vim/patches/7.3.634 delete mode 100644 source/ap/vim/patches/7.3.635 delete mode 100644 source/ap/vim/patches/7.3.636 delete mode 100644 source/ap/vim/patches/7.3.637 delete mode 100644 source/ap/vim/patches/7.3.638 delete mode 100644 source/ap/vim/patches/7.3.639 delete mode 100644 source/ap/vim/patches/7.3.640 delete mode 100644 source/ap/vim/patches/7.3.641 delete mode 100644 source/ap/vim/patches/7.3.642 delete mode 100644 source/ap/vim/patches/7.3.643 delete mode 100644 source/ap/vim/patches/7.3.644 delete mode 100644 source/ap/vim/patches/7.3.645 create mode 100644 source/ap/vim/patches/7.4.001 create mode 100644 source/ap/vim/patches/7.4.002 create mode 100644 source/ap/vim/patches/7.4.003 create mode 100644 source/ap/vim/patches/7.4.004 create mode 100644 source/ap/vim/patches/7.4.005 create mode 100644 source/ap/vim/patches/7.4.006 create mode 100644 source/ap/vim/patches/7.4.007 create mode 100644 source/ap/vim/patches/7.4.008 create mode 100644 source/ap/vim/patches/7.4.009 create mode 100644 source/ap/vim/patches/7.4.010 create mode 100644 source/ap/vim/patches/7.4.011 create mode 100644 source/ap/vim/patches/7.4.012 create mode 100644 source/ap/vim/patches/7.4.013 create mode 100644 source/ap/vim/patches/7.4.014 create mode 100644 source/ap/vim/patches/7.4.015 create mode 100644 source/ap/vim/patches/7.4.016 create mode 100644 source/ap/vim/patches/7.4.017 create mode 100644 source/ap/vim/patches/7.4.018 create mode 100644 source/ap/vim/patches/7.4.019 create mode 100644 source/ap/vim/patches/7.4.020 create mode 100644 source/ap/vim/patches/7.4.021 create mode 100644 source/ap/vim/patches/7.4.022 create mode 100644 source/ap/vim/patches/7.4.023 create mode 100644 source/ap/vim/patches/7.4.024 create mode 100644 source/ap/vim/patches/7.4.025 create mode 100644 source/ap/vim/patches/7.4.026 create mode 100644 source/ap/vim/patches/7.4.027 create mode 100644 source/ap/vim/patches/7.4.028 create mode 100644 source/ap/vim/patches/7.4.029 create mode 100644 source/ap/vim/patches/7.4.030 create mode 100644 source/ap/vim/patches/7.4.031 create mode 100644 source/ap/vim/patches/7.4.032 create mode 100644 source/ap/vim/patches/7.4.033 create mode 100644 source/ap/vim/patches/7.4.034 create mode 100644 source/ap/vim/patches/7.4.035 create mode 100644 source/ap/vim/patches/7.4.036 create mode 100644 source/ap/vim/patches/7.4.037 create mode 100644 source/ap/vim/patches/7.4.038 create mode 100644 source/ap/vim/patches/7.4.039 create mode 100644 source/ap/vim/patches/7.4.040 create mode 100644 source/ap/vim/patches/7.4.041 create mode 100644 source/ap/vim/patches/7.4.042 create mode 100644 source/ap/vim/patches/7.4.043 create mode 100644 source/ap/vim/patches/7.4.044 create mode 100644 source/ap/vim/patches/7.4.045 create mode 100644 source/ap/vim/patches/7.4.046 create mode 100644 source/ap/vim/patches/7.4.047 create mode 100644 source/ap/vim/patches/7.4.048 create mode 100644 source/ap/vim/patches/7.4.049 create mode 100644 source/ap/vim/patches/7.4.050 delete mode 100644 source/ap/vim/vim-runtime-syntax-20110328.diff create mode 100644 source/ap/vim/vim-runtime-syntax-20131002.diff delete mode 100644 source/ap/xfsdump/xfsdump.destdir.diff (limited to 'source/ap') diff --git a/source/ap/acct/581421-sa-hz-division.patch b/source/ap/acct/581421-sa-hz-division.patch new file mode 100644 index 00000000..0c15c017 --- /dev/null +++ b/source/ap/acct/581421-sa-hz-division.patch @@ -0,0 +1,66 @@ +From: Dominique Brazziel +Subject: Fix for sa reporting 'inf' or 'nan' instead of correct values + because of division by clock values. +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=581421 +Last-Updated: 2010-07-23 + +--- acct-6.5.4.orig/sa.c 2010-02-11 20:55:14.000000000 -0500 ++++ acct-6.5.4/sa.c 2010-07-22 14:08:26.000000000 -0400 +@@ -417,7 +417,6 @@ + (void)printf("%s: GNU Accounting Utilities (release %s)\n", + program_name, VERSION_STRING); + exit(EXIT_SUCCESS); +- case 4: + acct_file_name = optarg; + break; + case 'j': +@@ -594,8 +593,11 @@ + exit(EXIT_FAILURE); + } + ++ /* Set HZ value from system */ ++ hzval = sysconf(_SC_CLK_TCK); ++ + /* Print out some debugging information. */ +- ++ + if (debugging_enabled) + { + (void)fprintf (stddebug, "hzval -> %d\n", hzval); +@@ -1162,31 +1164,30 @@ + # define CURR_AHZ ((double)(ahz)) + #endif + +- + if (debugging_enabled) + fprintf (stddebug, "\ + ----------------------------------------------------------------------\n\ + acct entries\n\ + ----------------------------------------------------------------------\n\ + "); +- ++ + /* loop while there are entries to be had */ + while ((rec = pacct_get_entry ()) != NULL) + { + #ifdef HAVE_ACUTIME +- double ut = comp_t_2_double (rec->ac_utime) / (double) hzval; ++ double ut = comp_t_2_double (rec->ac_utime) / CURR_AHZ; + #endif + + #ifdef HAVE_ACSTIME +- double st = comp_t_2_double (rec->ac_stime) / (double) hzval; ++ double st = comp_t_2_double (rec->ac_stime) / CURR_AHZ; + #endif + + #ifdef HAVE_ACETIME +- double et = comp_t_2_double (rec->ac_etime) / (double) hzval; ++ double et = ACETIME_2_DOUBLE (rec->ac_etime) / CURR_AHZ; + #endif + + #ifdef HAVE_ACIO +- double di = comp_t_2_double (rec->ac_io) / (double) hzval; ++ double di = comp_t_2_double (rec->ac_io) / CURR_AHZ; + #endif + + #ifdef HAVE_ACMEM diff --git a/source/ap/acct/acct.SlackBuild b/source/ap/acct/acct.SlackBuild index bfdd46fd..43cc9745 100755 --- a/source/ap/acct/acct.SlackBuild +++ b/source/ap/acct/acct.SlackBuild @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2006, 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2008, 2009, 2010, 2013 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -23,7 +23,7 @@ PKGNAM=acct PKGVER=6.5.4 VERSION=6.5.4 -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -66,6 +66,8 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; +zcat $CWD/581421-sa-hz-division.patch.gz | patch -p1 || exit 1 + zcat $CWD/acct.logdir.fhs.diff.gz | patch -p1 || exit 1 # Need this after patching configure.ac: autoreconf diff --git a/source/ap/alsa-utils/alsa-utils.SlackBuild b/source/ap/alsa-utils/alsa-utils.SlackBuild index 3e642d08..2540cc68 100755 --- a/source/ap/alsa-utils/alsa-utils.SlackBuild +++ b/source/ap/alsa-utils/alsa-utils.SlackBuild @@ -85,8 +85,10 @@ make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG mkdir -p $PKG/etc/rc.d -zcat $CWD/rc.alsa.gz > $PKG/etc/rc.d/rc.alsa -chmod 0755 $PKG/etc/rc.d/rc.alsa +zcat $CWD/rc.alsa.gz > $PKG/etc/rc.d/rc.alsa.new +chmod 0755 $PKG/etc/rc.d/rc.alsa.new +zcat $CWD/rc.alsa-oss.gz > $PKG/etc/rc.d/rc.alsa-oss.new +chmod 0644 $PKG/etc/rc.d/rc.alsa-oss.new find $PKG | xargs file | grep -e "executable" -e "shared object" \ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null diff --git a/source/ap/alsa-utils/doinst.sh b/source/ap/alsa-utils/doinst.sh index 0ee74150..8a9b2878 100644 --- a/source/ap/alsa-utils/doinst.sh +++ b/source/ap/alsa-utils/doinst.sh @@ -4,3 +4,24 @@ fi # Better a dangling symlink than for nobody to know where this went: rm -f etc/asound.state ( cd etc && ln -sf ../var/lib/alsa/asound.state . ) + +# Duplicate permissions from any existing rc scripts: +if [ -e etc/rc.d/rc.alsa ]; then + if [ -x etc/rc.d/rc.alsa ]; then + chmod 755 etc/rc.d/rc.alsa.new + else + chmod 644 etc/rc.d/rc.alsa.new + fi +fi +if [ -e etc/rc.d/rc.alsa-oss ]; then + if [ -x etc/rc.d/rc.alsa-oss ]; then + chmod 755 etc/rc.d/rc.alsa-oss.new + else + chmod 644 etc/rc.d/rc.alsa-oss.new + fi +fi + +# Move the scripts into place: +mv etc/rc.d/rc.alsa.new etc/rc.d/rc.alsa +mv etc/rc.d/rc.alsa-oss.new etc/rc.d/rc.alsa-oss + diff --git a/source/ap/alsa-utils/rc.alsa b/source/ap/alsa-utils/rc.alsa index 2a984a51..077966da 100644 --- a/source/ap/alsa-utils/rc.alsa +++ b/source/ap/alsa-utils/rc.alsa @@ -1,5 +1,5 @@ #!/bin/sh -# Load the mixer settings and OSS compatibility for ALSA. +# Load the mixer settings and OSS compatibility (if enabled) for ALSA. # (the Advanced Linux Sound Architecture) # A function to load the ALSA mixer settings: @@ -13,7 +13,7 @@ load_alsa_mixer() { if [ ! -r /var/lib/alsa/no.asound.state ]; then echo "Setting default ALSA mixer settings." # set default mixer volumes for ALSA - # Taken from the alsaconfig script. + # Taken from the alsaconf script. amixer -s -q < $PKG/install/slack-desc - -cd $PKG -makepkg -l y -c n $TMP/aumix-$VERSION-$ARCH-$BUILD.txz - diff --git a/source/ap/aumix/slack-desc b/source/ap/aumix/slack-desc deleted file mode 100644 index 70e78087..00000000 --- a/source/ap/aumix/slack-desc +++ /dev/null @@ -1,19 +0,0 @@ -# HOW TO EDIT THIS FILE: -# The "handy ruler" below makes it easier to edit a package description. Line -# up the first '|' above the ':' following the base package name, and the '|' on -# the right side marks the last column you can put a character in. You must make -# exactly 11 lines for the formatting to be correct. It's also customary to -# leave one space after the ':'. - - |-----handy-ruler------------------------------------------------------| -aumix: aumix (GTK+/ncurses audio mixer) -aumix: -aumix: This is a program for adjusting audio mixers from the command line or -aumix: scripts, or interactively at the console or a terminal with a -aumix: full-screen, ncurses-based interface or a GTK-based X interface. -aumix: -aumix: -aumix: -aumix: -aumix: -aumix: diff --git a/source/ap/dc3dd/slack-desc b/source/ap/dc3dd/slack-desc index 1dfd5e02..91c44be4 100644 --- a/source/ap/dc3dd/slack-desc +++ b/source/ap/dc3dd/slack-desc @@ -14,6 +14,6 @@ dc3dd: dcfldd, but were rewritten for dc3dd. Added features include robust dc3dd: error handling, logging, progress meter, image verification, split dc3dd: output and more. dc3dd: -dc3dd: http://dc3dd.sourceforge.net/ +dc3dd: http://sourceforge.net/projects/dc3dd/ dc3dd: dc3dd: diff --git a/source/ap/diffutils/diffutils.SlackBuild b/source/ap/diffutils/diffutils.SlackBuild index 2287abb2..93847dcd 100755 --- a/source/ap/diffutils/diffutils.SlackBuild +++ b/source/ap/diffutils/diffutils.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2005-2010 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2005-2013 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,7 +22,7 @@ PKGNAM=diffutils -VERSION=${VERSION:-$(echo diffutils-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +VERSION=${VERSION:-$(echo diffutils-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: @@ -56,8 +56,8 @@ mkdir -p $TMP $PKG cd $TMP rm -rf $PKGNAM-$VERSION -tar xvf $CWD/$PKGNAM-$VERSION.tar.xz -cd $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 chown -R root:root . find . \ @@ -70,6 +70,9 @@ zcat $CWD/diffutils-sdiff-no-waitpid.patch.gz | patch -p1 || exit 1 # Prevent ruining sdiff.1 by touching it so it won't "regenerate": touch man/sdiff.1 +# Fix installation of NLS files: +zcat $CWD/diffutils.mkdir_p.diff.gz | patch -p1 || exit 1 + CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ @@ -110,7 +113,7 @@ fi mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION cp -a \ - AUTHORS COPYING NEWS README THANKS TODO \ + AUTHORS COPYING* NEWS README* THANKS TODO \ $PKG/usr/doc/$PKGNAM-$VERSION # If there's a ChangeLog, installing at least part of the recent history # is useful, but don't let it get totally out of control: diff --git a/source/ap/diffutils/diffutils.mkdir_p.diff b/source/ap/diffutils/diffutils.mkdir_p.diff new file mode 100644 index 00000000..4ebaf69b --- /dev/null +++ b/source/ap/diffutils/diffutils.mkdir_p.diff @@ -0,0 +1,11 @@ +--- ./po/Makefile.in.in.orig 2013-03-23 09:51:10.000000000 -0500 ++++ ./po/Makefile.in.in 2013-10-03 16:25:59.778992814 -0500 +@@ -42,7 +42,7 @@ + mkinstalldirs = $(SHELL) @install_sh@ -d + install_sh = $(SHELL) @install_sh@ + MKDIR_P = @MKDIR_P@ +-mkdir_p = @mkdir_p@ ++mkdir_p = @MKDIR_P@ + + GMSGFMT_ = @GMSGFMT@ + GMSGFMT_no = @GMSGFMT@ diff --git a/source/ap/dmapi/dmapi.SlackBuild b/source/ap/dmapi/dmapi.SlackBuild index 6efdfa77..63de8c27 100755 --- a/source/ap/dmapi/dmapi.SlackBuild +++ b/source/ap/dmapi/dmapi.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2008, 2009, 2010, 2013 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -21,7 +21,7 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -VERSION=2.2.10 +VERSION=2.2.12 BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: @@ -59,9 +59,6 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# Add DESTDIR support and improve docs install location: -zcat $CWD/dmapi.destdir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 - # Make sure you have the same version of autoconf as the # developers did... ;-) autoconf @@ -101,6 +98,7 @@ if [ -f $PKG/lib${LIBDIRSUFFIX}/libdm.so.0 ]; then ( cd $PKG/usr/lib${LIBDIRSUFFIX} ; rm -f libdm.so ; ln -sf /lib${LIBDIRSUFFIX}/libdm.so.0 libdm.so ) else exit 1 + echo "and fix yer script!!!" # and fix yer script!!! fi # Fix shared library perms: diff --git a/source/ap/dmapi/dmapi.destdir.diff b/source/ap/dmapi/dmapi.destdir.diff deleted file mode 100644 index 829d14e7..00000000 --- a/source/ap/dmapi/dmapi.destdir.diff +++ /dev/null @@ -1,36 +0,0 @@ ---- ./include/buildmacros.orig 2007-01-22 23:56:41.000000000 -0600 -+++ ./include/buildmacros 2008-04-01 00:04:57.000000000 -0500 -@@ -26,7 +26,7 @@ - $(LFILES:.l=.o) \ - $(YFILES:%.y=%.tab.o) - --INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP) -+INSTALL = $(TOPDIR)/install-sh - - SHELL = /bin/sh - IMAGES_DIR = $(TOPDIR)/all-images ---- ./include/builddefs.in.orig 2007-05-28 02:00:24.000000000 -0500 -+++ ./include/builddefs.in 2008-04-01 00:04:57.000000000 -0500 -@@ -23,14 +23,14 @@ - PKG_VERSION = @pkg_version@ - PKG_PLATFORM = @pkg_platform@ - PKG_DISTRIBUTION= @pkg_distribution@ --PKG_BIN_DIR = @bindir@ --PKG_SBIN_DIR = @sbindir@ --PKG_LIB_DIR = @libdir@@libdirsuffix@ --PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@ --PKG_INC_DIR = @includedir@/xfs --PKG_MAN_DIR = @mandir@ --PKG_DOC_DIR = @datadir@/doc/@pkg_name@ --PKG_LOCALE_DIR = @datadir@/locale -+PKG_BIN_DIR = $(DESTDIR)@bindir@ -+PKG_SBIN_DIR = $(DESTDIR)@sbindir@ -+PKG_LIB_DIR = $(DESTDIR)@libdir@@libdirsuffix@ -+PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@@libdirsuffix@ -+PKG_INC_DIR = $(DESTDIR)@includedir@/xfs -+PKG_MAN_DIR = $(DESTDIR)@mandir@ -+PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@ -+PKG_LOCALE_DIR = $(DESTDIR)@datadir@/locale - - CC = @cc@ - AWK = @awk@ diff --git a/source/ap/ghostscript/cidfmap b/source/ap/ghostscript/cidfmap index 0303f66f..28d69ad8 100644 --- a/source/ap/ghostscript/cidfmap +++ b/source/ap/ghostscript/cidfmap @@ -29,17 +29,17 @@ %% cidfmap.zh_CN (simplified Chinese ; zh_CN) -%% This font will produce better results than the wqy-zenhei.ttf that we use +%% This font will produce better results than the wqy-zenhei.ttc that we use %% to get out-of-the-box output. %% If you install it, uncomment the line below and comment the one below that. %/BousungEG-Light-GB << /FileType /TrueType /Path (uming.ttf) /CSI [(GB1) 4] >> ; -/BousungEG-Light-GB << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(GB1) 4] >> ; -%% This font will produce better results than the wqy-zenhei.ttf that we use +/BousungEG-Light-GB << /FileType /TrueType /Path (wqy-zenhei.ttc) /CSI [(GB1) 4] >> ; +%% This font will produce better results than the wqy-zenhei.ttc that we use %% to get out-of-the-box output. %% If you install it, uncomment the line below and comment the one below that. %/GBZenKai-Medium << /FileType /TrueType /Path (ukai.ttf) /CSI [(GB1) 4] >> ; -/GBZenKai-Medium << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(GB1) 4] >> ; -/MSungGBK-Light << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(GB1) 4] >> ; +/GBZenKai-Medium << /FileType /TrueType /Path (wqy-zenhei.ttc) /CSI [(GB1) 4] >> ; +/MSungGBK-Light << /FileType /TrueType /Path (wqy-zenhei.ttc) /CSI [(GB1) 4] >> ; /MSung-Light /MSungGBK-Light ; /MSung-Medium /GBZenKai-Medium ; /MHei-Medium /BousungEG-Light-GB ; @@ -57,7 +57,7 @@ %% interference (or comment the whole block out). %/BousungEG-Light-GB << /FileType /TrueType /Path (uming.ttf) /CSI [(CNS1) 4] >> ; %/ZenKai-Medium << /FileType /TrueType /Path (ukai.ttf) /CSI [(CNS1) 4] >> ; -%/ShanHeiSun-Light << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(CNS1) 4] >> ; +%/ShanHeiSun-Light << /FileType /TrueType /Path (wqy-zenhei.ttc) /CSI [(CNS1) 4] >> ; %/STSong-Light /BousungEG-Light-GB ; %/STKaiti-Regular /ZenKai-Medium-GB ; %/STFangsong-Light /BousungEG-Light ; diff --git a/source/ap/ghostscript/ghostscript.SlackBuild b/source/ap/ghostscript/ghostscript.SlackBuild index 4afef964..4ce0d69e 100755 --- a/source/ap/ghostscript/ghostscript.SlackBuild +++ b/source/ap/ghostscript/ghostscript.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,8 +22,11 @@ PKGNAM=ghostscript -VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +if [ -r gnu-ghostscript-*.tar.xz ]; then + SRCPREFIX="gnu-" +fi +VERSION=${VERSION:-$(echo $SRCPREFIX$PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -56,12 +59,18 @@ else fi cd $TMP -rm -rf ${PKGNAM}-${VERSION} -tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1 -cd ${PKGNAM}-$VERSION +rm -rf ${SRCPREFIX}${PKGNAM}-${VERSION} +tar xvf $CWD/${SRCPREFIX}${PKGNAM}-$VERSION.tar.xz || exit 1 +cd ${SRCPREFIX}${PKGNAM}-$VERSION + +# Use sprintf from Trio library as gs_printf to fix problems with +# documents using locales where commas are used as decimals: +zcat $CWD/ghostscript.gs_sprintf.diff.gz | patch -p1 --verbose || exit 1 -## Regenerate ./configure (if patched): -#sh autogen.sh +# Regenerate ./configure. Needed if patched, or to prevent libtool mismatch. +autoreconf --force --install +( cd jbig2dec ; autoreconf --force --install ) +( cd ijs ; autoreconf --force --install ) # Make sure ownerships and permissions are sane: chown -R root:root . @@ -73,9 +82,6 @@ find . \ # Build/install IJS: ( cd ijs - if [ ! -r configure ]; then - sh autogen.sh - fi CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ @@ -118,9 +124,10 @@ make soinstall DESTDIR=$PKG || exit 1 # Replace the default cidfmap with one containing additional # support for CJK printing: -if [ -r $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap ]; then - mv $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.default.ghostscript-${VERSION} - zcat $CWD/cidfmap.gz > $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.new +if [ -r $PKG/usr/share/ghostscript/*.*/Resource/Init/cidfmap ]; then + SHARE_VERSION=$(echo $PKG/usr/share/ghostscript/*.*/Resource/Init/cidfmap | rev | cut -f 4 -d / | rev) + mv $PKG/usr/share/ghostscript/${SHARE_VERSION}/Resource/Init/cidfmap $PKG/usr/share/ghostscript/${SHARE_VERSION}/Resource/Init/cidfmap.default.ghostscript-${VERSION} + zcat $CWD/cidfmap.gz > $PKG/usr/share/ghostscript/${SHARE_VERSION}/Resource/Init/cidfmap.new fi # Many programs expect to find this filter with the old name: @@ -163,7 +170,7 @@ fi mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION ( cd doc cp -a \ - COPYING ../LICENSE README \ + AUTHORS COPYING* ../LICENSE* README* \ $PKG/usr/doc/${PKGNAM}-$VERSION ) ( cd $PKG/usr/doc/${PKGNAM}-$VERSION diff --git a/source/ap/ghostscript/ghostscript.gs_sprintf.diff b/source/ap/ghostscript/ghostscript.gs_sprintf.diff new file mode 100644 index 00000000..5e123e13 --- /dev/null +++ b/source/ap/ghostscript/ghostscript.gs_sprintf.diff @@ -0,0 +1,28431 @@ +diff -up ghostscript-9.07/base/fapiufst.c.gs_sprintf ghostscript-9.07/base/fapiufst.c +--- ghostscript-9.07/base/fapiufst.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/fapiufst.c 2013-05-09 17:02:39.056447042 +0100 +@@ -699,7 +699,7 @@ pack_long(LPUB8 * p, UL32 v) + static inline void + pack_float(LPUB8 * p, float v) + { +- sprintf((char *)(*p), "%f", v); ++ gs_sprintf((char *)(*p), "%f", v); + *p += strlen((const char *)*p) + 1; + } + +diff -up ghostscript-9.07/base/gdev3b1.c.gs_sprintf ghostscript-9.07/base/gdev3b1.c +--- ghostscript-9.07/base/gdev3b1.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdev3b1.c 2013-05-09 17:02:39.057447046 +0100 +@@ -538,7 +538,7 @@ att3b1_do_output_page(gx_device *dev, in + } + + ut.ut_num = WTXTSLK1; +- sprintf(ut.ut_text, ++ gs_sprintf(ut.ut_text, + "%s %d, top right (%d,%d), size (%d,%d), press '?' for help.", + flush ? "Showpage" : "Copypage", att3b1dev->page_num, xorigin, yorigin, + att3b1dev->width, att3b1dev->height); +diff -up ghostscript-9.07/base/gdev8510.c.gs_sprintf ghostscript-9.07/base/gdev8510.c +--- ghostscript-9.07/base/gdev8510.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdev8510.c 2013-05-09 17:02:39.058447051 +0100 +@@ -129,7 +129,7 @@ m8510_output_run(gx_device_printer *pdev + /* Transfer the line of data. */ + count = out_end - out; + if (count) { +- sprintf(tmp, "\033g%03d", count/8); ++ gs_sprintf(tmp, "\033g%03d", count/8); + fwrite(tmp, 1, 5, prn_stream); + fwrite(out, 1, count, prn_stream); + fwrite("\r", 1, 1, prn_stream); +diff -up ghostscript-9.07/base/gdevccr.c.gs_sprintf ghostscript-9.07/base/gdevccr.c +--- ghostscript-9.07/base/gdevccr.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevccr.c 2013-05-09 17:02:39.059447055 +0100 +@@ -207,9 +207,9 @@ static int alloc_rb( gs_memory_t *mem, c + int r; + for(r=0; rfname, i); ++ gs_sprintf(spotname, "%ss%d", pdevn->fname, i); + spot_file[i] = gp_fopen(spotname, "wb"); + if (spot_file[i] == NULL) { + code = gs_error_VMerror; +@@ -2117,7 +2117,7 @@ spotcmyk_print_page(gx_device_printer * + return code; + } + for(i = 0; i < nspot; i++) { +- sprintf(spotname, "%ss%d", pdevn->fname, i); ++ gs_sprintf(spotname, "%ss%d", pdevn->fname, i); + code = devn_write_pcx_file(pdev, spotname, 1, bpc, linelength[i]); + if (code < 0) + return code; +@@ -2451,7 +2451,7 @@ devn_write_pcx_file(gx_device_printer * + in = gp_fopen(filename, "rb"); + if (!in) + return_error(gs_error_invalidfileaccess); +- sprintf(outname, "%s.pcx", filename); ++ gs_sprintf(outname, "%s.pcx", filename); + out = gp_fopen(outname, "wb"); + if (!out) { + fclose(in); +diff -up ghostscript-9.07/base/gdevdjet.c.gs_sprintf ghostscript-9.07/base/gdevdjet.c +--- ghostscript-9.07/base/gdevdjet.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevdjet.c 2013-05-09 17:02:39.061447064 +0100 +@@ -323,9 +323,9 @@ hpjet_make_init(gx_device_printer *pdev, + else if (dev->MediaPosition_set && dev->MediaPosition >= 0) + paper_source = dev->MediaPosition; + if (paper_source >= 0) +- sprintf(buf, "%s\033&l%dH", str, paper_source); ++ gs_sprintf(buf, "%s\033&l%dH", str, paper_source); + else +- sprintf(buf, "%s", str); ++ gs_sprintf(buf, "%s", str); + } + + /* The DeskJet can compress (mode 2) */ +@@ -361,7 +361,7 @@ fs600_print_page_copies(gx_device_printe + char base_init[60]; + char init[80]; + +- sprintf(base_init, "\033*r0F\033&u%dD", dots_per_inch); ++ gs_sprintf(base_init, "\033*r0F\033&u%dD", dots_per_inch); + hpjet_make_init(pdev, init, base_init); + return dljet_mono_print_page_copies(pdev, prn_stream, num_copies, + dots_per_inch, PCL_FS600_FEATURES, +@@ -425,7 +425,7 @@ ljet3d_print_page_copies(gx_device_print + bool tumble=dev->Tumble; + + hpjet_make_init(pdev, init, "\033&l-180u36Z\033*r0F"); +- sprintf(even_init, "\033&l180u36Z\033*r0F"); ++ gs_sprintf(even_init, "\033&l180u36Z\033*r0F"); + return dljet_mono_print_page_copies(pdev, prn_stream, num_copies, + 300, PCL_LJ3D_FEATURES, init, even_init, tumble); + } +@@ -440,7 +440,7 @@ ljet4_print_page_copies(gx_device_printe + char base_init[60]; + char init[80]; + +- sprintf(base_init, "\033&l-180u36Z\033*r0F\033&u%dD", dots_per_inch); ++ gs_sprintf(base_init, "\033&l-180u36Z\033*r0F\033&u%dD", dots_per_inch); + hpjet_make_init(pdev, init, base_init); + + return dljet_mono_print_page_copies(pdev, prn_stream, num_copies, +@@ -472,9 +472,9 @@ ljet4d_print_page_copies(gx_device_print + in duplex mode we set this parameters for each odd page + (paper tray is set by "hpjet_make_init") + */ +- sprintf(base_init, "\033&l-180u36Z\033*r0F\033&u%dD", dots_per_inch); ++ gs_sprintf(base_init, "\033&l-180u36Z\033*r0F\033&u%dD", dots_per_inch); + hpjet_make_init(pdev, init, base_init); +- sprintf(even_init, "\033&l180u36Z\033*r0F\033&u%dD", dots_per_inch); ++ gs_sprintf(even_init, "\033&l180u36Z\033*r0F\033&u%dD", dots_per_inch); + return dljet_mono_print_page_copies(pdev, prn_stream, num_copies, + dots_per_inch, PCL_LJ4D_FEATURES, + init,even_init,tumble); +@@ -489,7 +489,7 @@ ljet4pjl_print_page_copies(gx_device_pri + { int dots_per_inch = (int)pdev->y_pixels_per_inch; + char real_init[60]; + +- sprintf(real_init, "\033&l-180u36Z\033*r0F\033&u%dD", dots_per_inch); ++ gs_sprintf(real_init, "\033&l-180u36Z\033*r0F\033&u%dD", dots_per_inch); + return dljet_mono_print_page_copies(pdev, prn_stream, num_copies, + dots_per_inch, PCL_LJ4PJL_FEATURES, + real_init, real_init, false); +diff -up ghostscript-9.07/base/gdevijs.c.gs_sprintf ghostscript-9.07/base/gdevijs.c +--- ghostscript-9.07/base/gdevijs.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevijs.c 2013-05-09 17:02:39.063447072 +0100 +@@ -674,7 +674,7 @@ gsijs_set_margin_params(gx_device_ijs *i + } + + if (code == 0) { +- sprintf (buf, "%gx%g", ijsdev->MediaSize[0] * (1.0 / 72), ++ gs_sprintf (buf, "%gx%g", ijsdev->MediaSize[0] * (1.0 / 72), + ijsdev->MediaSize[1] * (1.0 / 72)); + code = ijs_client_set_param(ijsdev->ctx, 0, "PaperSize", + buf, strlen(buf)); +@@ -715,7 +715,7 @@ gsijs_set_margin_params(gx_device_ijs *i + m[1] = ijsdev->MediaSize[1] * (1.0 / 72) - + printable_top - printable_height; + gx_device_set_margins((gx_device *)ijsdev, m, true); +- sprintf (buf, "%gx%g", printable_left, printable_top); ++ gs_sprintf (buf, "%gx%g", printable_left, printable_top); + code = ijs_client_set_param(ijsdev->ctx, 0, "TopLeft", + buf, strlen(buf)); + } +@@ -864,7 +864,7 @@ gsijs_open(gx_device *dev) + /* Note: dup() may not be portable to all interesting IJS + platforms. In that case, this branch should be #ifdef'ed out. + */ +- sprintf(buf, "%d", fd); ++ gs_sprintf(buf, "%d", fd); + ijs_client_set_param(ijsdev->ctx, 0, "OutputFD", buf, strlen(buf)); + close(fd); + } else { +@@ -1021,9 +1021,9 @@ gsijs_output_page(gx_device *dev, int nu + } + + /* Required page parameters */ +- sprintf(buf, "%d", n_chan); ++ gs_sprintf(buf, "%d", n_chan); + gsijs_client_set_param(ijsdev, "NumChan", buf); +- sprintf(buf, "%d", ijsdev->BitsPerSample); ++ gs_sprintf(buf, "%d", ijsdev->BitsPerSample); + gsijs_client_set_param(ijsdev, "BitsPerSample", buf); + + /* This needs to become more sophisticated for DeviceN. */ +@@ -1031,12 +1031,12 @@ gsijs_output_page(gx_device *dev, int nu + ((n_chan == 3) ? (krgb_mode ? ((k_bits == 1) ? "KRGB" : "KxRGB") : "DeviceRGB") : "DeviceGray")); + gsijs_client_set_param(ijsdev, "ColorSpace", buf); + +- sprintf(buf, "%d", ijs_width); ++ gs_sprintf(buf, "%d", ijs_width); + gsijs_client_set_param(ijsdev, "Width", buf); +- sprintf(buf, "%d", ijs_height); ++ gs_sprintf(buf, "%d", ijs_height); + gsijs_client_set_param(ijsdev, "Height", buf); + +- sprintf(buf, "%gx%g", xres, yres); ++ gs_sprintf(buf, "%gx%g", xres, yres); + gsijs_client_set_param(ijsdev, "Dpi", buf); + + #ifdef KRGB_DEBUG +diff -up ghostscript-9.07/base/gdevl31s.c.gs_sprintf ghostscript-9.07/base/gdevl31s.c +--- ghostscript-9.07/base/gdevl31s.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevl31s.c 2013-05-09 17:02:39.063447072 +0100 +@@ -184,9 +184,9 @@ lj3100sw_print_page_copies(gx_device_pri + if (gdev_prn_file_is_new(pdev)) { + lj3100sw_output_section_header(prn_stream, 1, 0, 0); + lj3100sw_output_repeated_data_bytes(prn_stream, buffer, &ptr, 0x1b, 12); +- ptr += sprintf(ptr, "\r\nBD"); ++ ptr += gs_sprintf(ptr, "\r\nBD"); + lj3100sw_output_repeated_data_bytes(prn_stream, buffer, &ptr, 0, 5520); +- ptr += sprintf(ptr, "%s\r\n%s %d\r\n%s %d\r\n%s %d\r\n%s %d\r\n%s %d\r\n%s %d\r\n", ++ ptr += gs_sprintf(ptr, "%s\r\n%s %d\r\n%s %d\r\n%s %d\r\n%s %d\r\n%s %d\r\n%s %d\r\n", + "NJ", + "PQ", -1, + "RE", high_resolution ? 6 : 2, +@@ -198,7 +198,7 @@ lj3100sw_print_page_copies(gx_device_pri + } + + lj3100sw_output_section_header(prn_stream, 3, ppdev->NumCopies, 0); +- ptr += sprintf(ptr, "%s %d\r\n%s\r\n", ++ ptr += gs_sprintf(ptr, "%s %d\r\n%s\r\n", + "CM", 1, + "PD"); + *ptr++ = 0; +diff -up ghostscript-9.07/base/gdevp14.c.gs_sprintf ghostscript-9.07/base/gdevp14.c +--- ghostscript-9.07/base/gdevp14.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevp14.c 2013-05-09 17:02:39.065447081 +0100 +@@ -6427,7 +6427,7 @@ get_param_compressed_color_list_elem(pdf + pkeyname_list_elem->next = *pkeyname_list; + pkeyname_list_elem->key_name = keyname_buf; + *pkeyname_list = pkeyname_list_elem; +- sprintf(keyname_buf, "%s_%d", keyname, i); ++ gs_sprintf(keyname_buf, "%s_%d", keyname, i); + get_param_compressed_color_list_elem(pdev, plist, + pcomp_list->u.sub_level_ptrs[i], keyname_buf, + pkeyname_list); +@@ -6498,7 +6498,7 @@ put_param_compressed_color_list_elem(gx_ + char buff[50]; + compressed_color_list_t * sub_list_ptr; + +- sprintf(buff, "%s_%d", keyname, i); ++ gs_sprintf(buff, "%s_%d", keyname, i); + put_param_compressed_color_list_elem(pdev, plist, + &sub_list_ptr, buff, num_comps - 1); + pcomp_list->u.sub_level_ptrs[i] = sub_list_ptr; +@@ -6560,7 +6560,7 @@ get_param_spot_color_names(pdf14_clist_d + pkeyname_list_elem->next = *pkeyname_list; + pkeyname_list_elem->key_name = keyname_buf; + *pkeyname_list = pkeyname_list_elem; +- sprintf(keyname_buf, "PDF14SpotName_%d", i); ++ gs_sprintf(keyname_buf, "PDF14SpotName_%d", i); + str.size = separations->names[i].size; + str.data = separations->names[i].data; + str.persistent = false; +@@ -6596,7 +6596,7 @@ put_param_pdf14_spot_names(gx_device * p + char buff[20]; + byte * sep_name; + +- sprintf(buff, "PDF14SpotName_%d", i); ++ gs_sprintf(buff, "PDF14SpotName_%d", i); + code = param_read_string(plist, buff, &str); + switch (code) { + default: +diff -up ghostscript-9.07/base/gdevpdfb.c.gs_sprintf ghostscript-9.07/base/gdevpdfb.c +--- ghostscript-9.07/base/gdevpdfb.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfb.c 2013-05-09 17:02:39.066447085 +0100 +@@ -588,7 +588,7 @@ gdev_pdf_strip_tile_rectangle(gx_device + if (image_id) { + char buf[MAX_REF_CHARS + 6 + 1]; /* +6 for /R# Do\n */ + +- sprintf(buf, "/R%ld Do\n", image_id); ++ gs_sprintf(buf, "/R%ld Do\n", image_id); + pprintd1(s, "%d>>stream\n", strlen(buf)); + if (pdev->PDFA != 0) + pprints1(s, "%s\nendstream\n", buf); +diff -up ghostscript-9.07/base/gdevpdf.c.gs_sprintf ghostscript-9.07/base/gdevpdf.c +--- ghostscript-9.07/base/gdevpdf.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdf.c 2013-05-09 17:02:39.067447089 +0100 +@@ -301,7 +301,7 @@ pdf_initialize_ids(gx_device_pdf * pdev) + timeoffset = any_abs(timeoffset) / 60; + tms = *localtime(&t); + +- sprintf(buf, "(D:%04d%02d%02d%02d%02d%02d%c%02d\'%02d\')", ++ gs_sprintf(buf, "(D:%04d%02d%02d%02d%02d%02d%c%02d\'%02d\')", + tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday, + tms.tm_hour, tms.tm_min, tms.tm_sec, + timesign, timeoffset / 60, timeoffset % 60); +@@ -1277,7 +1277,7 @@ static int write_xref_section(gx_device_ + * chances of needing to write white space to pad the file out. + */ + if (!pdev->Linearise) { +- sprintf(str, "%010"PRId64" 00000 n \n", pos); ++ gs_sprintf(str, "%010"PRId64" 00000 n \n", pos); + stream_puts(pdev->strm, str); + } + if (Offsets) +@@ -1310,7 +1310,7 @@ rewrite_object(gx_device_pdf *const pdev + code = fread(&c, 1, 1, linear_params->sfile); + read++; + } while (c != '\n' && code > 0); +- sprintf(Scratch, "%d 0 obj\n", pdev->ResourceUsage[object].NewObjectNumber); ++ gs_sprintf(Scratch, "%d 0 obj\n", pdev->ResourceUsage[object].NewObjectNumber); + fwrite(Scratch, strlen(Scratch), 1, linear_params->Lin_File.file); + + code = fread(&c, 1, 1, linear_params->sfile); +@@ -1359,7 +1359,7 @@ rewrite_object(gx_device_pdf *const pdev + target++; + sscanf(target, "%d 0 R", &ID); + fwrite(source, target - source, 1, linear_params->Lin_File.file); +- sprintf(Buf, "%d 0 R", pdev->ResourceUsage[ID].NewObjectNumber); ++ gs_sprintf(Buf, "%d 0 R", pdev->ResourceUsage[ID].NewObjectNumber); + fwrite(Buf, strlen(Buf), 1, linear_params->Lin_File.file); + source = next; + } else { +@@ -1544,7 +1544,7 @@ static int pdf_linearise(gx_device_pdf * + } + #endif + /* Linearisation. Part 1, file header */ +- sprintf(Header, "%%PDF-%d.%d\n", level / 10, level % 10); ++ gs_sprintf(Header, "%%PDF-%d.%d\n", level / 10, level % 10); + fwrite(Header, strlen(Header), 1, linear_params->Lin_File.file); + if (pdev->binary_ok) + fwrite(Binary, strlen(Binary), 1, linear_params->Lin_File.file); +@@ -1556,16 +1556,16 @@ static int pdf_linearise(gx_device_pdf * + + /* Linearisation. Part 2, the Linearisation dictioanry */ + linear_params->LDictOffset = gp_ftell_64(linear_params->Lin_File.file); +- sprintf(LDict, "%d 0 obj\n<< \n", ++ gs_sprintf(LDict, "%d 0 obj\n<< \n", + LDictObj); + fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file); + + /* First page cross-reference table here (Part 3) */ + linear_params->FirstxrefOffset = gp_ftell_64(linear_params->Lin_File.file); +- sprintf(Header, "xref\n%d %d\n", LDictObj, Part1To6 - LDictObj + 1); /* +1 for the primary hint stream */ ++ gs_sprintf(Header, "xref\n%d %d\n", LDictObj, Part1To6 - LDictObj + 1); /* +1 for the primary hint stream */ + fwrite(Header, strlen(Header), 1, linear_params->Lin_File.file); + +- sprintf(Header, "0000000000 00000 n \n"); ++ gs_sprintf(Header, "0000000000 00000 n \n"); + + for (i = LDictObj;i <= linear_params->LastResource + 2; i++) { + fwrite(Header, 20, 1, linear_params->Lin_File.file); +@@ -1575,7 +1575,7 @@ static int pdf_linearise(gx_device_pdf * + * +1 for the linearisation dict and +1 for the primary hint stream. + */ + linear_params->FirsttrailerOffset = gp_ftell_64(linear_params->Lin_File.file); +- sprintf(LDict, "\ntrailer\n<>\nstartxref\r\n0\n%%%%EOF\n \n", ++ gs_sprintf(LDict, "\ntrailer\n<>\nstartxref\r\n0\n%%%%EOF\n \n", + linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, 0); + fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file); + +@@ -1685,7 +1685,7 @@ static int pdf_linearise(gx_device_pdf * + } + } + /* insert the primary hint stream */ +- sprintf(LDict, "%d 0 obj\n<>\nstream\n", HintStreamObj); ++ gs_sprintf(LDict, "%d 0 obj\n<>\nstream\n", HintStreamObj); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + + HintStreamStart = gp_ftell_64(linear_params->sfile); +@@ -1999,7 +1999,7 @@ static int pdf_linearise(gx_device_pdf * + flush_hint_stream(linear_params); + HintLength = gp_ftell_64(linear_params->sfile) - HintStreamStart; + +- sprintf(LDict, "\nendstream\nendobj\n"); ++ gs_sprintf(LDict, "\nendstream\nendobj\n"); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + /* Calculate the length of the primary hint stream */ + HintStreamLen = gp_ftell_64(linear_params->sfile) - pdev->ResourceUsage[HintStreamObj].LinearisedOffset; +@@ -2032,23 +2032,23 @@ static int pdf_linearise(gx_device_pdf * + + /* Now the file is long enough, write the xref */ + mainxref = gp_ftell_64(linear_params->sfile); +- sprintf(Header, "xref\n0 %d\n", LDictObj); ++ gs_sprintf(Header, "xref\n0 %d\n", LDictObj); + fwrite(Header, strlen(Header), 1, linear_params->sfile); + + linear_params->T = gp_ftell_64(linear_params->sfile) - 1; +- sprintf(Header, "0000000000 65535 f \n"); ++ gs_sprintf(Header, "0000000000 65535 f \n"); + fwrite(Header, strlen(Header), 1, linear_params->sfile); + + for (i = 1;i < LDictObj; i++) { + for (j = 0; j < pdev->ResourceUsageSize;j++) { + if (pdev->ResourceUsage[j].NewObjectNumber == i) { +- sprintf(Header, "%010ld 00000 n \n", pdev->ResourceUsage[j].LinearisedOffset + HintStreamLen); ++ gs_sprintf(Header, "%010ld 00000 n \n", pdev->ResourceUsage[j].LinearisedOffset + HintStreamLen); + fwrite(Header, 20, 1, linear_params->sfile); + } + } + } + +- sprintf(LDict, "trailer\n<>\nstartxref\n%ld\n%%%%EOF\n", ++ gs_sprintf(LDict, "trailer\n<>\nstartxref\n%ld\n%%%%EOF\n", + LDictObj, linear_params->FirstxrefOffset); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + +@@ -2062,32 +2062,32 @@ static int pdf_linearise(gx_device_pdf * + * versions. + */ + gp_fseek_64(linear_params->sfile, linear_params->LDictOffset, SEEK_SET); +- sprintf(LDict, "%d 0 obj\n<FileLength); ++ gs_sprintf(LDict, "%d 0 obj\n<FileLength); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + +- sprintf(LDict, "%ld", pdev->ResourceUsage[HintStreamObj].LinearisedOffset); ++ gs_sprintf(LDict, "%ld", pdev->ResourceUsage[HintStreamObj].LinearisedOffset); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); +- sprintf(LDict, " %ld]", HintStreamLen); ++ gs_sprintf(LDict, " %ld]", HintStreamLen); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + /* Implementation Note 180 in hte PDF Reference 1.7 says that Acrobat + * gets the 'E' value wrong. So its probably not important.... + */ +- sprintf(LDict, "/O %d/E %ld",pdev->ResourceUsage[pdev->pages[0].Page->id].NewObjectNumber, linear_params->E); ++ gs_sprintf(LDict, "/O %d/E %ld",pdev->ResourceUsage[pdev->pages[0].Page->id].NewObjectNumber, linear_params->E); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); +- sprintf(LDict, "/N %d/T %ld>>\nendobj\n", pdev->next_page, linear_params->T); ++ gs_sprintf(LDict, "/N %d/T %ld>>\nendobj\n", pdev->next_page, linear_params->T); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + + /* Return to the secondary xref and write it again filling + * in the missing offsets. + */ + gp_fseek_64(linear_params->sfile, linear_params->FirstxrefOffset, SEEK_SET); +- sprintf(Header, "xref\n%d %d\n", LDictObj, Part1To6 - LDictObj + 1); /* +1 for the primary hint stream */ ++ gs_sprintf(Header, "xref\n%d %d\n", LDictObj, Part1To6 - LDictObj + 1); /* +1 for the primary hint stream */ + fwrite(Header, strlen(Header), 1, linear_params->sfile); + + for (i = LDictObj;i <= linear_params->LastResource + 2; i++) { + for (j = 0; j < pdev->ResourceUsageSize;j++) { + if (pdev->ResourceUsage[j].NewObjectNumber == i) { +- sprintf(Header, "%010ld 00000 n \n", pdev->ResourceUsage[j].LinearisedOffset); ++ gs_sprintf(Header, "%010ld 00000 n \n", pdev->ResourceUsage[j].LinearisedOffset); + fwrite(Header, 20, 1, linear_params->sfile); + } + } +@@ -2097,14 +2097,14 @@ static int pdf_linearise(gx_device_pdf * + * in the missing values. + */ + code = gp_fseek_64(linear_params->sfile, linear_params->FirsttrailerOffset, SEEK_SET); +- sprintf(LDict, "\ntrailer\n<>\nstartxref\r\n0\n%%%%EOF\n", ++ gs_sprintf(LDict, "\ntrailer\n<>\nstartxref\r\n0\n%%%%EOF\n", + linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, (unsigned long)mainxref); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + + code = gp_fseek_64(linear_params->sfile, pdev->ResourceUsage[HintStreamObj].LinearisedOffset, SEEK_SET); +- sprintf(LDict, "%d 0 obj\n<sfile); +- sprintf(LDict, "\n/S %10ld>>\nstream\n", SharedHintOffset); ++ gs_sprintf(LDict, "\n/S %10ld>>\nstream\n", SharedHintOffset); + fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + + error: +@@ -2605,7 +2605,7 @@ pdf_close(gx_device * dev) + pprintld1(s, "/Encrypt %ld 0 R ", Encrypt_id); + } + stream_puts(s, ">>\n"); +- sprintf(xref_str, "startxref\n%"PRId64"\n%%%%EOF\n", xref); ++ gs_sprintf(xref_str, "startxref\n%"PRId64"\n%%%%EOF\n", xref); + stream_puts(s, xref_str); + } + } +diff -up ghostscript-9.07/base/gdevpdfe.c.gs_sprintf ghostscript-9.07/base/gdevpdfe.c +--- ghostscript-9.07/base/gdevpdfe.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfe.c 2013-05-09 17:02:39.067447089 +0100 +@@ -205,7 +205,7 @@ pdf_xmp_time(char *buf, int buf_length) + + time(&t); + tms = *localtime(&t); +- sprintf(buf1, ++ gs_sprintf(buf1, + "%04d-%02d-%02d", + tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday); + strncpy(buf, buf1, buf_length); +@@ -860,7 +860,7 @@ pdf_document_metadata(gx_device_pdf *pde + code = COS_WRITE_OBJECT(pres->object, pdev, resourceNone); + if (code < 0) + return code; +- sprintf(buf, "%ld 0 R", pres->object->id); ++ gs_sprintf(buf, "%ld 0 R", pres->object->id); + pdf_record_usage(pdev, pres->object->id, resource_usage_part9_structure); + + code = cos_dict_put_c_key_object(pdev->Catalog, "/Metadata", pres->object); +diff -up ghostscript-9.07/base/gdevpdfg.c.gs_sprintf ghostscript-9.07/base/gdevpdfg.c +--- ghostscript-9.07/base/gdevpdfg.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfg.c 2013-05-09 17:02:39.068447094 +0100 +@@ -674,7 +674,7 @@ pdf_write_transfer_map(gx_device_pdf *pd + gs_function_free(pfn, false, mem); + if (code < 0) + return code; +- sprintf(ids, "%s%s%ld 0 R", key, (key[0] && key[0] != ' ' ? " " : ""), id); ++ gs_sprintf(ids, "%s%s%ld 0 R", key, (key[0] && key[0] != ' ' ? " " : ""), id); + return 0; + } + static int +@@ -1255,7 +1255,7 @@ pdf_update_halftone(gx_device_pdf *pdev, + } + if (code < 0) + return code; +- sprintf(hts, "%ld 0 R", id); ++ gs_sprintf(hts, "%ld 0 R", id); + pdev->halftone_id = pis->dev_ht->id; + return code; + } +@@ -1392,7 +1392,7 @@ pdf_update_alpha(gx_device_pdf *pdev, co + if (pis->soft_mask_id == 0) + strcpy(buf, "/None"); + else +- sprintf(buf, "%ld 0 R", pis->soft_mask_id); ++ gs_sprintf(buf, "%ld 0 R", pis->soft_mask_id); + code = pdf_open_gstate(pdev, ppres); + if (code < 0) + return code; +@@ -1548,7 +1548,7 @@ pdf_prepare_drawing(gx_device_pdf *pdev, + code = pdf_open_gstate(pdev, ppres); + if (code < 0) + return code; +- sprintf(buf, "[%d %d]", phase.x, phase.y); ++ gs_sprintf(buf, "[%d %d]", phase.x, phase.y); + code = cos_dict_put_string_copy(resource_dict(*ppres), "/HTP", buf); + if (code < 0) + return code; +diff -up ghostscript-9.07/base/gdevpdfi.c.gs_sprintf ghostscript-9.07/base/gdevpdfi.c +--- ghostscript-9.07/base/gdevpdfi.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfi.c 2013-05-09 17:02:39.068447094 +0100 +@@ -1122,7 +1122,7 @@ pdf_end_and_do_image(gx_device_pdf *pdev + if (pdev->image_mask_id != gs_no_id) { + char buf[20]; + +- sprintf(buf, "%ld 0 R", pdev->image_mask_id); ++ gs_sprintf(buf, "%ld 0 R", pdev->image_mask_id); + code = cos_dict_put_string_copy((cos_dict_t *)pres->object, + pdev->image_mask_is_SMask ? "/SMask" : "/Mask", buf); + if (code < 0) +diff -up ghostscript-9.07/base/gdevpdfm.c.gs_sprintf ghostscript-9.07/base/gdevpdfm.c +--- ghostscript-9.07/base/gdevpdfm.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfm.c 2013-05-09 17:02:39.069447098 +0100 +@@ -153,9 +153,9 @@ pdfmark_make_dest(char dstr[MAX_DEST_STR + else if (pdfmark_find_key("/Action", pairs, count, &action) && + pdf_key_eq(&action, "/GoToR") + ) +- sprintf(dstr, "[%d ", page - 1); ++ gs_sprintf(dstr, "[%d ", page - 1); + else +- sprintf(dstr, "[%ld 0 R ", pdf_page_id(pdev, page)); ++ gs_sprintf(dstr, "[%ld 0 R ", pdf_page_id(pdev, page)); + len = strlen(dstr); + if (len + view_string.size > MAX_DEST_STRING) + return_error(gs_error_limitcheck); +@@ -697,7 +697,7 @@ pdfmark_put_ao_pairs(gx_device_pdf * pde + char dstr[1 + (sizeof(long) * 8 / 3 + 1) + 25 + 1]; + long page_id = pdf_page_id(pdev, pdev->next_page + 1); + +- sprintf(dstr, "[%ld 0 R /XYZ null null null]", page_id); ++ gs_sprintf(dstr, "[%ld 0 R /XYZ null null null]", page_id); + cos_dict_put_c_key_string(pcd, "/Dest", (const unsigned char*) dstr, + strlen(dstr)); + } +@@ -1470,7 +1470,7 @@ pdfmark_PS(gx_device_pdf * pdev, gs_para + if (level1_id != gs_no_id) { + char r[MAX_DEST_STRING]; + +- sprintf(r, "%ld 0 R", level1_id); ++ gs_sprintf(r, "%ld 0 R", level1_id); + code = cos_dict_put_c_key_string(cos_stream_dict(pcs), "/Level1", + (byte *)r, strlen(r)); + if (code < 0) +diff -up ghostscript-9.07/base/gdevpdfo.c.gs_sprintf ghostscript-9.07/base/gdevpdfo.c +--- ghostscript-9.07/base/gdevpdfo.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfo.c 2013-05-09 17:02:39.069447098 +0100 +@@ -700,7 +700,7 @@ cos_array_add_int(cos_array_t *pca, int + char str[sizeof(int) * 8 / 3 + 3]; /* sign, rounding, 0 terminator */ + cos_value_t v; + +- sprintf(str, "%d", i); ++ gs_sprintf(str, "%d", i); + return cos_array_add(pca, cos_string_value(&v, (byte *)str, strlen(str))); + } + int +@@ -1081,7 +1081,7 @@ cos_dict_put_c_key_int(cos_dict_t *pcd, + { + char str[sizeof(int) * 8 / 3 + 3]; /* sign, rounding, 0 terminator */ + +- sprintf(str, "%d", value); ++ gs_sprintf(str, "%d", value); + return cos_dict_put_c_key_string(pcd, key, (byte *)str, strlen(str)); + } + int +diff -up ghostscript-9.07/base/gdevpdfr.c.gs_sprintf ghostscript-9.07/base/gdevpdfr.c +--- ghostscript-9.07/base/gdevpdfr.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfr.c 2013-05-09 17:02:39.070447102 +0100 +@@ -140,7 +140,7 @@ pdf_refer_named(gx_device_pdf * pdev, co + } + if (page_number <= 0) + return code; +- sprintf(page_name_chars, "{Page%d}", page_number); ++ gs_sprintf(page_name_chars, "{Page%d}", page_number); + param_string_from_string(pnstr, page_name_chars); + pname = &pnstr; + code = pdf_find_named(pdev, pname, ppco); +@@ -452,7 +452,7 @@ pdf_replace_names(gx_device_pdf * pdev, + + size += sname - scan; + if (pco) { +- sprintf(ref, " %ld 0 R ", pco->id); ++ gs_sprintf(ref, " %ld 0 R ", pco->id); + size += strlen(ref); + } + scan = next; +@@ -480,7 +480,7 @@ pdf_replace_names(gx_device_pdf * pdev, + memcpy(sto, scan, copy); + sto += copy; + if (pco) { +- sprintf(ref, " %ld 0 R ", pco->id); ++ gs_sprintf(ref, " %ld 0 R ", pco->id); + rlen = strlen(ref); + memcpy(sto, ref, rlen); + sto += rlen; +diff -up ghostscript-9.07/base/gdevpdft.c.gs_sprintf ghostscript-9.07/base/gdevpdft.c +--- ghostscript-9.07/base/gdevpdft.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdft.c 2013-05-09 17:02:39.070447102 +0100 +@@ -63,7 +63,7 @@ pdf_make_soft_mask_dict(gx_device_pdf * + code = pdf_write_function(pdev, pparams->transfer_function, &id); + if (code < 0) + return code; +- sprintf(buf, " %ld 0 R", id); ++ gs_sprintf(buf, " %ld 0 R", id); + code = cos_dict_put_c_key_string(soft_mask_dict, "/TR", (const byte *)buf, strlen(buf)); + if (code < 0) + return code; +@@ -317,7 +317,7 @@ pdf_end_transparency_mask(gs_imager_stat + return 0; + /* We need to update the 'where_used' field, in case we substituted a resource */ + pres->where_used |= pdev->used_mask; +- sprintf(buf, "%ld 0 R", pdf_resource_id(pres)); ++ gs_sprintf(buf, "%ld 0 R", pdf_resource_id(pres)); + code = cos_dict_put_c_key_string((cos_dict_t *)pdev->pres_soft_mask_dict->object, + "/G", (const byte *)buf, strlen(buf)); + if (code < 0) +diff -up ghostscript-9.07/base/gdevpdfu.c.gs_sprintf ghostscript-9.07/base/gdevpdfu.c +--- ghostscript-9.07/base/gdevpdfu.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfu.c 2013-05-09 17:02:39.071447106 +0100 +@@ -341,14 +341,14 @@ static int write_tt_encodings(stream *s, + char Buffer[256]; + single_glyph_list_t *entry = (single_glyph_list_t *)&SingleGlyphList; + +- sprintf(Buffer, "/AdobeGlyphList mark\n"); ++ gs_sprintf(Buffer, "/AdobeGlyphList mark\n"); + stream_write(s, Buffer, strlen(Buffer)); + while (entry->Glyph) { +- sprintf(Buffer, "/%s 16#%04x\n", entry->Glyph, entry->Unicode); ++ gs_sprintf(Buffer, "/%s 16#%04x\n", entry->Glyph, entry->Unicode); + stream_write(s, Buffer, strlen(Buffer)); + entry++; + }; +- sprintf(Buffer, ".dicttomark readonly def\n"); ++ gs_sprintf(Buffer, ".dicttomark readonly def\n"); + stream_write(s, Buffer, strlen(Buffer)); + + index = 0; +@@ -425,24 +425,24 @@ int ps2write_dsc_header(gx_device_pdf * + pagecount++; + } + } +- sprintf(BBox, "%%%%BoundingBox: 0 0 %d %d\n", (int)urx, (int)ury); ++ gs_sprintf(BBox, "%%%%BoundingBox: 0 0 %d %d\n", (int)urx, (int)ury); + stream_write(s, (byte *)BBox, strlen(BBox)); +- sprintf(BBox, "%%%%HiResBoundingBox: 0 0 %.2f %.2f\n", urx, ury); ++ gs_sprintf(BBox, "%%%%HiResBoundingBox: 0 0 %.2f %.2f\n", urx, ury); + stream_write(s, (byte *)BBox, strlen(BBox)); + } + cre_date_time_len = pdf_get_docinfo_item(pdev, "/CreationDate", cre_date_time, sizeof(cre_date_time) - 1); + cre_date_time[cre_date_time_len] = 0; +- sprintf(BBox, "%%%%Creator: %s %d (%s)\n", gs_product, (int)gs_revision, ++ gs_sprintf(BBox, "%%%%Creator: %s %d (%s)\n", gs_product, (int)gs_revision, + pdev->dname); + stream_write(s, (byte *)BBox, strlen(BBox)); + stream_puts(s, "%%LanguageLevel: 2\n"); +- sprintf(BBox, "%%%%CreationDate: %s\n", cre_date_time); ++ gs_sprintf(BBox, "%%%%CreationDate: %s\n", cre_date_time); + stream_write(s, (byte *)BBox, strlen(BBox)); +- sprintf(BBox, "%%%%Pages: %d\n", pages); ++ gs_sprintf(BBox, "%%%%Pages: %d\n", pages); + stream_write(s, (byte *)BBox, strlen(BBox)); +- sprintf(BBox, "%%%%EndComments\n"); ++ gs_sprintf(BBox, "%%%%EndComments\n"); + stream_write(s, (byte *)BBox, strlen(BBox)); +- sprintf(BBox, "%%%%BeginProlog\n"); ++ gs_sprintf(BBox, "%%%%BeginProlog\n"); + stream_write(s, (byte *)BBox, strlen(BBox)); + if (pdev->params.CompressPages) { + /* When CompressEntireFile is true and ASCII85EncodePages is false, +@@ -493,7 +493,7 @@ pdfwrite_pdf_open_document(gx_device_pdf + pdev->CompressEntireFile = 0; + else { + stream_write(s, (byte *)"%!\r", 3); +- sprintf(BBox, "%%%%BoundingBox: 0 0 %d %d\n", width, height); ++ gs_sprintf(BBox, "%%%%BoundingBox: 0 0 %d %d\n", width, height); + stream_write(s, (byte *)BBox, strlen(BBox)); + if (pdev->params.CompressPages || pdev->CompressEntireFile) { + /* When CompressEntireFile is true and ASCII85EncodePages is false, +@@ -1340,7 +1340,7 @@ void + pdf_reserve_object_id(gx_device_pdf * pdev, pdf_resource_t *pres, long id) + { + pres->object->id = (id == 0 ? pdf_obj_ref(pdev) : id); +- sprintf(pres->rname, "R%ld", pres->object->id); ++ gs_sprintf(pres->rname, "R%ld", pres->object->id); + } + + /* Begin an aside (resource, annotation, ...). */ +@@ -1802,9 +1802,9 @@ void + pdf_store_default_Producer(char buf[PDF_MAX_PRODUCER]) + { + if ((gs_revision % 100) == 0) +- sprintf(buf, "(%s %1.1f)", gs_product, gs_revision / 100.0); ++ gs_sprintf(buf, "(%s %1.1f)", gs_product, gs_revision / 100.0); + else +- sprintf(buf, "(%s %1.2f)", gs_product, gs_revision / 100.0); ++ gs_sprintf(buf, "(%s %1.2f)", gs_product, gs_revision / 100.0); + } + + /* Write matrix values. */ +@@ -1851,7 +1851,7 @@ pdf_put_name_chars_1_2(stream *s, const + case '[': case ']': + case '{': case '}': + case '/': +- sprintf(hex, "#%02x", c); ++ gs_sprintf(hex, "#%02x", c); + stream_puts(s, hex); + break; + case 0: +diff -up ghostscript-9.07/base/gdevpdfv.c.gs_sprintf ghostscript-9.07/base/gdevpdfv.c +--- ghostscript-9.07/base/gdevpdfv.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdfv.c 2013-05-09 17:02:39.071447106 +0100 +@@ -157,7 +157,7 @@ pdf_pattern(gx_device_pdf *pdev, const g + + if (pcd_XObject == 0) + return_error(gs_error_VMerror); +- sprintf(key, "/R%ld", pcs_image->id); ++ gs_sprintf(key, "/R%ld", pcs_image->id); + /* This is non-obvious code. Previously we would put the image object (pcs_image) + * into the Resources dit. When we come to write out the Resources dict + * that code writes a reference (index 0 R) using the ID from the object. +@@ -201,7 +201,7 @@ pdf_pattern(gx_device_pdf *pdev, const g + { + char buf[MAX_REF_CHARS + 6 + 1]; /* +6 for /R# Do\n */ + +- sprintf(buf, "/R%ld Do\n", pcs_image->id); ++ gs_sprintf(buf, "/R%ld Do\n", pcs_image->id); + cos_stream_add_bytes(pcos, (const byte *)buf, strlen(buf)); + } + +@@ -596,7 +596,7 @@ pdf_put_linear_shading(cos_dict_t *pscd, + if (Extend[0] | Extend[1]) { + char extend_str[1 + 5 + 1 + 5 + 1 + 1]; /* [bool bool] */ + +- sprintf(extend_str, "[%s %s]", ++ gs_sprintf(extend_str, "[%s %s]", + (Extend[0] ? "true" : "false"), + (Extend[1] ? "true" : "false")); + code = cos_dict_put_c_key_string(pscd, "/Extend", +diff -up ghostscript-9.07/base/gdevpdtb.c.gs_sprintf ghostscript-9.07/base/gdevpdtb.c +--- ghostscript-9.07/base/gdevpdtb.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdtb.c 2013-05-09 17:02:39.072447111 +0100 +@@ -345,7 +345,7 @@ pdf_base_font_alloc(gx_device_pdf *pdev, + font_name.size -= SUBSET_PREFIX_SIZE; + } + } else { +- sprintf(fnbuf, ".F%lx", (ulong)copied); ++ gs_sprintf(fnbuf, ".F%lx", (ulong)copied); + font_name.data = (byte *)fnbuf; + font_name.size = strlen(fnbuf); + } +@@ -530,7 +530,7 @@ pdf_adjust_font_name(gx_device_pdf *pdev + size = i + 1; + } + /* Create a unique name. */ +- sprintf(suffix, "%c%lx", SUFFIX_CHAR, id); ++ gs_sprintf(suffix, "%c%lx", SUFFIX_CHAR, id); + suffix_size = strlen(suffix); + data = gs_resize_string(pdev->pdf_memory, chars, size, + size + suffix_size, +diff -up ghostscript-9.07/base/gdevpdtc.c.gs_sprintf ghostscript-9.07/base/gdevpdtc.c +--- ghostscript-9.07/base/gdevpdtc.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdtc.c 2013-05-09 17:02:39.072447111 +0100 +@@ -338,7 +338,7 @@ attach_cmap_resource(gx_device_pdf *pdev + strcpy(pdfont->u.type0.Encoding_name, + (pcmap->WMode ? "/Identity-V" : "/Identity-H")); + else +- sprintf(pdfont->u.type0.Encoding_name, "%ld 0 R", ++ gs_sprintf(pdfont->u.type0.Encoding_name, "%ld 0 R", + pdf_resource_id(pcmres)); + pdfont->u.type0.CMapName.data = chars; + pdfont->u.type0.CMapName.size = size; +@@ -349,7 +349,7 @@ attach_cmap_resource(gx_device_pdf *pdev + */ + return_error(gs_error_invalidfont); + +- sprintf(pdfont->u.type0.Encoding_name, "/%s", *pcmn); ++ gs_sprintf(pdfont->u.type0.Encoding_name, "/%s", *pcmn); + pdfont->u.type0.CMapName.data = (const byte *)*pcmn; + pdfont->u.type0.CMapName.size = strlen(*pcmn); + pdfont->u.type0.cmap_is_standard = true; +diff -up ghostscript-9.07/base/gdevpdtf.c.gs_sprintf ghostscript-9.07/base/gdevpdtf.c +--- ghostscript-9.07/base/gdevpdtf.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdtf.c 2013-05-09 17:02:39.072447111 +0100 +@@ -1152,7 +1152,7 @@ pdf_convert_truetype_font(gx_device_pdf + if (code < 0) + return 0; + pdfont->u.cidfont.CIDSystemInfo_id = pdev->IdentityCIDSystemInfo_id; +- sprintf(pdfont0->u.type0.Encoding_name, "%ld 0 R", pdf_resource_id(pdev->OneByteIdentityH)); ++ gs_sprintf(pdfont0->u.type0.Encoding_name, "%ld 0 R", pdf_resource_id(pdev->OneByteIdentityH)); + /* Move ToUnicode : */ + pdfont0->res_ToUnicode = pdfont->res_ToUnicode; pdfont->res_ToUnicode = 0; + pdfont0->cmap_ToUnicode = pdfont->cmap_ToUnicode; pdfont->cmap_ToUnicode = 0; +diff -up ghostscript-9.07/base/gdevpdti.c.gs_sprintf ghostscript-9.07/base/gdevpdti.c +--- ghostscript-9.07/base/gdevpdti.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdti.c 2013-05-09 17:02:39.073447115 +0100 +@@ -1178,7 +1178,7 @@ pdf_add_resource(gx_device_pdf *pdev, co + if (code < 0) + return code; + } +- sprintf(buf, "%ld 0 R\n", pres->object->id); ++ gs_sprintf(buf, "%ld 0 R\n", pres->object->id); + if (v != NULL) { + if (v->value_type != COS_VALUE_OBJECT && + v->value_type != COS_VALUE_RESOURCE) +diff -up ghostscript-9.07/base/gdevpdtt.c.gs_sprintf ghostscript-9.07/base/gdevpdtt.c +--- ghostscript-9.07/base/gdevpdtt.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdtt.c 2013-05-09 17:02:39.074447119 +0100 +@@ -2752,7 +2752,7 @@ pdf_choose_output_glyph_hame(gx_device_p + p = (byte *)gs_alloc_string(pdev->pdf_memory, gnstr->size, "pdf_text_set_cache"); + if (p == NULL) + return_error(gs_error_VMerror); +- sprintf(buf, "g%04x", (unsigned int)(glyph & 0xFFFF)); ++ gs_sprintf(buf, "g%04x", (unsigned int)(glyph & 0xFFFF)); + memcpy(p, buf, 5); + gnstr->data = p; + } +diff -up ghostscript-9.07/base/gdevpdtw.c.gs_sprintf ghostscript-9.07/base/gdevpdtw.c +--- ghostscript-9.07/base/gdevpdtw.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpdtw.c 2013-05-09 17:02:39.074447119 +0100 +@@ -925,7 +925,7 @@ pdf_write_OneByteIdentityH(gx_device_pdf + code = cos_dict_put_string_copy(pcd, "/CMapName", "/OneByteIdentityH"); + if (code < 0) + return code; +- sprintf(buf, "%ld 0 R", pdev->IdentityCIDSystemInfo_id); ++ gs_sprintf(buf, "%ld 0 R", pdev->IdentityCIDSystemInfo_id); + code = cos_dict_put_string_copy(pcd, "/CIDSystemInfo", buf); + if (code < 0) + return code; +diff -up ghostscript-9.07/base/gdevpng.c.gs_sprintf ghostscript-9.07/base/gdevpng.c +--- ghostscript-9.07/base/gdevpng.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpng.c 2013-05-09 17:02:39.074447119 +0100 +@@ -564,7 +564,7 @@ do_png_print_page(gx_device_png * pdev, + } + /* add comment */ + strncpy(software_key, "Software", sizeof(software_key)); +- sprintf(software_text, "%s %d.%02d", gs_product, ++ gs_sprintf(software_text, "%s %d.%02d", gs_product, + (int)(gs_revision / 100), (int)(gs_revision % 100)); + text_png.compression = -1; /* uncompressed */ + text_png.key = software_key; +diff -up ghostscript-9.07/base/gdevps.c.gs_sprintf ghostscript-9.07/base/gdevps.c +--- ghostscript-9.07/base/gdevps.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevps.c 2013-05-09 17:02:39.075447124 +0100 +@@ -526,7 +526,7 @@ psw_image_write(gx_device_pswrite * pdev + const char *op; + + if (index >= 0) { +- sprintf(str, "%d%c", index / 26, index % 26 + 'A'); ++ gs_sprintf(str, "%d%c", index / 26, index % 26 + 'A'); + pprintd2(s, "%d %d ", x, y); + pprints2(s, "%s %s\n", str, imagestr); + if (s->end_status == ERRC) +@@ -556,12 +556,12 @@ psw_image_write(gx_device_pswrite * pdev + }; + + index = image_cache_lookup(pdev, id, width_bits, height, true); +- sprintf(str, "/%d%c", index / 26, index % 26 + 'A'); ++ gs_sprintf(str, "/%d%c", index / 26, index % 26 + 'A'); + stream_puts(s, str); + if (depth != 1) + pprintld1(s, " %ld", ((width_bits + 7) >> 3) * (ulong) height); + op = cached[encode]; +- sprintf(endstr, "\n%s\n", imagestr); ++ gs_sprintf(endstr, "\n%s\n", imagestr); + } + if (s->end_status == ERRC) + return_error(gs_error_ioerror); +@@ -1261,7 +1261,7 @@ psw_copy_color(gx_device * dev, + return (*dev_proc(dev, fill_rectangle)) + (dev, x, y, w, h, (bits[0] << 16) + (bits[1] << 8) + bits[2]); + } +- sprintf(op, "%d Ic", depth / 3); /* RGB */ ++ gs_sprintf(op, "%d Ic", depth / 3); /* RGB */ + code = gdev_vector_update_clip_path(vdev, NULL); + if (code < 0) + return code; +diff -up ghostscript-9.07/base/gdevpsf1.c.gs_sprintf ghostscript-9.07/base/gdevpsf1.c +--- ghostscript-9.07/base/gdevpsf1.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpsf1.c 2013-05-09 17:02:39.075447124 +0100 +@@ -646,12 +646,12 @@ write_Private(stream *s, gs_font_type1 * + gs_free_object(pfont->memory, SubrsWithMM, "free Subrs record"); + return code; + } +- sprintf(buf, "dup %d %u -| ", i, code); ++ gs_sprintf(buf, "dup %d %u -| ", i, code); + stream_puts(s, buf); + write_CharString(s, stripped, code); + gs_free_object(pfont->memory, stripped, "free Subrs copy for OtherSubrs"); + } else { +- sprintf(buf, "dup %d %u -| ", i, gdata.bits.size); ++ gs_sprintf(buf, "dup %d %u -| ", i, gdata.bits.size); + stream_puts(s, buf); + write_CharString(s, gdata.bits.data, gdata.bits.size); + } +diff -up ghostscript-9.07/base/gdevpsf2.c.gs_sprintf ghostscript-9.07/base/gdevpsf2.c +--- ghostscript-9.07/base/gdevpsf2.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevpsf2.c 2013-05-09 17:02:39.076447128 +0100 +@@ -274,7 +274,7 @@ cff_put_real(cff_writer_t *pcw, floatp f + byte b = 0xff; + const char *p; + +- sprintf(str, "%g", f); ++ gs_sprintf(str, "%g", f); + sputc(pcw->strm, CD_REAL); + for (p = str; ; ++p) { + int digit; +diff -up ghostscript-9.07/base/gdevsppr.c.gs_sprintf ghostscript-9.07/base/gdevsppr.c +--- ghostscript-9.07/base/gdevsppr.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevsppr.c 2013-05-09 17:02:39.076447128 +0100 +@@ -100,7 +100,7 @@ err_code_string(int err_code) + { + if ((err_codeESERIAL)) + { +- sprintf(err_buffer,"err_code out of range: %d",err_code); ++ gs_sprintf(err_buffer,"err_code out of range: %d",err_code); + return err_buffer; + } + return errmsg[err_code]; +diff -up ghostscript-9.07/base/gdevsun.c.gs_sprintf ghostscript-9.07/base/gdevsun.c +--- ghostscript-9.07/base/gdevsun.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevsun.c 2013-05-09 17:02:39.076447128 +0100 +@@ -392,7 +392,7 @@ if ( gs_debug['X'] ) + /* + * Install the colormap. + */ +- sprintf(xdev->cmsname, "%s-%d", CMSNAME, getpid()); ++ gs_sprintf(xdev->cmsname, "%s-%d", CMSNAME, getpid()); + pw_setcmsname(xdev->pw, xdev->cmsname); + pw_putcolormap(xdev->pw, 0, CMS_SIZE, + xdev->red, xdev->green, xdev->blue); +diff -up ghostscript-9.07/base/gdevsvg.c.gs_sprintf ghostscript-9.07/base/gdevsvg.c +--- ghostscript-9.07/base/gdevsvg.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevsvg.c 2013-05-09 17:02:39.076447128 +0100 +@@ -374,22 +374,22 @@ svg_write_header(gx_device_svg *svg) + return 1; + + /* write the initial boilerplate */ +- sprintf(line, "%s\n", XML_DECL); ++ gs_sprintf(line, "%s\n", XML_DECL); + /* svg_write(svg, line); */ + sputs(s, (byte *)line, strlen(line), &used); +- sprintf(line, "%s\n", SVG_DOCTYPE); ++ gs_sprintf(line, "%s\n", SVG_DOCTYPE); + /* svg_write(svg, line); */ + sputs(s, (byte *)line, strlen(line), &used); +- sprintf(line, "\n", ++ gs_sprintf(line, "\n\twidth='%dpt' height='%dpt'>\n", + (int)svg->MediaSize[0], (int)svg->MediaSize[1]); + sputs(s, (byte *)line, strlen(line), &used); + + /* Scale drawing so our coordinates are in pixels */ +- sprintf(line, "\n", ++ gs_sprintf(line, "\n", + 72.0 / svg->HWResolution[0], + 72.0 / svg->HWResolution[1]); + /* svg_write(svg, line); */ +@@ -430,19 +430,19 @@ svg_write_state(gx_device_svg *svg) + /* write out the new current state */ + svg_write(svg, "strokecolor != gx_no_color_index) { +- sprintf(line, " stroke='#%06x'", svg->strokecolor & 0xffffffL); ++ gs_sprintf(line, " stroke='#%06x'", svg->strokecolor & 0xffffffL); + svg_write(svg, line); + } else { + svg_write(svg, " stroke='none'"); + } + if (svg->fillcolor != gx_no_color_index) { +- sprintf(line, "#%06x", svg->fillcolor & 0xffffffL); ++ gs_sprintf(line, "#%06x", svg->fillcolor & 0xffffffL); + svg_write(svg, line); + } else { + svg_write(svg, " fill='none'"); + } + if (svg->linewidth != 1.0) { +- sprintf(line, " stroke-width='%lf'", svg->linewidth); ++ gs_sprintf(line, " stroke-width='%lf'", svg->linewidth); + svg_write(svg, line); + } + if (svg->linecap != SVG_DEFAULT_LINECAP) { +@@ -476,7 +476,7 @@ svg_write_state(gx_device_svg *svg) + } + } + if (svg->miterlimit != SVG_DEFAULT_MITERLIMIT) { +- sprintf(line, " stroke-miterlimit='%lf'", svg->miterlimit); ++ gs_sprintf(line, " stroke-miterlimit='%lf'", svg->miterlimit); + svg_write(svg, line); + } + svg_write(svg, ">\n"); +@@ -653,7 +653,7 @@ svg_dorect(gx_device_vector *vdev, fixed + svg_write(svg, "\n"); + } + +- sprintf(line, "memory, "\n"); + +- sprintf(line, " M%lf,%lf", x, y); ++ gs_sprintf(line, " M%lf,%lf", x, y); + svg_write(svg, line); + + return 0; +@@ -739,7 +739,7 @@ svg_lineto(gx_device_vector *vdev, float + svg_print_path_type(svg, type); + if_debug0m('_', svg->memory, "\n"); + +- sprintf(line, " L%lf,%lf", x, y); ++ gs_sprintf(line, " L%lf,%lf", x, y); + svg_write(svg, line); + + return 0; +@@ -766,7 +766,7 @@ svg_curveto(gx_device_vector *vdev, floa + svg_print_path_type(svg, type); + if_debug0m('_', svg->memory, "\n"); + +- sprintf(line, " C%lf,%lf %lf,%lf %lf,%lf", x1,y1, x2,y2, x3,y3); ++ gs_sprintf(line, " C%lf,%lf %lf,%lf %lf,%lf", x1,y1, x2,y2, x3,y3); + svg_write(svg, line); + + return 0; +diff -up ghostscript-9.07/base/gdevtifs.c.gs_sprintf ghostscript-9.07/base/gdevtifs.c +--- ghostscript-9.07/base/gdevtifs.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevtifs.c 2013-05-09 17:02:39.077447132 +0100 +@@ -500,7 +500,7 @@ int tiff_set_fields_for_printer(gx_devic + + strncpy(softwareValue, gs_product, maxSoftware); + softwareValue[maxSoftware - 1] = 0; +- sprintf(revs, " %1.2f", gs_revision / 100.0); ++ gs_sprintf(revs, " %1.2f", gs_revision / 100.0); + strncat(softwareValue, revs, + maxSoftware - strlen(softwareValue) - 1); + +@@ -513,7 +513,7 @@ int tiff_set_fields_for_printer(gx_devic + + time(&t); + tms = *localtime(&t); +- sprintf(dateTimeValue, "%04d:%02d:%02d %02d:%02d:%02d", ++ gs_sprintf(dateTimeValue, "%04d:%02d:%02d %02d:%02d:%02d", + tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday, + tms.tm_hour, tms.tm_min, tms.tm_sec); + +diff -up ghostscript-9.07/base/gdevtsep.c.gs_sprintf ghostscript-9.07/base/gdevtsep.c +--- ghostscript-9.07/base/gdevtsep.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevtsep.c 2013-05-09 17:02:39.077447132 +0100 +@@ -1182,9 +1182,9 @@ tiffsep1_prn_close(gx_device * pdev) + while (*fmt != 'l' && *fmt != '%') + --fmt; + if (*fmt == 'l') +- sprintf(compname, parsed.fname, count1); ++ gs_sprintf(compname, parsed.fname, count1); + else +- sprintf(compname, parsed.fname, (int)count1); ++ gs_sprintf(compname, parsed.fname, (int)count1); + parsed.iodev->procs.delete_file(parsed.iodev, compname); + } else { + parsed.iodev->procs.delete_file(parsed.iodev, tfdev->fname); +@@ -1370,7 +1370,7 @@ create_separation_file_name(tiffsep_devi + /* Max of 10 chars in %d format */ + if (max_size < base_filename_length + 11) + return_error(gs_error_rangecheck); +- sprintf(buffer + base_filename_length, "s%d", sep_num); ++ gs_sprintf(buffer + base_filename_length, "s%d", sep_num); + } + } + if (use_sep_name) +@@ -2385,9 +2385,9 @@ tiffsep1_print_page(gx_device_printer * + while (*fmt != 'l' && *fmt != '%') + --fmt; + if (*fmt == 'l') +- sprintf(compname, parsed.fname, count1); ++ gs_sprintf(compname, parsed.fname, count1); + else +- sprintf(compname, parsed.fname, (int)count1); ++ gs_sprintf(compname, parsed.fname, (int)count1); + parsed.iodev->procs.delete_file(parsed.iodev, compname); + /* we always need an open printer (it will get deleted in tiffsep1_prn_close */ + if ((code = gdev_prn_open_printer((gx_device *)pdev, 1)) < 0) +diff -up ghostscript-9.07/base/gdevtxtw.c.gs_sprintf ghostscript-9.07/base/gdevtxtw.c +--- ghostscript-9.07/base/gdevtxtw.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevtxtw.c 2013-05-09 17:02:39.078447137 +0100 +@@ -633,16 +633,16 @@ static int escaped_Unicode (unsigned sho + { + switch (Unicode) + { +- case 0x3C: sprintf(Buf, "<"); break; +- case 0x3E: sprintf(Buf, ">"); break; +- case 0x26: sprintf(Buf, "&"); break; +- case 0x22: sprintf(Buf, """); break; +- case 0x27: sprintf(Buf, "'"); break; ++ case 0x3C: gs_sprintf(Buf, "<"); break; ++ case 0x3E: gs_sprintf(Buf, ">"); break; ++ case 0x26: gs_sprintf(Buf, "&"); break; ++ case 0x22: gs_sprintf(Buf, """); break; ++ case 0x27: gs_sprintf(Buf, "'"); break; + default: + if (Unicode >= 32 && Unicode <= 127) +- sprintf(Buf, "%c", Unicode); ++ gs_sprintf(Buf, "%c", Unicode); + else +- sprintf(Buf, "&#x%x;", Unicode); ++ gs_sprintf(Buf, "&#x%x;", Unicode); + break; + } + +@@ -665,13 +665,13 @@ static int decorated_text_output(gx_devi + x_entry = tdev->PageData.unsorted_text_list; + while (x_entry) { + next_x = x_entry->next; +- sprintf(TextBuffer, "\n", x_entry->start.x, x_entry->start.y, ++ gs_sprintf(TextBuffer, "\n", x_entry->start.x, x_entry->start.y, + x_entry->end.x, x_entry->end.y, x_entry->FontName,x_entry->size); + fwrite(TextBuffer, 1, strlen(TextBuffer), tdev->file); + xpos = x_entry->start.x; + for (i=0;iUnicode_Text_Size;i++) { + escaped_Unicode(x_entry->Unicode_Text[i], (char *)&Escaped); +- sprintf(TextBuffer, "\n", xpos, ++ gs_sprintf(TextBuffer, "\n", xpos, + x_entry->start.y, xpos + x_entry->Widths[i], x_entry->end.y, Escaped); + fwrite(TextBuffer, 1, strlen(TextBuffer), tdev->file); + xpos += x_entry->Widths[i]; +@@ -788,13 +788,13 @@ static int decorated_text_output(gx_devi + fwrite("\n", sizeof(unsigned char), 7, tdev->file); + x_entry = block_line->x_ordered_list; + while(x_entry) { +- sprintf(TextBuffer, "\n", x_entry->start.x, x_entry->start.y, ++ gs_sprintf(TextBuffer, "\n", x_entry->start.x, x_entry->start.y, + x_entry->end.x, x_entry->end.y, x_entry->FontName,x_entry->size); + fwrite(TextBuffer, 1, strlen(TextBuffer), tdev->file); + xpos = x_entry->start.x; + for (i=0;iUnicode_Text_Size;i++) { + escaped_Unicode(x_entry->Unicode_Text[i], (char *)&Escaped); +- sprintf(TextBuffer, "\n", xpos, ++ gs_sprintf(TextBuffer, "\n", xpos, + x_entry->start.y, xpos + x_entry->Widths[i], x_entry->end.y, Escaped); + fwrite(TextBuffer, 1, strlen(TextBuffer), tdev->file); + xpos += x_entry->Widths[i]; +diff -up ghostscript-9.07/base/gdevupd.c.gs_sprintf ghostscript-9.07/base/gdevupd.c +--- ghostscript-9.07/base/gdevupd.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevupd.c 2013-05-09 17:02:39.079447141 +0100 +@@ -6476,7 +6476,7 @@ upd_open_wrtrtl(upd_device *udev) + if( (B_PAGEWIDTH & upd->flags) && + ((c == 0x73) || (c == 0x53)) ) { /* esc * r # S */ + +- sprintf(cv,"%d",upd->pwidth); ++ gs_sprintf(cv,"%d",upd->pwidth); + ncv = strlen(cv); + + nbp = (j+1) + ncv + (upd->strings[S_BEGIN].size-i); +@@ -6494,7 +6494,7 @@ upd_open_wrtrtl(upd_device *udev) + } else if((B_PAGELENGTH & upd->flags) && + ((c == 0x74) || (c == 0x54)) ) { /* esc * r # T */ + +- sprintf(cv,"%d",upd->pheight); ++ gs_sprintf(cv,"%d",upd->pheight); + ncv = strlen(cv); + + nbp = (j+1) + ncv + (upd->strings[S_BEGIN].size-i); +@@ -6523,7 +6523,7 @@ upd_open_wrtrtl(upd_device *udev) + if( (B_RESOLUTION & upd->flags) && + ((c == 0x72) || (c == 0x52)) ) { /* esc * t # R */ + +- sprintf(cv,"%d",(int) ++ gs_sprintf(cv,"%d",(int) + ((udev->y_pixels_per_inch < udev->x_pixels_per_inch ? + udev->x_pixels_per_inch : udev->y_pixels_per_inch) + +0.5)); +@@ -6730,7 +6730,7 @@ upd_open_wrtrtl(upd_device *udev) + + if(B_PAGELENGTH & upd->flags) { /* insert new number */ + +- sprintf(cv,"%d",(int) ++ gs_sprintf(cv,"%d",(int) + (720.0 * udev->height / udev->y_pixels_per_inch + 0.5)); + ncv = strlen(cv); + +@@ -6795,7 +6795,7 @@ upd_open_wrtrtl(upd_device *udev) + + if(B_PAGEWIDTH & upd->flags) { /* insert new number */ + +- sprintf(cv,"%d",(int) ++ gs_sprintf(cv,"%d",(int) + (720.0 * udev->width / udev->x_pixels_per_inch + 0.5)); + ncv = strlen(cv); + +@@ -6890,7 +6890,7 @@ upd_open_wrtrtl(upd_device *udev) + + if(B_RESOLUTION & upd->flags) { /* insert new number */ + +- sprintf(cv,"%d",(int) ++ gs_sprintf(cv,"%d",(int) + ((udev->y_pixels_per_inch < udev->x_pixels_per_inch ? + udev->x_pixels_per_inch : udev->y_pixels_per_inch) + +0.5)); +@@ -6945,7 +6945,7 @@ It must hold: + char tmp[16]; + + if(0 < upd->strings[S_YMOVE].size) { +- sprintf(tmp,"%d",upd->pheight); ++ gs_sprintf(tmp,"%d",upd->pheight); + ny = upd->strings[S_YMOVE].size + strlen(tmp); + } else { + ny = 1 + upd->string_a[SA_WRITECOMP].data[upd->ocomp-1].size; +@@ -7006,14 +7006,14 @@ upd_wrtrtl(upd_p upd, FILE *out) + */ + if(upd->yscan != upd->yprinter) { /* Adjust Y-Position */ + if(1 < upd->strings[S_YMOVE].size) { +- sprintf((char *)upd->outbuf+ioutbuf, ++ gs_sprintf((char *)upd->outbuf+ioutbuf, + (const char *) upd->strings[S_YMOVE].data, + upd->yscan - upd->yprinter); + ioutbuf += strlen((char *)upd->outbuf+ioutbuf); + } else { + while(upd->yscan > upd->yprinter) { + for(icomp = 0; icomp < upd->ocomp; ++icomp) { +- sprintf((char *)upd->outbuf+ioutbuf, ++ gs_sprintf((char *)upd->outbuf+ioutbuf, + (const char *) upd->string_a[SA_WRITECOMP].data[icomp].data,0); + ioutbuf += strlen((char *)upd->outbuf+ioutbuf); + } +diff -up ghostscript-9.07/base/gdevwpr2.c.gs_sprintf ghostscript-9.07/base/gdevwpr2.c +--- ghostscript-9.07/base/gdevwpr2.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevwpr2.c 2013-05-09 17:02:39.080447145 +0100 +@@ -548,7 +548,7 @@ win_pr2_print_page(gx_device_printer * p + } + + if (!wdev->nocancel) { +- sprintf(dlgtext, "Printing page %d", (int)(pdev->PageCount) + 1); ++ gs_sprintf(dlgtext, "Printing page %d", (int)(pdev->PageCount) + 1); + SetWindowText(GetDlgItem(wdev->hDlgModeless, CANCEL_PRINTING), dlgtext); + ShowWindow(wdev->hDlgModeless, SW_SHOW); + } +@@ -577,7 +577,7 @@ win_pr2_print_page(gx_device_printer * p + + if (!wdev->nocancel) { + /* inform user of progress */ +- sprintf(dlgtext, "%d%% done", (int)(y * 100L / scan_lines)); ++ gs_sprintf(dlgtext, "%d%% done", (int)(y * 100L / scan_lines)); + SetWindowText(GetDlgItem(wdev->hDlgModeless, CANCEL_PCDONE), dlgtext); + } + /* process message loop */ +@@ -1488,9 +1488,9 @@ win_pr2_print_setup_interaction(gx_devic + + wdev->user_changed_settings = TRUE; + if (wdev->use_old_spool_name) { +- sprintf(wdev->fname, "\\\\spool\\%s", (char*)(devnames)+(devnames->wDeviceOffset)); ++ gs_sprintf(wdev->fname, "\\\\spool\\%s", (char*)(devnames)+(devnames->wDeviceOffset)); + } else { +- sprintf(wdev->fname, "%%printer%%%s", (char*)(devnames)+(devnames->wDeviceOffset)); ++ gs_sprintf(wdev->fname, "%%printer%%%s", (char*)(devnames)+(devnames->wDeviceOffset)); + } + + if (mode == 3) { +diff -up ghostscript-9.07/base/gdevxini.c.gs_sprintf ghostscript-9.07/base/gdevxini.c +--- ghostscript-9.07/base/gdevxini.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gdevxini.c 2013-05-09 17:02:39.080447145 +0100 +@@ -377,7 +377,7 @@ gdev_x_open(gx_device_X * xdev) + char gstr[40]; + int bitmask; + +- sprintf(gstr, "%dx%d+%d+%d", sizehints.width, ++ gs_sprintf(gstr, "%dx%d+%d+%d", sizehints.width, + sizehints.height, sizehints.x, sizehints.y); + bitmask = XWMGeometry(xdev->dpy, DefaultScreen(xdev->dpy), + xdev->geometry, gstr, xdev->borderWidth, +diff -up ghostscript-9.07/base/gp_macio.c.gs_sprintf ghostscript-9.07/base/gp_macio.c +--- ghostscript-9.07/base/gp_macio.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gp_macio.c 2013-05-09 17:02:39.080447145 +0100 +@@ -162,7 +162,7 @@ getenv(const char * env) { + convertSpecToPath(&pFile, fpath, 256); + // sprintf(fpath,"%s",fpath); + p = (char*)malloc((size_t) ( 4*strlen(fpath) + 40)); +- sprintf(p,"%s,%sGhostscript:lib,%sGhostscript:fonts", ++ gs_sprintf(p,"%s,%sGhostscript:lib,%sGhostscript:fonts", + (char *)&fpath[0],(char *)&fpath[0], + (char *)&fpath[0] ); + +@@ -402,9 +402,9 @@ gp_open_scratch_file (const gs_memory_t + } + FSMakeFSSpec(foundVRefNum, foundDirID,thepfname, &fSpec); + convertSpecToPath(&fSpec, thefname, sizeof(thefname) - 1); +- sprintf(fname,"%s",thefname); ++ gs_sprintf(fname,"%s",thefname); + } else { +- sprintf((char*)&thefname[0],"%s\0",fname); ++ gs_sprintf((char*)&thefname[0],"%s\0",fname); + memmove((char*)&thepfname[1],(char *)&thefname[0],strlen(thefname)); + thepfname[0]=strlen(thefname); + } +@@ -535,9 +535,9 @@ gp_fopen (const char * fname, const char + //(*pgsdll_callback) (GSDLL_STDOUT, thefname, strlen(fname)); + if ( strrchr(fname,':') == NULL ) + // sprintf((char *)&thefname[0],"%s%s\0",g_homeDir,fname); +- sprintf((char *)&thefname[0],"%s%s\0","",fname); ++ gs_sprintf((char *)&thefname[0],"%s%s\0","",fname); + else +- sprintf((char*)&thefname[0],"%s\0",fname); ++ gs_sprintf((char*)&thefname[0],"%s\0",fname); + + fid = fopen(thefname,mode); + +diff -up ghostscript-9.07/base/gp_mswin.c.gs_sprintf ghostscript-9.07/base/gp_mswin.c +--- ghostscript-9.07/base/gp_mswin.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gp_mswin.c 2013-05-09 17:02:39.081447150 +0100 +@@ -316,7 +316,7 @@ get_queues(void) + char buf[256]; + + free(enumbuffer); +- sprintf(buf, "EnumPrinters() failed, error code = %d", GetLastError()); ++ gs_sprintf(buf, "EnumPrinters() failed, error code = %d", GetLastError()); + MessageBox((HWND) NULL, buf, szAppName, MB_OK | MB_ICONSTOP); + return NULL; + } +@@ -423,7 +423,7 @@ gp_printfile_win32(const char *filename, + if (!gp_OpenPrinter(port, &printer)) { + char buf[256]; + +- sprintf(buf, "OpenPrinter() failed for \042%s\042, error code = %d", port, GetLastError()); ++ gs_sprintf(buf, "OpenPrinter() failed for \042%s\042, error code = %d", port, GetLastError()); + MessageBox((HWND) NULL, buf, szAppName, MB_OK | MB_ICONSTOP); + free(buffer); + return FALSE; +@@ -436,7 +436,7 @@ gp_printfile_win32(const char *filename, + if (!StartDocPrinter(printer, 1, (LPBYTE) & di)) { + char buf[256]; + +- sprintf(buf, "StartDocPrinter() failed, error code = %d", GetLastError()); ++ gs_sprintf(buf, "StartDocPrinter() failed, error code = %d", GetLastError()); + MessageBox((HWND) NULL, buf, szAppName, MB_OK | MB_ICONSTOP); + AbortPrinter(printer); + free(buffer); +@@ -457,7 +457,7 @@ gp_printfile_win32(const char *filename, + if (!EndDocPrinter(printer)) { + char buf[256]; + +- sprintf(buf, "EndDocPrinter() failed, error code = %d", GetLastError()); ++ gs_sprintf(buf, "EndDocPrinter() failed, error code = %d", GetLastError()); + MessageBox((HWND) NULL, buf, szAppName, MB_OK | MB_ICONSTOP); + AbortPrinter(printer); + return FALSE; +@@ -465,7 +465,7 @@ gp_printfile_win32(const char *filename, + if (!ClosePrinter(printer)) { + char buf[256]; + +- sprintf(buf, "ClosePrinter() failed, error code = %d", GetLastError()); ++ gs_sprintf(buf, "ClosePrinter() failed, error code = %d", GetLastError()); + MessageBox((HWND) NULL, buf, szAppName, MB_OK | MB_ICONSTOP); + return FALSE; + } +diff -up ghostscript-9.07/base/gp_wgetv.c.gs_sprintf ghostscript-9.07/base/gp_wgetv.c +--- ghostscript-9.07/base/gp_wgetv.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gp_wgetv.c 2013-05-09 17:02:39.081447150 +0100 +@@ -181,9 +181,9 @@ gp_getenv(const char *name, char *ptr, i + char key[256]; + char dotversion[16]; + +- sprintf(dotversion, "%d.%02d", (int)(gs_revision / 100), ++ gs_sprintf(dotversion, "%d.%02d", (int)(gs_revision / 100), + (int)(gs_revision % 100)); +- sprintf(key, "Software\\%s\\%s", gs_productfamily, dotversion); ++ gs_sprintf(key, "Software\\%s\\%s", gs_productfamily, dotversion); + #else + wchar_t key[256]; + wchar_t dotversion[16]; +@@ -224,7 +224,7 @@ gp_serialnumber(void) + #ifdef WINDOWS_NO_UNICODE + char key[256]; + +- sprintf(key, "Software\\Microsoft\\MSLicensing\\HardwareID"); ++ gs_sprintf(key, "Software\\Microsoft\\MSLicensing\\HardwareID"); + #else /* WINDOWS_NO_UNICODE */ + wchar_t key[256]; + +diff -up ghostscript-9.07/base/gsalloc.c.gs_sprintf ghostscript-9.07/base/gsalloc.c +--- ghostscript-9.07/base/gsalloc.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gsalloc.c 2013-05-09 17:02:39.081447150 +0100 +@@ -2045,7 +2045,7 @@ debug_dump_contents(const gs_memory_t *m + } + continue; + } +- sprintf(label, "0x%lx:", (ulong) block); ++ gs_sprintf(label, "0x%lx:", (ulong) block); + debug_indent(mem, indent); + dmputs(mem, label); + for (i = 0; i < block_size; ++i) { +diff -up ghostscript-9.07/base/gsdevice.c.gs_sprintf ghostscript-9.07/base/gsdevice.c +--- ghostscript-9.07/base/gsdevice.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gsdevice.c 2013-05-09 17:02:39.082447154 +0100 +@@ -1011,11 +1011,11 @@ gx_device_open_output_file(const gx_devi + while (*fmt != 'l' && *fmt != '%') + --fmt; + if (*fmt == 'l') +- sprintf(pfname, parsed.fname, count1); ++ gs_sprintf(pfname, parsed.fname, count1); + else +- sprintf(pfname, parsed.fname, (int)count1); ++ gs_sprintf(pfname, parsed.fname, (int)count1); + } else if (parsed.len && strchr(parsed.fname, '%')) /* filename with "%%" but no "%nnd" */ +- sprintf(pfname, parsed.fname); ++ gs_sprintf(pfname, parsed.fname); + else + pfname[0] = 0; /* 0 to use "fname", not "pfname" */ + if (pfname[0]) { +diff -up ghostscript-9.07/base/gsdparam.c.gs_sprintf ghostscript-9.07/base/gsdparam.c +--- ghostscript-9.07/base/gsdparam.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gsdparam.c 2013-05-09 17:02:39.082447154 +0100 +@@ -377,7 +377,7 @@ gdev_write_input_media(int index, gs_par + int code; + gs_param_string as; + +- sprintf(key, "%d", index); ++ gs_sprintf(key, "%d", index); + mdict.size = 4; + code = param_begin_write_dict(pdict->list, key, &mdict, false); + if (code < 0) +@@ -465,7 +465,7 @@ gdev_write_output_media(int index, gs_pa + gs_param_dict mdict; + int code; + +- sprintf(key, "%d", index); ++ gs_sprintf(key, "%d", index); + mdict.size = 4; + code = param_begin_write_dict(pdict->list, key, &mdict, false); + if (code < 0) +diff -up ghostscript-9.07/base/gsfcmap.c.gs_sprintf ghostscript-9.07/base/gsfcmap.c +--- ghostscript-9.07/base/gsfcmap.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gsfcmap.c 2013-05-09 17:02:39.082447154 +0100 +@@ -567,7 +567,7 @@ gs_cmap_ToUnicode_alloc(gs_memory_t *mem + char sid[10], *pref = "aux-"; + int sid_len, pref_len = strlen(pref); + +- sprintf(sid, "%d", id); ++ gs_sprintf(sid, "%d", id); + sid_len = strlen(sid); + name_len = pref_len + sid_len; + cmap_name = gs_alloc_string(mem, name_len, "gs_cmap_ToUnicode_alloc"); +diff -up ghostscript-9.07/base/gsicc_create.c.gs_sprintf ghostscript-9.07/base/gsicc_create.c +--- ghostscript-9.07/base/gsicc_create.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gsicc_create.c 2013-05-09 17:02:39.083447158 +0100 +@@ -451,7 +451,7 @@ save_profile(unsigned char *buffer, char + char full_file_name[50]; + FILE *fid; + +- sprintf(full_file_name,"%d)Profile_%s.icc",icc_debug_index,filename); ++ gs_sprintf(full_file_name,"%d)Profile_%s.icc",icc_debug_index,filename); + fid = fopen(full_file_name,"wb"); + fwrite(buffer,sizeof(unsigned char),buffer_size,fid); + fclose(fid); +diff -up ghostscript-9.07/base/gsicc_manage.c.gs_sprintf ghostscript-9.07/base/gsicc_manage.c +--- ghostscript-9.07/base/gsicc_manage.c.gs_sprintf 2013-05-09 17:02:39.043446986 +0100 ++++ ghostscript-9.07/base/gsicc_manage.c 2013-05-09 17:02:39.083447158 +0100 +@@ -550,8 +550,8 @@ gsicc_set_srcgtag_struct(gsicc_manager_t + srcgtag = gsicc_new_srcgtag_profile(mem); + /* Now parse through the data opening the profiles that are needed */ + /* First create the format that we should read for the key */ +- sprintf(str_format_key, "%%%ds", GSICC_SRCGTAG_MAX_KEY); +- sprintf(str_format_file, "%%%ds", FILENAME_MAX); ++ gs_sprintf(str_format_key, "%%%ds", GSICC_SRCGTAG_MAX_KEY); ++ gs_sprintf(str_format_file, "%%%ds", FILENAME_MAX); + curr_ptr = buffer_ptr; + /* Initialize that we want color management. Then if profile is not + present we know we did not want anything special done with that +@@ -1296,13 +1296,13 @@ gsicc_set_device_profile_colorants(gx_de + DEFAULT_ICC_PROCESS_LENGTH - 1; /* -1 due to no comma at end */ + name_str = (char*) gs_alloc_bytes(dev->memory, total_len+1, + "gsicc_set_device_profile_colorants"); +- sprintf(name_str, DEFAULT_ICC_PROCESS); ++ gs_sprintf(name_str, DEFAULT_ICC_PROCESS); + for (kk = 0; kk < num_comps-5; kk++) { +- sprintf(temp_str,"ICC_COLOR_%d,",kk); ++ gs_sprintf(temp_str,"ICC_COLOR_%d,",kk); + strcat(name_str,temp_str); + } + /* Last one no comma */ +- sprintf(temp_str,"ICC_COLOR_%d",kk); ++ gs_sprintf(temp_str,"ICC_COLOR_%d",kk); + strcat(name_str,temp_str); + } + str_len = strlen(name_str); +@@ -2344,7 +2344,7 @@ dump_icc_buffer(int buffersize, char fil + char full_file_name[50]; + FILE *fid; + +- sprintf(full_file_name,"%d)%s_debug.icc",global_icc_index,filename); ++ gs_sprintf(full_file_name,"%d)%s_debug.icc",global_icc_index,filename); + fid = fopen(full_file_name,"wb"); + fwrite(Buffer,sizeof(unsigned char),buffersize,fid); + fclose(fid); +diff -up ghostscript-9.07/base/gsiodisk.c.gs_sprintf ghostscript-9.07/base/gsiodisk.c +--- ghostscript-9.07/base/gsiodisk.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gsiodisk.c 2013-05-09 17:02:39.084447162 +0100 +@@ -415,7 +415,7 @@ MapFileOpen(const char * rootpath, const + + if (strlen(rootpath) + strlen(filename) >= BUFFER_LENGTH) + return NULL; +- sprintf(fullname, "%s%s", rootpath, filename); ++ gs_sprintf(fullname, "%s%s", rootpath, filename); + return gp_fopen(fullname, attributes); + } + +@@ -516,7 +516,7 @@ MapFileUnlink(const char * rootpath, con + + if (strlen(rootpath) + strlen(filename) >= BUFFER_LENGTH) + return; +- sprintf(fullname, "%s%s", rootpath, filename); ++ gs_sprintf(fullname, "%s%s", rootpath, filename); + unlink(fullname); + } + +@@ -537,8 +537,8 @@ MapFileRename(const char * rootpath, con + return; + if (strlen(rootpath) + strlen(newfilename) >= BUFFER_LENGTH) + return; +- sprintf(oldfullname, "%s%s", rootpath, oldfilename); +- sprintf(newfullname, "%s%s", rootpath, newfilename); ++ gs_sprintf(oldfullname, "%s%s", rootpath, oldfilename); ++ gs_sprintf(newfullname, "%s%s", rootpath, newfilename); + rename(oldfullname, newfullname); + } + +@@ -711,7 +711,7 @@ map_file_name_get(const char * root_name + if (d != -1) { + /* 20 characters are enough for even a 64 bit integer */ + if ((strlen(root_name) + 20) < BUFFER_LENGTH) { +- sprintf(osname, "%s%d", root_name, d); ++ gs_sprintf(osname, "%s%d", root_name, d); + return true; + } + } +diff -up ghostscript-9.07/base/gs.mak.gs_sprintf ghostscript-9.07/base/gs.mak +--- ghostscript-9.07/base/gs.mak.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gs.mak 2013-05-09 17:02:39.084447162 +0100 +@@ -239,6 +239,8 @@ LCUPSGENDIR=$(GLGENDIR) + LCUPSOBJDIR=$(GLOBJDIR) + LCUPSIGENDIR=$(GLGENDIR) + LCUPSIOBJDIR=$(GLOBJDIR) ++ ++TRIOOBJDIR=$(GLOBJDIR) + #**************** END PATCHES + + GSGEN=$(GLGENDIR)$(D) +diff -up ghostscript-9.07/base/gspmdrv.c.gs_sprintf ghostscript-9.07/base/gspmdrv.c +--- ghostscript-9.07/base/gspmdrv.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gspmdrv.c 2013-05-09 17:02:39.084447162 +0100 +@@ -345,11 +345,11 @@ write_profile(void) + { + char profile[64]; + +- sprintf(profile, "%d %d", option.img_origin.x, option.img_origin.y); ++ gs_sprintf(profile, "%d %d", option.img_origin.x, option.img_origin.y); + PrfWriteProfileString(HINI_USERPROFILE, section, "Origin", profile); +- sprintf(profile, "%d %d", option.img_size.x, option.img_size.y); ++ gs_sprintf(profile, "%d %d", option.img_size.x, option.img_size.y); + PrfWriteProfileString(HINI_USERPROFILE, section, "Size", profile); +- sprintf(profile, "%d", option.img_max); ++ gs_sprintf(profile, "%d", option.img_max); + PrfWriteProfileString(HINI_USERPROFILE, section, "Maximized", profile); + } + +@@ -489,26 +489,26 @@ init_display(int argc, char *argv[]) + find_hwnd_gs(argv[2]); + + if (!rc) { +- sprintf(name, SHARED_NAME, argv[2]); ++ gs_sprintf(name, SHARED_NAME, argv[2]); + rc = DosGetNamedSharedMem((PVOID *) & bitmap.pbmi, name, PAG_READ | PAG_WRITE); + if (rc) { +- sprintf(buf, "Failed to open: bmp shared memory \"%s\" rc = %d", argv[0], rc); ++ gs_sprintf(buf, "Failed to open: bmp shared memory \"%s\" rc = %d", argv[0], rc); + error_message(buf); + } + } + if (!rc) { +- sprintf(name, SYNC_NAME, argv[2]); ++ gs_sprintf(name, SYNC_NAME, argv[2]); + rc = DosOpenEventSem(name, &update_event_sem); + if (rc) { +- sprintf(buf, "Failed to open: update event semaphore \"%s\" rc = %d", argv[1], rc); ++ gs_sprintf(buf, "Failed to open: update event semaphore \"%s\" rc = %d", argv[1], rc); + error_message(buf); + } + } + if (!rc) { +- sprintf(name, MUTEX_NAME, argv[2]); ++ gs_sprintf(name, MUTEX_NAME, argv[2]); + rc = DosOpenMutexSem(name, &bmp_mutex_sem); + if (rc) { +- sprintf(buf, "Failed to open: bmp mutex semaphore \"%s\" rc = %d", argv[1], rc); ++ gs_sprintf(buf, "Failed to open: bmp mutex semaphore \"%s\" rc = %d", argv[1], rc); + error_message(buf); + } + } +@@ -535,19 +535,19 @@ init_bitmap(int argc, char *argv[]) + if ((rc = DosOpen(argv[2], &hf, &action, 0, FILE_NORMAL, FILE_OPEN, + OPEN_ACCESS_READONLY | OPEN_SHARE_DENYREADWRITE, 0)) + != (APIRET) 0) { +- sprintf(buf, "Error opening: %s", argv[2]); ++ gs_sprintf(buf, "Error opening: %s", argv[2]); + error_message(buf); + return rc; + } + rc = DosSetFilePtr(hf, 0, FILE_END, &length); + if (rc) { +- sprintf(buf, "failed seeking to EOF: error = %d", rc); ++ gs_sprintf(buf, "failed seeking to EOF: error = %d", rc); + error_message(buf); + return rc; + } + rc = DosSetFilePtr(hf, 0, FILE_BEGIN, &count); + if (rc) { +- sprintf(buf, "failed seeking to BOF: error = %d", rc); ++ gs_sprintf(buf, "failed seeking to BOF: error = %d", rc); + error_message(buf); + return rc; + }; +@@ -555,14 +555,14 @@ init_bitmap(int argc, char *argv[]) + /* allocate memory for bitmap */ + if ((rc = DosAllocMem((PPVOID) & bbuffer, length, PAG_READ | PAG_WRITE | PAG_COMMIT)) + != (APIRET) 0) { +- sprintf(buf, "failed allocating memory"); ++ gs_sprintf(buf, "failed allocating memory"); + error_message(buf); + return rc; + } + rc = DosRead(hf, bbuffer, length, &count); + DosClose(hf); + if (rc) { +- sprintf(buf, "failed reading bitmap, error = %u, count = %u", rc, count); ++ gs_sprintf(buf, "failed reading bitmap, error = %u, count = %u", rc, count); + error_message(buf); + return rc; + } +@@ -573,7 +573,7 @@ init_bitmap(int argc, char *argv[]) + scan_bitmap(&bitmap); + bitmap.valid = TRUE; + +- sprintf(buf, "bitmap width = %d, height = %d", bitmap.width, bitmap.height); ++ gs_sprintf(buf, "bitmap width = %d, height = %d", bitmap.width, bitmap.height); + message_box(buf, 0); + return rc; + } +@@ -805,7 +805,7 @@ make_bitmap(BMAP * pbm, ULONG left, ULON + char buf[256]; + + eid = WinGetLastError(hab); +- sprintf(buf, "make_bitmap: GpiDrawBits rc = %08x, eid = %08x", rc, eid); ++ gs_sprintf(buf, "make_bitmap: GpiDrawBits rc = %08x, eid = %08x", rc, eid); + message_box(buf, 0); + } + } +diff -up ghostscript-9.07/base/gssprintf.c.gs_sprintf ghostscript-9.07/base/gssprintf.c +--- ghostscript-9.07/base/gssprintf.c.gs_sprintf 2013-05-09 17:02:39.085447167 +0100 ++++ ghostscript-9.07/base/gssprintf.c 2013-05-09 17:02:39.084447162 +0100 +@@ -0,0 +1,60 @@ ++/* Copyright (C) 2001-2012 Artifex Software, Inc. ++ All Rights Reserved. ++ ++ This software is provided AS-IS with no warranty, either express or ++ implied. ++ ++ This software is distributed under license and may not be copied, ++ modified or distributed except as expressly authorized under the terms ++ of the license contained in the file LICENSE in this distribution. ++ ++ Refer to licensing information at http://www.artifex.com or contact ++ Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, ++ CA 94903, U.S.A., +1(415)492-9861, for further information. ++*/ ++ ++ ++/* Simple interface to a sprintf/sscanf without locale */ ++#include "gssprintf.h" ++#include "trio.h" ++#include "triop.h" ++#include "triodef.h" ++#include "trionan.h" ++#include "triostr.h" ++ ++int ++gs_vsnprintf(char *buf, int n, const char *format, va_list ap) ++{ ++ return(trio_vsnprintf(buf, n, format, ap)); ++} ++ ++int ++gs_snprintf(char *buf, int n, const char *format, ...) ++{ ++ int len; ++ va_list ap; ++ ++ va_start(ap, format); ++ len = trio_vsnprintf(buf, n, format, ap); ++ va_end(ap); ++ return len; ++} ++ ++int ++gs_vsprintf(char *buf, const char *format, va_list ap) ++{ ++ return(trio_vsprintf(buf, format, ap)); ++} ++ ++int ++gs_sprintf(char *buf, const char *format, ...) ++{ ++ int len; ++ va_list ap; ++ ++ va_start(ap, format); ++ len = trio_vsprintf(buf, format, ap); ++ va_end(ap); ++ ++ return(len); ++} +diff -up ghostscript-9.07/base/gssprintf.h.gs_sprintf ghostscript-9.07/base/gssprintf.h +--- ghostscript-9.07/base/gssprintf.h.gs_sprintf 2013-05-09 17:02:39.085447167 +0100 ++++ ghostscript-9.07/base/gssprintf.h 2013-05-09 17:02:39.085447167 +0100 +@@ -0,0 +1,33 @@ ++/* Copyright (C) 2001-2012 Artifex Software, Inc. ++ All Rights Reserved. ++ ++ This software is provided AS-IS with no warranty, either express or ++ implied. ++ ++ This software is distributed under license and may not be copied, ++ modified or distributed except as expressly authorized under the terms ++ of the license contained in the file LICENSE in this distribution. ++ ++ Refer to licensing information at http://www.artifex.com or contact ++ Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, ++ CA 94903, U.S.A., +1(415)492-9861, for further information. ++*/ ++ ++#ifndef gssprintf_INCLUDED ++# define gssprintf_INCLUDED ++ ++#include ++ ++int ++gs_vsnprintf(char *zBuf, int n, const char *zFormat, va_list ap); ++ ++int ++gs_snprintf(char *zBuf, int n, const char *zFormat, ...); ++ ++int ++gs_vsprintf(char *zBuf, const char *zFormat, va_list ap); ++ ++int ++gs_sprintf(char *zBuf, const char *zFormat, ...); ++ ++#endif +diff -up ghostscript-9.07/base/gxblend1.c.gs_sprintf ghostscript-9.07/base/gxblend1.c +--- ghostscript-9.07/base/gxblend1.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gxblend1.c 2013-05-09 17:02:39.085447167 +0100 +@@ -643,7 +643,7 @@ dump_planar_rgba(gs_memory_t *mem, const + info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA; + + /* add comment */ +- sprintf(software_text, "%s %d.%02d", gs_product, ++ gs_sprintf(software_text, "%s %d.%02d", gs_product, + (int)(gs_revision / 100), (int)(gs_revision % 100)); + text_png.compression = -1; /* uncompressed */ + text_png.key = (char *)software_key; /* not const, unfortunately */ +diff -up ghostscript-9.07/base/gxblend.c.gs_sprintf ghostscript-9.07/base/gxblend.c +--- ghostscript-9.07/base/gxblend.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gxblend.c 2013-05-09 17:02:39.085447167 +0100 +@@ -1573,7 +1573,7 @@ dump_raw_buffer(int num_rows, int width, + /* FIXME: GRAY + ALPHA + SHAPE + TAGS will be interpreted as RGB + ALPHA */ + if ((n_chan == 2) || (n_chan == 3)) { + int x; +- sprintf(full_file_name,"%02d)%s.pam",global_index,filename); ++ gs_sprintf(full_file_name,"%02d)%s.pam",global_index,filename); + fid = fopen(full_file_name,"wb"); + fprintf(fid, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE GRAYSCALE_ALPHA\nENDHDR\n", + width, num_rows); +@@ -1583,7 +1583,7 @@ dump_raw_buffer(int num_rows, int width, + fputc(Buffer[z*plane_stride + y*rowstride + x], fid); + fclose(fid); + if (n_chan == 3) { +- sprintf(full_file_name,"%02d)%s_shape.pam",global_index,filename); ++ gs_sprintf(full_file_name,"%02d)%s_shape.pam",global_index,filename); + fid = fopen(full_file_name,"wb"); + fprintf(fid, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 1\nMAXVAL 255\nTUPLTYPE GRAYSCALE\nENDHDR\n", + width, num_rows); +@@ -1595,7 +1595,7 @@ dump_raw_buffer(int num_rows, int width, + } + if ((n_chan == 4) || (n_chan == 5) || (n_chan == 6)) { + int x; +- sprintf(full_file_name,"%02d)%s.pam",global_index,filename); ++ gs_sprintf(full_file_name,"%02d)%s.pam",global_index,filename); + fid = fopen(full_file_name,"wb"); + fprintf(fid, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n", + width, num_rows); +@@ -1605,7 +1605,7 @@ dump_raw_buffer(int num_rows, int width, + fputc(Buffer[z*plane_stride + y*rowstride + x], fid); + fclose(fid); + if (n_chan > 4) { +- sprintf(full_file_name,"%02d)%s_shape.pam",global_index,filename); ++ gs_sprintf(full_file_name,"%02d)%s_shape.pam",global_index,filename); + fid = fopen(full_file_name,"wb"); + fprintf(fid, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 1\nMAXVAL 255\nTUPLTYPE GRAYSCALE\nENDHDR\n", + width, num_rows); +@@ -1615,7 +1615,7 @@ dump_raw_buffer(int num_rows, int width, + fclose(fid); + } + if (n_chan == 6) { +- sprintf(full_file_name,"%02d)%s_tags.pam",global_index,filename); ++ gs_sprintf(full_file_name,"%02d)%s_tags.pam",global_index,filename); + fid = fopen(full_file_name,"wb"); + fprintf(fid, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 1\nMAXVAL 255\nTUPLTYPE GRAYSCALE\nENDHDR\n", + width, num_rows); +@@ -1628,7 +1628,7 @@ dump_raw_buffer(int num_rows, int width, + } + #endif + max_bands = ( n_chan < 57 ? n_chan : 56); /* Photoshop handles at most 56 bands */ +- sprintf(full_file_name,"%02d)%s_%dx%dx%d.raw",global_index,filename,width,num_rows,max_bands); ++ gs_sprintf(full_file_name,"%02d)%s_%dx%dx%d.raw",global_index,filename,width,num_rows,max_bands); + fid = fopen(full_file_name,"wb"); + + for (z = 0; z < max_bands; ++z) { +diff -up ghostscript-9.07/base/gxclmem.c.gs_sprintf ghostscript-9.07/base/gxclmem.c +--- ghostscript-9.07/base/gxclmem.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gxclmem.c 2013-05-09 17:02:39.086447171 +0100 +@@ -401,7 +401,7 @@ memfile_fopen(char fname[gp_file_name_si + + /* Return the address of this memfile as a string for use in future clist_fopen calls */ + fname[0] = 0xff; /* a flag that this is a memfile name */ +- sprintf(fname+1, "%p", f); ++ gs_sprintf(fname+1, "%p", f); + + #ifdef DEBUG + tot_compressed = 0; +diff -up ghostscript-9.07/base/gxhintn.c.gs_sprintf ghostscript-9.07/base/gxhintn.c +--- ghostscript-9.07/base/gxhintn.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gxhintn.c 2013-05-09 17:02:39.086447171 +0100 +@@ -387,7 +387,7 @@ static void t1_hinter__paint_glyph(t1_hi + + for(j = beg_pole; j <= end_pole; j++) { + vd_circle(X(j), Y(j), 3, RGB(0,0,255)); +- sprintf(buf, "%d", j); ++ gs_sprintf(buf, "%d", j); + vd_text(self->pole[j].gx, self->pole[j].gy, buf, RGB(0,0,0)); + if (self->pole[j + 1].type == offcurve) + j+=2; +diff -up ghostscript-9.07/base/gxpath.c.gs_sprintf ghostscript-9.07/base/gxpath.c +--- ghostscript-9.07/base/gxpath.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gxpath.c 2013-05-09 17:02:39.086447171 +0100 +@@ -1035,7 +1035,7 @@ gx_print_segment(const gs_memory_t *mem, + double py = fixed2float(pseg->pt.y); + char out[80]; + +- sprintf(out, "0x%lx<0x%lx,0x%lx>:%u", ++ gs_sprintf(out, "0x%lx<0x%lx,0x%lx>:%u", + (ulong) pseg, (ulong) pseg->prev, (ulong) pseg->next, pseg->notes); + switch (pseg->type) { + case s_start:{ +diff -up ghostscript-9.07/base/gxpcmap.c.gs_sprintf ghostscript-9.07/base/gxpcmap.c +--- ghostscript-9.07/base/gxpcmap.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/gxpcmap.c 2013-05-09 17:02:39.087447175 +0100 +@@ -1147,10 +1147,10 @@ dump_raw_pattern(int height, int width, + is_planar = dev_proc(mdev, dev_spec_op)(mdev, gxdso_is_native_planar, NULL, 0) > 0; + max_bands = ( n_chan < 57 ? n_chan : 56); /* Photoshop handles at most 56 bands */ + if (is_planar) { +- sprintf(full_file_name,"%d)PATTERN_PLANE_%dx%dx%d.raw",global_pat_index, ++ gs_sprintf(full_file_name,"%d)PATTERN_PLANE_%dx%dx%d.raw",global_pat_index, + width,height,max_bands); + } else { +- sprintf(full_file_name,"%d)PATTERN_CHUNK_%dx%dx%d.raw",global_pat_index, ++ gs_sprintf(full_file_name,"%d)PATTERN_CHUNK_%dx%dx%d.raw",global_pat_index, + width,height,max_bands); + } + fid = fopen(full_file_name,"wb"); +diff -up ghostscript-9.07/base/lib.mak.gs_sprintf ghostscript-9.07/base/lib.mak +--- ghostscript-9.07/base/lib.mak.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/lib.mak 2013-05-09 17:02:39.088447180 +0100 +@@ -98,6 +98,9 @@ std_h=$(GLSRC)std.h $(arch_h) $(stdpre_h + + vmsmath_h=$(GLSRC)vmsmath.h + ++# declare here for use by string__h ++gssprintf_h=$(GLSRC)gssprintf.h ++ + dos__h=$(GLSRC)dos_.h + ctype__h=$(GLSRC)ctype_.h $(std_h) + dirent__h=$(GLSRC)dirent_.h $(std_h) $(gconfig__h) +@@ -110,7 +113,7 @@ math__h=$(GLSRC)math_.h $(std_h) $(vmsma + memory__h=$(GLSRC)memory_.h $(std_h) + setjmp__h=$(GLSRC)setjmp_.h + stat__h=$(GLSRC)stat_.h $(std_h) +-stdio__h=$(GLSRC)stdio_.h $(std_h) ++stdio__h=$(GLSRC)stdio_.h $(std_h) $(gssprintf_h) + string__h=$(GLSRC)string_.h $(std_h) + time__h=$(GLSRC)time_.h $(std_h) $(gconfig__h) + unistd__h=$(GLSRC)unistd_.h $(std_h) +@@ -151,6 +154,7 @@ gx_h=$(GLSRC)gx.h $(stdio__h) $(gdebug_h + $(gsio_h) $(gsmemory_h) $(gstypes_h) $(gserrors_h) + gxsync_h=$(GLSRC)gxsync.h $(gpsync_h) $(gsmemory_h) + gxclthrd_h=$(GLSRC)gxclthrd.h $(gxsync_h) ++ + # Out of order + gsmemlok_h=$(GLSRC)gsmemlok.h $(gsmemory_h) $(gxsync_h) + gsnotify_h=$(GLSRC)gsnotify.h $(gsstype_h) +@@ -320,6 +324,10 @@ $(AUX)gsutil.$(OBJ) : $(GLSRC)gsutil.c $ + $(gsrect_h) $(gsuid_h) $(gsutil_h) $(gzstate_h) $(gxdcolor_h) $(MAKEDIRS) + $(GLCCAUX) $(AUXO_)gsutil.$(OBJ) $(C_) $(GLSRC)gsutil.c + ++$(GLOBJ)gssprintf.$(OBJ) : $(GLSRC)gssprintf.c $(gssprintf_h) $(triodef_h) $(trio_h) \ ++$(triop_h) $(triostr_h) $(trionan_h) ++ $(GLCC) $(I_)$(TRIOSRCDIR)$(_I) $(GLO_)gssprintf.$(OBJ) $(C_) $(GLSRC)gssprintf.c ++ + # MD5 digest + md5_h=$(GLSRC)md5.h + # We have to use a slightly different compilation approach in order to +@@ -1309,7 +1317,7 @@ LIB10s=$(GLOBJ)gsmalloc.$(OBJ) $(GLOBJ)m + LIB11s=$(GLOBJ)gsmemory.$(OBJ) $(GLOBJ)gsmemret.$(OBJ) $(GLOBJ)gsmisc.$(OBJ) $(GLOBJ)gsnotify.$(OBJ) $(GLOBJ)gslibctx.$(OBJ) + LIB12s=$(GLOBJ)gspaint.$(OBJ) $(GLOBJ)gsparam.$(OBJ) $(GLOBJ)gspath.$(OBJ) + LIB13s=$(GLOBJ)gsserial.$(OBJ) $(GLOBJ)gsstate.$(OBJ) $(GLOBJ)gstext.$(OBJ)\ +- $(GLOBJ)gsutil.$(OBJ) ++ $(GLOBJ)gsutil.$(OBJ) $(TRIOOBJS) $(GLOBJ)gssprintf.$(OBJ) + LIB1x=$(GLOBJ)gxacpath.$(OBJ) $(GLOBJ)gxbcache.$(OBJ) $(GLOBJ)gxccache.$(OBJ) + LIB2x=$(GLOBJ)gxccman.$(OBJ) $(GLOBJ)gxchar.$(OBJ) $(GLOBJ)gxcht.$(OBJ) + LIB3x=$(GLOBJ)gxclip.$(OBJ) $(GLOBJ)gxcmap.$(OBJ) $(GLOBJ)gxcpath.$(OBJ) +diff -up ghostscript-9.07/base/md5main.c.gs_sprintf ghostscript-9.07/base/md5main.c +--- ghostscript-9.07/base/md5main.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/md5main.c 2013-05-09 17:02:39.088447180 +0100 +@@ -87,7 +87,7 @@ do_test(void) + gs_md5_append(&state, (const gs_md5_byte_t *)test[i], strlen(test[i])); + gs_md5_finish(&state, digest); + for (di = 0; di < 16; ++di) +- sprintf(hex_output + di * 2, "%02x", digest[di]); ++ gs_sprintf(hex_output + di * 2, "%02x", digest[di]); + if (strcmp(hex_output, test[i + 1])) { + printf("MD5 (\"%s\") = ", test[i]); + puts(hex_output); +diff -up ghostscript-9.07/base/mkromfs.c.gs_sprintf ghostscript-9.07/base/mkromfs.c +--- ghostscript-9.07/base/mkromfs.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/mkromfs.c 2013-05-09 17:02:39.088447180 +0100 +@@ -64,6 +64,8 @@ + * + */ + ++/* prevent gp.h redefining sprintf */ ++#define sprintf sprintf + #include "stdpre.h" + #include "stdint_.h" + #include "time_.h" +diff -up ghostscript-9.07/base/sdcparam.c.gs_sprintf ghostscript-9.07/base/sdcparam.c +--- ghostscript-9.07/base/sdcparam.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/sdcparam.c 2013-05-09 17:02:39.088447180 +0100 +@@ -200,7 +200,7 @@ s_DCT_get_quantization_tables(gs_param_l + gs_param_string str; + gs_param_float_array fa; + +- sprintf(key, "%d", i); ++ gs_sprintf(key, "%d", i); + if (QFactor == 1.0) { + code = quant_param_string(&str, DCTSIZE2, + table_ptrs[comp_info[i].quant_tbl_no]->quantval, +@@ -474,7 +474,7 @@ s_DCT_put_quantization_tables(gs_param_l + char istr[5]; /* i converted to string key */ + UINT16 values[DCTSIZE2]; + +- sprintf(istr, "%d", i); ++ gs_sprintf(istr, "%d", i); + code = quant_params(quant_tables.list, istr, DCTSIZE2, values, + pdct->QFactor); + if (code < 0) +@@ -566,7 +566,7 @@ s_DCT_put_huffman_tables(gs_param_list * + UINT8 counts[16], values[256]; + + /* Collect the Huffman parameters. */ +- sprintf(istr, "%d", i); ++ gs_sprintf(istr, "%d", i); + code = s_DCT_byte_params(huff_tables.list, istr, 0, 16, counts); + if (code < 0) + return code; +diff -up ghostscript-9.07/base/sjbig2.c.gs_sprintf ghostscript-9.07/base/sjbig2.c +--- ghostscript-9.07/base/sjbig2.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/sjbig2.c 2013-05-09 17:02:39.089447184 +0100 +@@ -65,7 +65,7 @@ s_jbig2decode_error(void *error_callback + default: type = "unknown message:"; break;; + } + if (seg_idx == -1) segment[0] = '\0'; +- else sprintf(segment, "(segment 0x%02x)", seg_idx); ++ else gs_sprintf(segment, "(segment 0x%02x)", seg_idx); + + if (state) + { +diff -up ghostscript-9.07/base/spprint.c.gs_sprintf ghostscript-9.07/base/spprint.c +--- ghostscript-9.07/base/spprint.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/spprint.c 2013-05-09 17:02:39.089447184 +0100 +@@ -83,7 +83,7 @@ pprintd1(stream * s, const char *format, + if (*fp == 0 || fp[1] != 'd') /* shouldn't happen! */ + lprintf1("Bad format in pprintd1: %s\n", format); + #endif +- sprintf(str, "%d", v); ++ gs_sprintf(str, "%d", v); + pputs_short(s, str); + return pprintf_scan(s, fp + 2); + } +@@ -115,12 +115,12 @@ pprintg1(stream * s, const char *format, + if (*fp == 0 || fp[1] != 'g') /* shouldn't happen! */ + lprintf1("Bad format in pprintg: %s\n", format); + #endif +- sprintf(str, "%f", 1.5); ++ gs_sprintf(str, "%f", 1.5); + dot = str[1]; /* locale-dependent */ +- sprintf(str, "%g", v); ++ gs_sprintf(str, "%g", v); + if (strchr(str, 'e')) { + /* Bad news. Try again using f-format. */ +- sprintf(str, (fabs(v) > 1 ? "%1.1f" : "%1.8f"), v); ++ gs_sprintf(str, (fabs(v) > 1 ? "%1.1f" : "%1.8f"), v); + } + /* Juggling locales isn't thread-safe. Posix me harder. */ + if (dot != '.') { +@@ -165,7 +165,7 @@ pprintld1(stream * s, const char *format + if (*fp == 0 || fp[1] != 'l' || fp[2] != 'd') /* shouldn't happen! */ + lprintf1("Bad format in pprintld: %s\n", format); + #endif +- sprintf(str, "%ld", v); ++ gs_sprintf(str, "%ld", v); + pputs_short(s, str); + return pprintf_scan(s, fp + 3); + } +diff -up ghostscript-9.07/base/trio.mak.gs_sprintf ghostscript-9.07/base/trio.mak +--- ghostscript-9.07/base/trio.mak.gs_sprintf 2013-05-09 17:02:39.089447184 +0100 ++++ ghostscript-9.07/base/trio.mak 2013-05-09 17:02:39.089447184 +0100 +@@ -0,0 +1,57 @@ ++# Copyright (C) 2001-2012 Artifex Software, Inc. ++# All Rights Reserved. ++# ++# This software is provided AS-IS with no warranty, either express or ++# implied. ++# ++# This software is distributed under license and may not be copied, ++# modified or distributed except as expressly authorized under the terms ++# of the license contained in the file LICENSE in this distribution. ++# ++# Refer to licensing information at http://www.artifex.com or contact ++# Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, ++# CA 94903, U.S.A., +1(415)492-9861, for further information. ++# ++# makefile for trio - locale-less s(n)printf/s(n)canf ++# ++# Users of this makefile must define the following: ++# TRIO_CFLAGS - Compiler flags for building the source, ++# TRIOSRCDIR - the expat source top-level directory, ++# TIOOBJDIR - directory for object files. ++ ++# Define the name of this makefile ++TRIO_MAK=$(GLSRCDIR)$(D)trio.mak ++ ++# local aliases ++TRIOSRC=$(TRIOSRCDIR)$(D) ++TRIOOBJ=$(TRIOOBJDIR)$(D) ++TRIOO_=$(O_)$(TRIOOBJ) ++ ++TRIOCFLAGS=$(CFLAGS) $(TRIO_CFLAGS) $(D_)TRIO_EMBED_STRING$(_D) $(D_)TRIO_FEATURE_CLOSURE=0$(_D) \ ++$(D_)TRIO_FEATURE_DYNAMICSTRING=0$(_D) $(D_)TRIO_MINIMAL=0$(_D) \ ++$(D_)TRIO_FEATURE_USER_DEFINED=0$(_D) $(D_)TRIO_EXTENSION=0$(_D)\ ++$(D_)TRIO_FUNC_TO_FLOAT$(_D) $(I_)$(TRIOSRCDIR)$(_I) \ ++$(D_)TRIO_MALLOC=no_malloc$(_D) $(D_)TRIO_REALLOC=no_realloc$(_D) $(D_)TRIO_FREE=no_free$(_D) ++ ++ ++# NB: we can't use the normal $(CC_) here because msvccmd.mak ++# adds /Za which conflicts with the trio source. ++TRIOCC=$(CC) $(TRIOCFLAGS) ++ ++TRIOOBJS=$(TRIOOBJ)triostr.$(OBJ) $(TRIOOBJ)trio.$(OBJ) $(TRIOOBJ)trionan.$(OBJ) ++ ++triodef_h=$(TRIOSRC)triodef.h ++trio_h=$(TRIOSRC)trio.h ++triop_h=$(TRIOSRC)triop.h ++triostr_h=$(TRIOSRC)triostr.h ++ ++TRIOHDRS=$(triodef_h) $(trio_h) $(triop_h) $(triostr_h) ++ ++$(TRIOOBJ)triostr.$(OBJ) : $(TRIOSRC)triostr.c $(TRIOHDRS) $(TRIO_MAK) ++ $(TRIOCC) $(TRIOO_)triostr.$(OBJ) $(C_) $(TRIOSRC)triostr.c ++ ++$(TRIOOBJ)trio.$(OBJ) : $(TRIOSRC)trio.c $(TRIOHDRS) $(TRIO_MAK) ++ $(TRIOCC) $(TRIOO_)trio.$(OBJ) $(C_) $(TRIOSRC)trio.c ++ ++$(TRIOOBJ)trionan.$(OBJ) : $(TRIOSRC)trionan.c $(TRIOHDRS) $(TRIO_MAK) ++ $(TRIOCC) $(TRIOO_)trionan.$(OBJ) $(C_) $(TRIOSRC)trionan.c +diff -up ghostscript-9.07/base/unixansi.mak.gs_sprintf ghostscript-9.07/base/unixansi.mak +--- ghostscript-9.07/base/unixansi.mak.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/unixansi.mak 2013-05-09 17:02:39.089447184 +0100 +@@ -152,6 +152,8 @@ TIFFPLATFORM=unix + TIFFCONFIG_SUFFIX=.unix + LIBTIFF_NAME=tiff + ++TRIOSRCDIR=trio ++ + # Define the directory where the zlib sources are stored. + # See zlib.mak for more information. + +@@ -392,6 +394,7 @@ CC_SHARED=$(CC_) + + include $(GLSRCDIR)/unixhead.mak + include $(GLSRCDIR)/gs.mak ++include $(GLSRCDIR)/trio.mak + # psromfs.mak must precede lib.mak + include $(PSSRCDIR)/psromfs.mak + include $(GLSRCDIR)/lib.mak +diff -up ghostscript-9.07/base/unix-gcc.mak.gs_sprintf ghostscript-9.07/base/unix-gcc.mak +--- ghostscript-9.07/base/unix-gcc.mak.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/unix-gcc.mak 2013-05-09 17:02:39.089447184 +0100 +@@ -165,6 +165,8 @@ TIFFPLATFORM=unix + TIFFCONFIG_SUFFIX=.unix + LIBTIFF_NAME=tiff + ++TRIOSRCDIR=trio ++ + # Define the directory where the zlib sources are stored. + # See zlib.mak for more information. + +@@ -461,6 +463,7 @@ MAKEDIRSTOP=directories + + include $(GLSRCDIR)/unixhead.mak + include $(GLSRCDIR)/gs.mak ++include $(GLSRCDIR)/trio.mak + # psromfs.mak must precede lib.mak + include $(PSSRCDIR)/psromfs.mak + include $(GLSRCDIR)/lib.mak +diff -up ghostscript-9.07/base/winlib.mak.gs_sprintf ghostscript-9.07/base/winlib.mak +--- ghostscript-9.07/base/winlib.mak.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/winlib.mak 2013-05-09 17:02:39.090447188 +0100 +@@ -133,6 +133,7 @@ BEGINFILES=$(GLGENDIR)\ccf32.tr\ + #!include $(COMMONDIR)/pcdefs.mak + #!include $(COMMONDIR)/generic.mak + !include $(GLSRCDIR)\gs.mak ++!include $(GLSRCDIR)\trio.mak + !include $(GLSRCDIR)\lib.mak + !include $(GLSRCDIR)\freetype.mak + !if "$(UFST_BRIDGE)"=="1" +diff -up ghostscript-9.07/base/wrfont.c.gs_sprintf ghostscript-9.07/base/wrfont.c +--- ghostscript-9.07/base/wrfont.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/wrfont.c 2013-05-09 17:02:39.090447188 +0100 +@@ -72,7 +72,7 @@ WRF_wfloat(WRF_output * a_output, double + { + char buffer[32]; + +- sprintf(buffer, "%f", a_float); ++ gs_sprintf(buffer, "%f", a_float); + WRF_wstring(a_output, buffer); + } + +@@ -81,6 +81,6 @@ WRF_wint(WRF_output * a_output, long a_i + { + char buffer[32]; + +- sprintf(buffer, "%ld", a_int); ++ gs_sprintf(buffer, "%ld", a_int); + WRF_wstring(a_output, buffer); + } +diff -up ghostscript-9.07/base/write_t1.c.gs_sprintf ghostscript-9.07/base/write_t1.c +--- ghostscript-9.07/base/write_t1.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/write_t1.c 2013-05-09 17:02:39.090447188 +0100 +@@ -300,7 +300,7 @@ write_main_dictionary(gs_fapi_font * a_f + if (x) + entries++; + +- sprintf(Buffer, "/FontInfo %d dict dup begin\n", entries); ++ gs_sprintf(Buffer, "/FontInfo %d dict dup begin\n", entries); + WRF_wstring(a_output, Buffer); + x = a_fapi_font->get_word(a_fapi_font, + gs_fapi_font_feature_BlendAxisTypes_count, +@@ -330,7 +330,7 @@ write_main_dictionary(gs_fapi_font * a_f + x1 = a_fapi_font->get_float(a_fapi_font, + gs_fapi_font_feature_BlendDesignPositionsArrayValue, + i * 8 + j); +- sprintf(Buffer, "%f ", x1); ++ gs_sprintf(Buffer, "%f ", x1); + WRF_wstring(a_output, Buffer); + } + WRF_wstring(a_output, "]"); +@@ -352,12 +352,12 @@ write_main_dictionary(gs_fapi_font * a_f + x1 = a_fapi_font->get_float(a_fapi_font, + gs_fapi_font_feature_BlendDesignPositionsArrayValue, + i * 64 + j * 64); +- sprintf(Buffer, "%f ", x1); ++ gs_sprintf(Buffer, "%f ", x1); + WRF_wstring(a_output, Buffer); + x1 = a_fapi_font->get_float(a_fapi_font, + gs_fapi_font_feature_BlendDesignPositionsArrayValue, + i * 64 + j * 64 + 1); +- sprintf(Buffer, "%f ", x1); ++ gs_sprintf(Buffer, "%f ", x1); + WRF_wstring(a_output, Buffer); + WRF_wstring(a_output, "]"); + } +@@ -397,7 +397,7 @@ write_main_dictionary(gs_fapi_font * a_f + for (i = 0; i < x; i++) { + x1 = a_fapi_font->get_float(a_fapi_font, + gs_fapi_font_feature_WeightVector, i); +- sprintf(Buffer, "%f ", x1); ++ gs_sprintf(Buffer, "%f ", x1); + WRF_wstring(a_output, Buffer); + } + WRF_wstring(a_output, "] def\n"); +diff -up ghostscript-9.07/base/write_t2.c.gs_sprintf ghostscript-9.07/base/write_t2.c +--- ghostscript-9.07/base/write_t2.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/base/write_t2.c 2013-05-09 17:02:39.090447188 +0100 +@@ -70,7 +70,7 @@ write_type2_float(WRF_output * a_output, + int high = true; + char c = 0; + +- sprintf(buffer, "%f", a_float); ++ gs_sprintf(buffer, "%f", a_float); + WRF_wbyte(a_output, 30); + for (;;) { + char n = 0; +diff -up ghostscript-9.07/contrib/eplaser/gdevescv.c.gs_sprintf ghostscript-9.07/contrib/eplaser/gdevescv.c +--- ghostscript-9.07/contrib/eplaser/gdevescv.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/eplaser/gdevescv.c 2013-05-09 17:02:39.091447193 +0100 +@@ -545,7 +545,7 @@ escv_vector_dopath(gx_device_vector * vd + y = fixed2float(vs[1]) / scale.y; + + /* ֥ѥ̿ p1 */ +- (void)sprintf(obuf, ESC_GS "0;%d;%dmvpG", (int)x, (int)y); ++ (void)gs_sprintf(obuf, ESC_GS "0;%d;%dmvpG", (int)x, (int)y); + lputs(s, obuf); + + if (first) +@@ -556,11 +556,11 @@ escv_vector_dopath(gx_device_vector * vd + cnt = 1; + for (pseg = cenum.pseg; pseg != 0 && pseg->type == s_line; cnt++, pseg = pseg->next); + +- (void)sprintf(obuf, ESC_GS "0;%d", cnt); ++ (void)gs_sprintf(obuf, ESC_GS "0;%d", cnt); + lputs(s, obuf); + + do { +- (void)sprintf(obuf, ";%d;%d", ++ (void)gs_sprintf(obuf, ";%d;%d", + (int)(fixed2float(vs[0]) / scale.x), + (int)(fixed2float(vs[1]) / scale.y)); + lputs(s, obuf); +@@ -577,11 +577,11 @@ escv_vector_dopath(gx_device_vector * vd + case gs_pe_curveto: + cnt = 1; + for (pseg = cenum.pseg; pseg != 0 && pseg->type == s_curve; cnt++, pseg = pseg->next); +- (void)sprintf(obuf, ESC_GS "0;%d", cnt * 3); ++ (void)gs_sprintf(obuf, ESC_GS "0;%d", cnt * 3); + lputs(s, obuf); + + do { +- (void)sprintf(obuf, ";%d;%d;%d;%d;%d;%d", ++ (void)gs_sprintf(obuf, ";%d;%d;%d;%d;%d;%d", + (int)(fixed2float(vs[0]) / scale.x), (int)(fixed2float(vs[1]) / scale.y), + (int)(fixed2float(vs[2]) / scale.x), (int)(fixed2float(vs[3]) / scale.y), + (int)(fixed2float(vs[4]) / scale.x), (int)(fixed2float(vs[5]) / scale.y)); +@@ -637,7 +637,7 @@ escv_vector_dorect(gx_device_vector * vd + + scale = vdev->scale; + +- (void)sprintf(obuf, ESC_GS "0;%d;%d;%d;%d;0;0rrpG", ++ (void)gs_sprintf(obuf, ESC_GS "0;%d;%d;%d;%d;0;0rrpG", + (int)(fixed2float(x0) / scale.x), + (int)(fixed2float(y0) / scale.y), + (int)(fixed2float(x1) / scale.x), +@@ -1116,7 +1116,7 @@ escv_beginpage(gx_device_vector * vdev) + lputs(s, " PU=15"); + } + } else if (pdev->cassetFeed) { +- (void)sprintf(ebuf, " PU=%d", pdev->cassetFeed); ++ (void)gs_sprintf(ebuf, " PU=%d", pdev->cassetFeed); + lputs(s, ebuf); + } else { + lputs(s, " PU=AU"); +@@ -1146,14 +1146,14 @@ escv_beginpage(gx_device_vector * vdev) + + /* lp8000c not have QT */ + if (strcmp(pdev->dname, "lp8000c") == 0) { +- (void)sprintf(ebuf, " QT=1 CO=%d", pdev->NumCopies); ++ (void)gs_sprintf(ebuf, " QT=1 CO=%d", pdev->NumCopies); + } else { + if (pdev->Collate) { + /* CO is 1, when set QT */ +- (void)sprintf(ebuf, " QT=%d CO=1", pdev->NumCopies); ++ (void)gs_sprintf(ebuf, " QT=%d CO=1", pdev->NumCopies); + } else { + /* QT is 1, when not specified QT */ +- (void)sprintf(ebuf, " QT=1 CO=%d", pdev->NumCopies); ++ (void)gs_sprintf(ebuf, " QT=1 CO=%d", pdev->NumCopies); + } + } + lputs(s, ebuf); +@@ -1162,7 +1162,7 @@ escv_beginpage(gx_device_vector * vdev) + } + + if (pdev->toner_density) { +- (void)sprintf(ebuf, " DL=%d", pdev->toner_density); ++ (void)gs_sprintf(ebuf, " DL=%d", pdev->toner_density); + lputs(s, ebuf); + } + +@@ -1320,7 +1320,7 @@ escv_setlinewidth(gx_device_vector * vde + /* ESC/Page ǤüܹϣĤΥޥɤˤʤäƤ뤿ݻƤ */ + pdev -> lwidth = width; + +- (void)sprintf(obuf, ESC_GS "%d;%d;%dlwG", ++ (void)gs_sprintf(obuf, ESC_GS "%d;%d;%dlwG", + (int)(pdev -> lwidth), + (int)(pdev -> cap), + (int)(pdev -> join)); +@@ -1341,7 +1341,7 @@ escv_setlinecap(gx_device_vector * vdev, + + if (pdev -> cap >= 3) return -1; + +- (void)sprintf(obuf, ESC_GS "%d;%d;%dlwG", ++ (void)gs_sprintf(obuf, ESC_GS "%d;%d;%dlwG", + (int)(pdev -> lwidth), + (int)(pdev -> cap), + (int)(pdev -> join)); +@@ -1372,7 +1372,7 @@ escv_setlinejoin(gx_device_vector * vdev + return -1; + } + +- (void)sprintf(obuf, ESC_GS "%d;%d;%dlwG", ++ (void)gs_sprintf(obuf, ESC_GS "%d;%d;%dlwG", + (int)(pdev -> lwidth), + (int)(pdev -> cap), + (int)(pdev -> join)); +@@ -1394,14 +1394,14 @@ escv_setmiterlimit(gx_device_vector * vd + if (pdev -> join != 3) { + /* ŪܹԤ */ + pdev -> join = 3; +- (void)sprintf(obuf, ESC_GS "%d;%d;%dlwG", ++ (void)gs_sprintf(obuf, ESC_GS "%d;%d;%dlwG", + (int)(pdev -> lwidth), + (int)(pdev -> cap), + (int)(pdev -> join)); + lputs(s, obuf); + } + +- (void)sprintf(obuf, ESC_GS "1;%dmlG", (int)limit); ++ (void)gs_sprintf(obuf, ESC_GS "1;%dmlG", (int)limit); + lputs(s, obuf); + + return 0; +@@ -1433,7 +1433,7 @@ escv_setfillcolor(gx_device_vector * vde + + if( 0 == pdev->colormode ) { /* ESC/Page (Monochrome) */ + +- (void)sprintf(obuf, /*ESC_GS "1owE"*/ ESC_GS "0;0;100spE" ESC_GS "1;0;%ldccE" ,color); ++ (void)gs_sprintf(obuf, /*ESC_GS "1owE"*/ ESC_GS "0;0;100spE" ESC_GS "1;0;%ldccE" ,color); + lputs(s, obuf); + + if (vdev->x_pixels_per_inch == 1200) { +@@ -1447,7 +1447,7 @@ escv_setfillcolor(gx_device_vector * vde + } else { /* ESC/Page-Color */ + + /* ѥϣλ꡿åɥѥ */ +- (void)sprintf(obuf, ESC_GS "1;2;3;%d;%d;%dfpE", ++ (void)gs_sprintf(obuf, ESC_GS "1;2;3;%d;%d;%dfpE", + (unsigned char)(color >> 16 & 0xff), + (unsigned char)(color >> 8 & 0xff), + (unsigned char)(color & 0xff)); +@@ -1477,7 +1477,7 @@ escv_setstrokecolor(gx_device_vector * v + + pdev->current_color = color; + +- (void)sprintf(obuf, /*ESC_GS "1owE"*/ ESC_GS "0;0;100spE" ESC_GS "1;1;%ldccE" , color); ++ (void)gs_sprintf(obuf, /*ESC_GS "1owE"*/ ESC_GS "0;0;100spE" ESC_GS "1;1;%ldccE" , color); + lputs(s, obuf); + + if (vdev->x_pixels_per_inch == 1200) { +@@ -1494,7 +1494,7 @@ escv_setstrokecolor(gx_device_vector * v + + pdev->current_color = color; + /* ѥϣο꡿åɥѥ */ +- (void)sprintf(obuf, ESC_GS "1;2;3;%d;%d;%dfpE" ESC_GS "2;2;1;0;0cpE", ++ (void)gs_sprintf(obuf, ESC_GS "1;2;3;%d;%d;%dfpE" ESC_GS "2;2;1;0;0cpE", + (unsigned char)(color >> 16 & 0xff), + (unsigned char)(color >> 8 & 0xff), + (unsigned char)(color & 0xff)); +@@ -1538,11 +1538,11 @@ escv_setdash(gx_device_vector * vdev, co + if (count) { + if (count == 1) { + #if GS_VERSION_MAJOR == 5 +- (void)sprintf(obuf, ESC_GS "1;%d;%ddlG", ++ (void)gs_sprintf(obuf, ESC_GS "1;%d;%ddlG", + (int)(pattern[0] * scale / vdev->x_pixels_per_inch + 0.5), + (int)(pattern[0] * scale / vdev->x_pixels_per_inch + 0.5)); + #else +- (void)sprintf(obuf, ESC_GS "1;%d;%ddlG", (int) pattern[0], (int) pattern[0]); ++ (void)gs_sprintf(obuf, ESC_GS "1;%d;%ddlG", (int) pattern[0], (int) pattern[0]); + #endif + lputs(s, obuf); + } else { +@@ -1554,10 +1554,10 @@ escv_setdash(gx_device_vector * vdev, co + lputs(s, ESC_GS "1"); + for (i = 0; i < count; ++i) { + #if GS_VERSION_MAJOR == 5 +- (void)sprintf(obuf, ";%d", (int)(pattern[i] * scale / vdev->x_pixels_per_inch + 0.5)); ++ (void)gs_sprintf(obuf, ";%d", (int)(pattern[i] * scale / vdev->x_pixels_per_inch + 0.5)); + + #else +- (void)sprintf(obuf, ";%d", (int) pattern[i]); ++ (void)gs_sprintf(obuf, ";%d", (int) pattern[i]); + #endif + lputs(s, obuf); + } +@@ -1608,7 +1608,7 @@ escv_moveto(gx_device_vector * vdev, + char obuf[64]; + + /* ֥ѥ̿ */ +- (void)sprintf(obuf, ESC_GS "0;%d;%dmvpG", (int)x1, (int)y1); ++ (void)gs_sprintf(obuf, ESC_GS "0;%d;%dmvpG", (int)x1, (int)y1); + lputs(s, obuf); + + return 0; +@@ -1622,7 +1622,7 @@ escv_lineto(gx_device_vector * vdev, + gx_device_escv *pdev = (gx_device_escv *) vdev; + char obuf[64]; + +- (void)sprintf(obuf, ESC_GS "0;1;%d;%dlnpG", (int)x1, (int)y1); ++ (void)gs_sprintf(obuf, ESC_GS "0;1;%d;%dlnpG", (int)x1, (int)y1); + lputs(s, obuf); + pdev->ispath = 1; + +@@ -1639,7 +1639,7 @@ escv_curveto(gx_device_vector * vdev, fl + char obuf[128]; + + /* ٥ */ +- (void)sprintf(obuf, ESC_GS "0;3;%d;%d;%d;%d;%d;%dbzpG", ++ (void)gs_sprintf(obuf, ESC_GS "0;3;%d;%d;%d;%d;%d;%dbzpG", + (int)x1, (int)y1, (int)x2, (int)y2, (int)x3, (int)y3); + lputs(s, obuf); + pdev->ispath = 1; +@@ -2176,7 +2176,7 @@ escv_copy_mono(gx_device * dev, const by + if( 0 == pdev->colormode ) { /* ESC/Page (Monochrome) */ + + /* lputs(s, ESC_GS "1owE");*/ +- (void)sprintf(obuf, ESC_GS "1;1;%ldccE", c_color); ++ (void)gs_sprintf(obuf, ESC_GS "1;1;%ldccE", c_color); + lputs(s, obuf); + + if (vdev->x_pixels_per_inch == 1200) { +@@ -2263,7 +2263,7 @@ escv_copy_mono(gx_device * dev, const by + } else { /* ESC/Page-Color */ + + /* ѥϣλ꡿åɥѥ */ +- (void)sprintf(obuf, ESC_GS "1;2;3;%d;%d;%dfpE", ++ (void)gs_sprintf(obuf, ESC_GS "1;2;3;%d;%d;%dfpE", + (unsigned char)(c_color >> 16 & 0xff), + (unsigned char)(c_color >> 8 & 0xff), + (unsigned char)(c_color & 0xff)); +@@ -2388,7 +2388,7 @@ escv_fill_mask(gx_device * dev, + if (!gx_dc_is_pure(pdcolor)) return_error(gs_error_rangecheck); + pdev->current_color = color; + +- (void)sprintf(obuf, ESC_GS "0;0;100spE" ESC_GS "1;1;%ldccE" ,color); ++ (void)gs_sprintf(obuf, ESC_GS "0;0;100spE" ESC_GS "1;1;%ldccE" ,color); + lputs(s, obuf); + + if (vdev->x_pixels_per_inch == 1200) { +@@ -2428,7 +2428,7 @@ escv_fill_mask(gx_device * dev, + memcpy(buf + i * width_bytes, data + (data_x >> 3) + i * raster, width_bytes); + } + +- (void)sprintf(obuf, ESC_GS "%d;%d;%d;%d;0db{F", num_bytes, (int)(id & VCACHE), w, h); ++ (void)gs_sprintf(obuf, ESC_GS "%d;%d;%d;%d;0db{F", num_bytes, (int)(id & VCACHE), w, h); + lputs(s, obuf); + put_bytes(s, buf, num_bytes); + +@@ -2436,9 +2436,9 @@ escv_fill_mask(gx_device * dev, + pdev -> id_cache[id & VCACHE] = id; + } + +- (void)sprintf(obuf, ESC_GS "%dX" ESC_GS "%dY", x, y); ++ (void)gs_sprintf(obuf, ESC_GS "%dX" ESC_GS "%dY", x, y); + lputs(s, obuf); +- (void)sprintf(obuf, ESC_GS "%lddbF", id & VCACHE); ++ (void)gs_sprintf(obuf, ESC_GS "%lddbF", id & VCACHE); + lputs(s, obuf); + + return 0; +@@ -2603,7 +2603,7 @@ escv_begin_image(gx_device * dev, + if( 0 == pdev->colormode ) { /* ESC/Page (Monochrome) */ + + /* lputs(s, ESC_GS "1owE");*/ +- (void)sprintf(obuf, ESC_GS "1;1;%ldccE", color); ++ (void)gs_sprintf(obuf, ESC_GS "1;1;%ldccE", color); + lputs(s, obuf); + + if (vdev->x_pixels_per_inch == 1200) { +@@ -2908,7 +2908,7 @@ static void escv_write_begin(gx_device * + + if( 0 == pdev->colormode ) { /* ESC/Page (Monochrome) */ + +- (void)sprintf(obuf, ESC_GS "%dX" ESC_GS "%dY", x, y); ++ (void)gs_sprintf(obuf, ESC_GS "%dX" ESC_GS "%dY", x, y); + lputs(s, obuf); + + comp = 10; +@@ -2916,34 +2916,34 @@ static void escv_write_begin(gx_device * + if (bits == 1) { + if (strcmp(pdev->dname, "lp1800") == 0 || + strcmp(pdev->dname, "lp9600") == 0) { +- (void)sprintf(obuf, ESC_GS "0bcI"); ++ (void)gs_sprintf(obuf, ESC_GS "0bcI"); + }else{ +- (void)sprintf(obuf, ESC_GS "5;%d;%d;%d;%d;%dsrI", sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "5;%d;%d;%d;%d;%dsrI", sw, sh, dw, dh, roll); + } + } else if (bits == 4) { + if (pdev -> c4map) { + pdev -> c4map = FALSE; + } +- (void)sprintf(obuf, ESC_GS "1;1;1;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "1;1;1;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } else if (bits == 8) { + if (pdev -> c8map) { + pdev -> c8map = FALSE; + } +- (void)sprintf(obuf, ESC_GS "1;1;1;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "1;1;1;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } else { + /* 24 bit */ +- (void)sprintf(obuf, ESC_GS "1;1;1;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "1;1;1;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } + + } else { /* ESC/Page-Color */ + +- (void)sprintf(obuf, ESC_GS "%dX" ESC_GS "%dY", x, y); ++ (void)gs_sprintf(obuf, ESC_GS "%dX" ESC_GS "%dY", x, y); + lputs(s, obuf); + + comp = 0; + + if (bits == 1) { +- (void)sprintf(obuf, ESC_GS "2;201;1;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "2;201;1;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } else if (bits == 4) { + if (pdev -> c4map) { + /* 顼ޥåϿ */ +@@ -2959,7 +2959,7 @@ static void escv_write_begin(gx_device * + gs_free_object(vdev->memory, tmp, "escv_write_begin(tmp4)"); + pdev -> c4map = FALSE; + } +- (void)sprintf(obuf, ESC_GS "2;203;2;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "2;203;2;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } else if (bits == 8) { + if (pdev -> c8map) { + /* 顼ޥåϿ */ +@@ -2975,10 +2975,10 @@ static void escv_write_begin(gx_device * + gs_free_object(vdev->memory, tmp, "escv_write_begin(tmp)"); + pdev -> c8map = FALSE; + } +- (void)sprintf(obuf, ESC_GS "2;204;4;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "2;204;4;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } else { + /* 24 bit */ +- (void)sprintf(obuf, ESC_GS "2;102;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); ++ (void)gs_sprintf(obuf, ESC_GS "2;102;0;%d;%d;%d;%d;%d;%dscrI", comp, sw, sh, dw, dh, roll); + } + + } /* ESC/Page-Color */ +@@ -3045,12 +3045,12 @@ static void escv_write_data(gx_device *d + if(bits == 1){ + if (strcmp(pdev->dname, "lp1800") == 0 || \ + strcmp(pdev->dname, "lp9600") == 0) { +- (void)sprintf(obuf, ESC_GS "%d;1;%d;%d;0db{I", bsize, w, ras); ++ (void)gs_sprintf(obuf, ESC_GS "%d;1;%d;%d;0db{I", bsize, w, ras); + }else{ +- (void)sprintf(obuf, ESC_GS "%d;%du{I", bsize, ras); ++ (void)gs_sprintf(obuf, ESC_GS "%d;%du{I", bsize, ras); + } + }else{ +- (void)sprintf(obuf, ESC_GS "%d;%dcu{I", bsize, ras); ++ (void)gs_sprintf(obuf, ESC_GS "%d;%dcu{I", bsize, ras); + } + lputs(s, obuf); + +@@ -3077,7 +3077,7 @@ static void escv_write_data(gx_device *d + buf = tmps; + } + +- (void)sprintf(obuf, ESC_GS "%d;%dcu{I", bsize, ras); ++ (void)gs_sprintf(obuf, ESC_GS "%d;%dcu{I", bsize, ras); + lputs(s, obuf); + put_bytes(s, buf, bsize); + +diff -up ghostscript-9.07/contrib/gdevcd8.c.gs_sprintf ghostscript-9.07/contrib/gdevcd8.c +--- ghostscript-9.07/contrib/gdevcd8.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/gdevcd8.c 2013-05-09 17:02:39.092447197 +0100 +@@ -2439,7 +2439,7 @@ do_gcr(int bytecount, byte * inbyte, con + #if 0 + if ((*cyan > 0) && (*magenta > 0) && (*yellow > 0)) + { +- sprintf(output, "%3d %3d %3d %3d - ", *cyan, *magenta, *yellow, *black); ++ gs_sprintf(output, "%3d %3d %3d %3d - ", *cyan, *magenta, *yellow, *black); + debug_print_string(output, strlen(output)); + } + #endif /* 0 */ +@@ -2486,7 +2486,7 @@ do_gcr(int bytecount, byte * inbyte, con + #if 0 + if (ucr > 0) + { +- sprintf(output, "%3d %3d %3d %3d - %5d\n", *cyan, *magenta, *yellow, *black, ucr); ++ gs_sprintf(output, "%3d %3d %3d %3d - %5d\n", *cyan, *magenta, *yellow, *black, ucr); + debug_print_string(output, strlen(output)); + } + #endif /* 0 */ +diff -up ghostscript-9.07/contrib/gdevdj9.c.gs_sprintf ghostscript-9.07/contrib/gdevdj9.c +--- ghostscript-9.07/contrib/gdevdj9.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/gdevdj9.c 2013-05-09 17:02:39.092447197 +0100 +@@ -2563,7 +2563,7 @@ static int cdj970_write_header (gx_devic + + memset (startbuffer, 0, 1260); + +- sprintf (&(startbuffer[600]), "\033E\033%%-12345X@PJL JOB NAME = \"GHOST BY RENE HARSCH\"\n@PJL ENTER LANGUAGE=PCL3GUI\n"); ++ gs_sprintf (&(startbuffer[600]), "\033E\033%%-12345X@PJL JOB NAME = \"GHOST BY RENE HARSCH\"\n@PJL ENTER LANGUAGE=PCL3GUI\n"); + + fwrite (startbuffer, sizeof(char), 678, prn_stream); + +diff -up ghostscript-9.07/contrib/gdevhl12.c.gs_sprintf ghostscript-9.07/contrib/gdevhl12.c +--- ghostscript-9.07/contrib/gdevhl12.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/gdevhl12.c 2013-05-09 17:02:39.092447197 +0100 +@@ -662,7 +662,7 @@ hl1250_print_page_copies(gx_device_print + (-120, 0) compared to the one in the ljet4 driver (-180, 36) + (X, Y coordinates here are specified in 1/720-inch units). */ + +- sprintf(page_init, "\033&l-120U\033*r0F\033&u%dD%s", y_dpi, tray_pcl); ++ gs_sprintf(page_init, "\033&l-120U\033*r0F\033&u%dD%s", y_dpi, tray_pcl); + return dljet_mono_print_page_copies(pdev, prn_stream, num_copies, + y_dpi, PCL_LJ4_FEATURES, + page_init, page_init, false); +diff -up ghostscript-9.07/contrib/gdevxes.c.gs_sprintf ghostscript-9.07/contrib/gdevxes.c +--- ghostscript-9.07/contrib/gdevxes.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/gdevxes.c 2013-05-09 17:02:39.092447197 +0100 +@@ -173,7 +173,7 @@ sixel_print_page(gx_device_printer *pdev + if ( tmp[l] == last ) { + count++; + if (count==32767) { +- run[sprintf(run, "%d", count)]='\0'; ++ run[gs_sprintf(run, "%d", count)]='\0'; + for (t=run; *t; t++)fputc( *t, prn_stream ); + fputc( last, prn_stream ); + last = '\0'; +@@ -186,7 +186,7 @@ sixel_print_page(gx_device_printer *pdev + case 0: break; + case 1: fputc( last, prn_stream ); + break; +- default:run[sprintf(run, "%d", count)]='\0'; ++ default:run[gs_sprintf(run, "%d", count)]='\0'; + for (t=run; *t; t++) fputc( *t, prn_stream ); + fputc( last, prn_stream ); + break; +@@ -203,7 +203,7 @@ sixel_print_page(gx_device_printer *pdev + case 0: break; + case 1: fputc( last, prn_stream ); + break; +- default:run[sprintf(run, "%d", count)]='\0'; ++ default:run[gs_sprintf(run, "%d", count)]='\0'; + for (t=run; *t; t++) fputc( *t, prn_stream ); + fputc( last, prn_stream ); + break; +diff -up ghostscript-9.07/contrib/gomni.c.gs_sprintf ghostscript-9.07/contrib/gomni.c +--- ghostscript-9.07/contrib/gomni.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/gomni.c 2013-05-09 17:02:39.093447201 +0100 +@@ -790,7 +790,7 @@ SetupDevice (gx_device *pgxdev, gs_param + "Devicestring"); + if (pszDeviceLib) + { +- sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cOmnilib); ++ gs_sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cOmnilib); + + pDev->hmodOmni = g_module_open (pszDeviceLib, (GModuleFlags)0); + +@@ -817,7 +817,7 @@ SetupDevice (gx_device *pgxdev, gs_param + "Devicestring"); + if (pszDeviceLib) + { +- sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cOmnilib); ++ gs_sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cOmnilib); + + pModule = g_module_open (pszDeviceLib, (GModuleFlags)0); + +@@ -1053,7 +1053,7 @@ SetupDevice (gx_device *pgxdev, gs_param + + if (pszDeviceLib) + { +- sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cDialogName); ++ gs_sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cDialogName); + + if (fDebugOutput) dprintf1 ("attempting to load - %s\n", pszDeviceLib); + +@@ -1079,7 +1079,7 @@ SetupDevice (gx_device *pgxdev, gs_param + + if (pszDeviceLib) + { +- sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cDialogName); ++ gs_sprintf (pszDeviceLib, "%s%s", apszLibraryPaths[i], cDialogName); + + pModule = g_module_open (pszDeviceLib, (GModuleFlags)0); + +diff -up ghostscript-9.07/contrib/japanese/dviprlib.c.gs_sprintf ghostscript-9.07/contrib/japanese/dviprlib.c +--- ghostscript-9.07/contrib/japanese/dviprlib.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/dviprlib.c 2013-05-09 17:02:39.093447201 +0100 +@@ -106,7 +106,7 @@ dviprt_read_S_cfg(dviprt_cfg_t *pcfg,dvi + goto not_cfg; + pcfg->version = rbuf[2] | ((uint)rbuf[3] << 8); + if (pcfg->version > CFG_VERSION) { +- sprintf(dviprt_message_buffer, ++ gs_sprintf(dviprt_message_buffer, + "This *.CFG file is too new version(ver.%u).\n",pcfg->version); + dviprt_printcfgerror(pinfo,dviprt_message_buffer,-1); + return CFG_ERROR_OTHER; +@@ -129,7 +129,7 @@ dviprt_read_S_cfg(dviprt_cfg_t *pcfg,dvi + if (n >= CFG_INTEGER_TYPE_COUNT) { + ptype = "integer"; + unknown_no: +- sprintf(dviprt_message_buffer, ++ gs_sprintf(dviprt_message_buffer, + "Unknown %s type value No.%d is found.\n",ptype,n); + dviprt_printcfgerror(pinfo,dviprt_message_buffer,-1); + return CFG_ERROR_OTHER; +@@ -346,7 +346,7 @@ dviprt_read_QR_cfg(dviprt_cfg_t *pcfg,dv + ptr++; + break; + default: +- sprintf(dviprt_message_buffer,"Unknown format %02X",type); ++ gs_sprintf(dviprt_message_buffer,"Unknown format %02X",type); + dviprt_printcfgerror(pinfo,dviprt_message_buffer,-1); + goto ex_func; + } +@@ -587,7 +587,7 @@ dviprt_readsrc(char *fname,dviprt_cfg_t + while (*pbuf && isspace(*pbuf)) pbuf++; + if (pitem->spec_f) { + dviprt_printcfgerror(&info,NULL,0); +- sprintf(dviprt_message_buffer, ++ gs_sprintf(dviprt_message_buffer, + "Item `%s' is specified twice.\n",pitem->name); + dviprt_printmessage(dviprt_message_buffer,-1); + code = CFG_ERROR_SYNTAX; +@@ -691,7 +691,7 @@ dviprt_readsrc(char *fname,dviprt_cfg_t + code = 0; + for (pitem = dviprt_items;pitem->name;pitem++) { + if (!pitem->spec_f && pitem->req_f) { +- sprintf(dviprt_message_buffer,"%s not found.\n",pitem->name); ++ gs_sprintf(dviprt_message_buffer,"%s not found.\n",pitem->name); + dviprt_printcfgerror(&info,dviprt_message_buffer,-1); + code++; + } +@@ -749,14 +749,14 @@ dviprt_readsrc(char *fname,dviprt_cfg_t + + for (pitem = dviprt_items;pitem->type>=0;pitem++) { + if (pitem->spec_f == 0) { +- sprintf(dviprt_message_buffer,": %s:",pitem->name); ++ gs_sprintf(dviprt_message_buffer,": %s:",pitem->name); + switch (pitem->type) { + case T_INTEGER: + if (pcfg->integer[pitem->no] >= 0) { + uint v = pcfg->integer[pitem->no]; + dviprt_printmessage(fname,-1); + dviprt_printmessage(dviprt_message_buffer,-1); +- sprintf(dviprt_message_buffer," %d\n",v); ++ gs_sprintf(dviprt_message_buffer," %d\n",v); + dviprt_printmessage(dviprt_message_buffer,-1); + } + break; +@@ -802,7 +802,7 @@ dviprt_set_integer(dviprt_cfg_item_t *pi + out_of_range: + dviprt_printtokenerror(pinfo,buf,strlen(buf),ERROR_OUTOFRANGE); + dviprt_printcfgerror(pinfo,"",-1); +- sprintf(dviprt_message_buffer, ++ gs_sprintf(dviprt_message_buffer, + "(%u <= value <= %u).\n",(uint)min,(uint)max); + dviprt_printmessage(dviprt_message_buffer,-1); + return CFG_ERROR_RANGE; +@@ -1108,10 +1108,10 @@ dviprt_set_rpexpr(dviprt_cfg_item_t *pit + pitem->no != CFG_AFTER_BIT_IMAGE) { + unavailable_value: + dviprt_printcfgerror(pinfo,"",-1); +- sprintf(dviprt_message_buffer,"Variable `%c' in ",(int)*pbuf); ++ gs_sprintf(dviprt_message_buffer,"Variable `%c' in ",(int)*pbuf); + dviprt_printmessage(dviprt_message_buffer,-1); + dviprt_printmessage(pbuf,(int)(pend-pbuf)); +- sprintf(dviprt_message_buffer," cannot be used in %s.\n",pitem->name); ++ gs_sprintf(dviprt_message_buffer," cannot be used in %s.\n",pitem->name); + dviprt_printmessage(dviprt_message_buffer,-1); + return CFG_ERROR_RANGE; + } +@@ -1144,7 +1144,7 @@ dviprt_set_rpexpr(dviprt_cfg_item_t *pit + case '^': op = CFG_OP_XOR; break; + default: + dviprt_printcfgerror(pinfo,NULL,0); +- sprintf(dviprt_message_buffer,"Unknown operator %c in ",(int)*pbuf); ++ gs_sprintf(dviprt_message_buffer,"Unknown operator %c in ",(int)*pbuf); + dviprt_printmessage(dviprt_message_buffer,-1); + dviprt_printmessage(pbuf,(int)(pend-pbuf)); + dviprt_printmessage(".\n",-1); +@@ -1520,7 +1520,7 @@ dviprt_printcfgerrorheader(dviprt_cfg_i + dviprt_printmessage(fn,-1); + dviprt_printmessage(": ",-1); + if (pinfo->line_no>0) { +- sprintf(dviprt_message_buffer,"%d: ",pinfo->line_no); ++ gs_sprintf(dviprt_message_buffer,"%d: ",pinfo->line_no); + dviprt_printmessage(dviprt_message_buffer,-1); + } + } +@@ -2210,9 +2210,9 @@ dviprt_output_expr(dviprt_print *pprint, + if (cols == 0) + strcpy(fmtbuf,"%"); + else +- sprintf(fmtbuf,"%%0%d",cols); ++ gs_sprintf(fmtbuf,"%%0%d",cols); + strcat(fmtbuf,f); +- sprintf(valbuf,fmtbuf,stack[stack_p]); ++ gs_sprintf(valbuf,fmtbuf,stack[stack_p]); + cols = strlen(valbuf); + if (fmt & CFG_FMT_ISO_BIT) + valbuf[cols-1] |= 0x10; +diff -up ghostscript-9.07/contrib/japanese/gdevfmlbp.c.gs_sprintf ghostscript-9.07/contrib/japanese/gdevfmlbp.c +--- ghostscript-9.07/contrib/japanese/gdevfmlbp.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/gdevfmlbp.c 2013-05-09 17:02:39.094447206 +0100 +@@ -112,7 +112,7 @@ gdev_fmlbp_paper_size(gx_device_printer + height_inches = t; + landscape = 1; + } +- sprintf(paper, "%s;%d", ++ gs_sprintf(paper, "%s;%d", + (height_inches >= 15.9 ? PAPER_SIZE_A3 : + height_inches >= 11.8 ? + (width_inches >= 9.2 ? PAPER_SIZE_B4 : PAPER_SIZE_LEGAL) : +@@ -136,7 +136,7 @@ static void goto_xy(FILE *prn_stream,int + + fputc(CEX,prn_stream); + fputc('"',prn_stream); +- sprintf(buff,"%d",x); ++ gs_sprintf((char *)buff,"%d",x); + while (*p) + { + if (!*(p+1)) fputc((*p)+0x30,prn_stream); +@@ -146,7 +146,7 @@ static void goto_xy(FILE *prn_stream,int + } + + p=buff; +- sprintf(buff,"%d",y); ++ gs_sprintf((char *)buff,"%d",y); + while (*p) + { + if (!*(p+1)) fputc((*p)+0x40,prn_stream); +diff -up ghostscript-9.07/contrib/japanese/gdevfmpr.c.gs_sprintf ghostscript-9.07/contrib/japanese/gdevfmpr.c +--- ghostscript-9.07/contrib/japanese/gdevfmpr.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/gdevfmpr.c 2013-05-09 17:02:39.094447206 +0100 +@@ -184,13 +184,13 @@ fmpr_print_page(gx_device_printer *pdev, + } + out_beg -= (out_beg - out) % bytes_per_column; + +- sprintf(prn_buf, "\033[%da", ++ gs_sprintf(prn_buf, "\033[%da", + (out_beg - out) / bytes_per_column); + prn_puts(pdev, prn_buf); + + /* Dot graphics */ + size = out_end - out_beg + 1; +- sprintf(prn_buf, "\033Q%d W", size / bytes_per_column); ++ gs_sprintf(prn_buf, "\033Q%d W", size / bytes_per_column); + prn_puts(pdev, prn_buf); + prn_write(pdev, out_beg, size); + +diff -up ghostscript-9.07/contrib/japanese/gdevj100.c.gs_sprintf ghostscript-9.07/contrib/japanese/gdevj100.c +--- ghostscript-9.07/contrib/japanese/gdevj100.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/gdevj100.c 2013-05-09 17:02:39.094447206 +0100 +@@ -128,12 +128,12 @@ jj100_print_page(gx_device_printer *pdev + + /* Vertical tab to the appropriate position. */ + while(skip > 15) { +- sprintf(prn_buf, "\037%c", 16 + 15); ++ gs_sprintf(prn_buf, "\037%c", 16 + 15); + fputs(prn_buf, pdev->file); + skip -= 15; + } + if(skip > 0) { +- sprintf(prn_buf, "\037%c", 16 + skip); ++ gs_sprintf(prn_buf, "\037%c", 16 + skip); + fputs(prn_buf, pdev->file); + } + +@@ -170,13 +170,13 @@ jj100_print_page(gx_device_printer *pdev + out_beg -= (out_beg - out) % (bytes_per_column * 2); + + /* Dot addressing */ +- sprintf(prn_buf, "\033F%04d", ++ gs_sprintf(prn_buf, "\033F%04d", + (out_beg - out) / bytes_per_column / 2); + fputs(prn_buf, pdev->file); + + /* Dot graphics */ + size = out_end - out_beg + 1; +- sprintf(prn_buf, "\034bP,48,%04d.", size / bytes_per_column); ++ gs_sprintf(prn_buf, "\034bP,48,%04d.", size / bytes_per_column); + fputs(prn_buf, pdev->file); + fwrite(out_beg, 1, size, pdev->file); + +diff -up ghostscript-9.07/contrib/japanese/gdevlbp3.c.gs_sprintf ghostscript-9.07/contrib/japanese/gdevlbp3.c +--- ghostscript-9.07/contrib/japanese/gdevlbp3.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/gdevlbp3.c 2013-05-09 17:02:39.094447206 +0100 +@@ -81,7 +81,7 @@ lbp310PrintPage(gx_device_printer *pDev, + DataSize = CompressImage(pDev, &Box, fp, "\x1b[1;%d;%d;11;%d;.r"); + + /* ----==== Set size ====---- */ +- sprintf(Buf, "0%ld", DataSize); ++ gs_sprintf((char *)Buf, "0%ld", DataSize); + i = (DataSize+strlen(Buf)+1)&1; + /* ----==== escape to LIPS ====---- */ + fprintf(fp, "\x80%s\x80\x80\x80\x80\x0c",Buf+i); +@@ -110,7 +110,7 @@ lbp320PrintPage(gx_device_printer *pDev, + DataSize = CompressImage(pDev, &Box, fp, "\x1b[1;%d;%d;11;%d;.&r"); + + /* ----==== Set size ====---- */ +- sprintf(Buf, "000%ld", DataSize); ++ gs_sprintf((char *)Buf, "000%ld", DataSize); + i = (DataSize+strlen(Buf)+1)&3; + /* ----==== escape to LIPS ====---- */ + fprintf(fp, "\x80%s\x80\x80\x80\x80\x0c",Buf+i); +diff -up ghostscript-9.07/contrib/japanese/gdevmag.c.gs_sprintf ghostscript-9.07/contrib/japanese/gdevmag.c +--- ghostscript-9.07/contrib/japanese/gdevmag.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/gdevmag.c 2013-05-09 17:02:39.094447206 +0100 +@@ -137,8 +137,8 @@ mag_print_page(gx_device_printer *pdev, + + if (user == 0) user = "Unknown"; + strcpy(check,magic); +- sprintf(check+strlen(check),"%-18s",user); +- sprintf(check+31," Ghostscript with %s driver\x1a", pdev->dname); ++ gs_sprintf(check+strlen(check),"%-18s",user); ++ gs_sprintf(check+31," Ghostscript with %s driver\x1a", pdev->dname); + + /* check sizes of flag and pixel data. */ + pixel_bytes = 0; +diff -up ghostscript-9.07/contrib/japanese/gdevnpdl.c.gs_sprintf ghostscript-9.07/contrib/japanese/gdevnpdl.c +--- ghostscript-9.07/contrib/japanese/gdevnpdl.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/japanese/gdevnpdl.c 2013-05-09 17:02:39.094447206 +0100 +@@ -592,31 +592,31 @@ npdl_print_page_copies(gx_device_printer + /* Check paper size */ + switch (npdl_get_paper_size((gx_device *) pdev)) { + case PAPER_SIZE_POSTCARD: +- sprintf(paper_command, "PC"); ++ gs_sprintf(paper_command, "PC"); + break; + case PAPER_SIZE_A5: +- sprintf(paper_command, "A5"); ++ gs_sprintf(paper_command, "A5"); + break; + case PAPER_SIZE_A4: +- sprintf(paper_command, "A4"); ++ gs_sprintf(paper_command, "A4"); + break; + case PAPER_SIZE_A3: +- sprintf(paper_command, "A3"); ++ gs_sprintf(paper_command, "A3"); + break; + case PAPER_SIZE_B5: +- sprintf(paper_command, "B5"); ++ gs_sprintf(paper_command, "B5"); + break; + case PAPER_SIZE_B4: +- sprintf(paper_command, "B4"); ++ gs_sprintf(paper_command, "B4"); + break; + case PAPER_SIZE_LETTER: +- sprintf(paper_command, "LT"); ++ gs_sprintf(paper_command, "LT"); + break; + case PAPER_SIZE_ENV4: +- sprintf(paper_command, "ENV4"); ++ gs_sprintf(paper_command, "ENV4"); + break; + case PAPER_SIZE_BPOSTCARD: +- sprintf(paper_command, "UPPC"); ++ gs_sprintf(paper_command, "UPPC"); + break; + } + +diff -up ghostscript-9.07/contrib/lips4/gdevl4r.c.gs_sprintf ghostscript-9.07/contrib/lips4/gdevl4r.c +--- ghostscript-9.07/contrib/lips4/gdevl4r.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/lips4/gdevl4r.c 2013-05-09 17:02:39.095447210 +0100 +@@ -775,9 +775,9 @@ lips2p_image_out(gx_device_printer * pde + move_cap(pdev, prn_stream, x, y); + + Len = lips_mode3format_encode(lprn->TmpBuf, lprn->CompBuf, width / 8 * height); +- sprintf(raw_str, "%c%d;%d;%d.r", LIPS_CSI, ++ gs_sprintf(raw_str, "%c%d;%d;%d.r", LIPS_CSI, + width / 8 * height, width / 8, (int)pdev->x_pixels_per_inch); +- sprintf(comp_str, "%c%d;%d;%d;9;%d.r", LIPS_CSI, ++ gs_sprintf(comp_str, "%c%d;%d;%d;9;%d.r", LIPS_CSI, + Len, width / 8, (int)pdev->x_pixels_per_inch, height); + + if (Len < width / 8 * height - strlen(comp_str) + strlen(raw_str)) { +@@ -806,11 +806,11 @@ lips4_image_out(gx_device_printer * pdev + Len = lips_packbits_encode(lprn->TmpBuf, lprn->CompBuf, width / 8 * height); + Len_rle = lips_rle_encode(lprn->TmpBuf, lprn->CompBuf2, width / 8 * height); + +- sprintf(raw_str, "%c%d;%d;%d.r", LIPS_CSI, ++ gs_sprintf(raw_str, "%c%d;%d;%d.r", LIPS_CSI, + width / 8 * height, width / 8, (int)pdev->x_pixels_per_inch); + + if (Len < Len_rle) { +- sprintf(comp_str, "%c%d;%d;%d;11;%d.r", LIPS_CSI, ++ gs_sprintf(comp_str, "%c%d;%d;%d;11;%d.r", LIPS_CSI, + Len, width / 8, (int)pdev->x_pixels_per_inch, height); + if (Len < width / 8 * height - strlen(comp_str) + strlen(raw_str)) { + fprintf(prn_stream, "%s", comp_str); +@@ -821,7 +821,7 @@ lips4_image_out(gx_device_printer * pdev + fwrite(lprn->TmpBuf, 1, width / 8 * height, prn_stream); + } + } else { +- sprintf(comp_str, "%c%d;%d;%d;10;%d.r", LIPS_CSI, ++ gs_sprintf(comp_str, "%c%d;%d;%d;10;%d.r", LIPS_CSI, + Len, width / 8, (int)pdev->x_pixels_per_inch, height); + if (Len_rle < width / 8 * height - strlen(comp_str) + strlen(raw_str)) { + fprintf(prn_stream, "%s", comp_str); +diff -up ghostscript-9.07/contrib/lips4/gdevl4v.c.gs_sprintf ghostscript-9.07/contrib/lips4/gdevl4v.c +--- ghostscript-9.07/contrib/lips4/gdevl4v.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/lips4/gdevl4v.c 2013-05-09 17:02:39.095447210 +0100 +@@ -459,17 +459,17 @@ lips4v_set_cap(gx_device * dev, int x, i + int dy = y - pdev->prev_y; + + if (dx > 0) { +- sprintf(cap, "%c%da", LIPS_CSI, dx); ++ gs_sprintf(cap, "%c%da", LIPS_CSI, dx); + lputs(s, cap); + } else if (dx < 0) { +- sprintf(cap, "%c%dj", LIPS_CSI, -dx); ++ gs_sprintf(cap, "%c%dj", LIPS_CSI, -dx); + lputs(s, cap); + } + if (dy > 0) { +- sprintf(cap, "%c%dk", LIPS_CSI, dy); ++ gs_sprintf(cap, "%c%dk", LIPS_CSI, dy); + lputs(s, cap); + } else if (dy < 0) { +- sprintf(cap, "%c%de", LIPS_CSI, -dy); ++ gs_sprintf(cap, "%c%de", LIPS_CSI, -dy); + lputs(s, cap); + } + pdev->prev_x = x; +@@ -544,10 +544,10 @@ lips4v_copy_text_char(gx_device * dev, c + if (download) { + if (ccode % 128 == 0 && ccode == pdev->count) { + /* ʸåϿ̿ */ +- sprintf(cset_sub, "%c%dx%c", LIPS_DCS, ccode / 128, LIPS_ST); ++ gs_sprintf(cset_sub, "%c%dx%c", LIPS_DCS, ccode / 128, LIPS_ST); + lputs(s, cset_sub); + /* ʸåϿ̿ */ +- sprintf(cset, ++ gs_sprintf(cset, + "%c%d;1;0;0;3840;8;400;100;0;0;200;%d;%d;0;0;;;;;%d.p", + LIPS_CSI, + size + 9, cell_length, /* Cell Width */ +@@ -556,7 +556,7 @@ lips4v_copy_text_char(gx_device * dev, c + lputs(s, cset); + } else { + /* 1ʸϿ̿ */ +- sprintf(cset, ++ gs_sprintf(cset, + "%c%d;%d;8;%d.q", LIPS_CSI, + size + 9, ccode / 128, (int)dev->x_pixels_per_inch); + lputs(s, cset); +@@ -575,13 +575,13 @@ lips4v_copy_text_char(gx_device * dev, c + /* ʸåȡֹ̿2 */ + if (download) { + if (pdev->current_font != ccode / 128) { +- sprintf(cset_number, "%c%d%%v", LIPS_CSI, ccode / 128); ++ gs_sprintf(cset_number, "%c%d%%v", LIPS_CSI, ccode / 128); + lputs(s, cset_number); + pdev->current_font = ccode / 128; + } + } else { + if (pdev->current_font != ccode / 128) { +- sprintf(cset_number, "%c%d%%v", LIPS_CSI, ccode / 128); ++ gs_sprintf(cset_number, "%c%d%%v", LIPS_CSI, ccode / 128); + lputs(s, cset_number); + pdev->current_font = ccode / 128; + } +@@ -592,7 +592,7 @@ lips4v_copy_text_char(gx_device * dev, c + if (pdev->color_info.depth == 8) { + sputc(s, LIPS_CSI); + lputs(s, "?10;2;"); +- sprintf(text_color, "%d", ++ gs_sprintf(text_color, "%d", + (int)(pdev->color_info.max_gray - pdev->current_color)); + } else { + int r = (pdev->current_color >> 16) * 1000.0 / 255.0; +@@ -601,7 +601,7 @@ lips4v_copy_text_char(gx_device * dev, c + + sputc(s, LIPS_CSI); + lputs(s, "?10;;"); +- sprintf(text_color, "%d;%d;%d", r, g, b); ++ gs_sprintf(text_color, "%d;%d;%d", r, g, b); + } + lputs(s, text_color); + lputs(s, "%p"); +@@ -717,16 +717,16 @@ lips4v_beginpage(gx_device_vector * vdev + lputs(s, "@PJL SET RESOLUTION = QUICK\n"); + lputs(s, l4v_file_header2); + if (pdev->toner_density) { +- sprintf(toner_d, "@PJL SET TONER-DENSITY=%d\n", ++ gs_sprintf(toner_d, "@PJL SET TONER-DENSITY=%d\n", + pdev->toner_density); + lputs(s, toner_d); + } + if (pdev->toner_saving_set) { + lputs(s, "@PJL SET TONER-SAVING="); + if (pdev->toner_saving) +- sprintf(toner_s, "ON\n"); ++ gs_sprintf(toner_s, "ON\n"); + else +- sprintf(toner_s, "OFF\n"); ++ gs_sprintf(toner_s, "OFF\n"); + lputs(s, toner_s); + } + lputs(s, l4v_file_header3); +@@ -737,7 +737,7 @@ lips4v_beginpage(gx_device_vector * vdev + return_error(gs_error_rangecheck); + + /* set reaolution (dpi) */ +- sprintf(dpi_char, "%d", dpi); ++ gs_sprintf(dpi_char, "%d", dpi); + lputs(s, dpi_char); + + if (pdev->color_info.depth == 8) +@@ -746,7 +746,7 @@ lips4v_beginpage(gx_device_vector * vdev + lputs(s, l4vcolor_file_header); + + /* username */ +- sprintf(username, "%c2y%s%c", LIPS_DCS, pdev->Username, LIPS_ST); ++ gs_sprintf(username, "%c2y%s%c", LIPS_DCS, pdev->Username, LIPS_ST); + lputs(s, username); + } + if (strcmp(pdev->mediaType, "PlainPaper") == 0) { +@@ -773,13 +773,13 @@ lips4v_beginpage(gx_device_vector * vdev + && strcmp(pdev->mediaType, LIPS_MEDIATYPE_DEFAULT) != 0)) { + /* Use ManualFeed */ + if (pdev->prev_feed_mode != 10) { +- sprintf(feedmode, "%c10q", LIPS_CSI); ++ gs_sprintf(feedmode, "%c10q", LIPS_CSI); + lputs(s, feedmode); + pdev->prev_feed_mode = 10; + } + } else { + if (pdev->prev_feed_mode != pdev->cassetFeed) { +- sprintf(feedmode, "%c%dq", LIPS_CSI, pdev->cassetFeed); ++ gs_sprintf(feedmode, "%c%dq", LIPS_CSI, pdev->cassetFeed); + lputs(s, feedmode); + pdev->prev_feed_mode = pdev->cassetFeed; + } +@@ -791,10 +791,10 @@ lips4v_beginpage(gx_device_vector * vdev + if (pdev->prev_paper_size != paper_size) { + if (paper_size == USER_SIZE) { + /* modified by shige 06/27 2003 +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, width * 10, height * 10); */ ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, width * 10, height * 10); */ + /* modified by shige 11/09 2003 +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, height * 10, width * 10); */ +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, height * 10, width * 10); */ ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, + (height * 10 > LIPS_HEIGHT_MAX_720)? + LIPS_HEIGHT_MAX_720 : (height * 10), + (width * 10 > LIPS_WIDTH_MAX_720)? +@@ -802,27 +802,27 @@ lips4v_beginpage(gx_device_vector * vdev + lputs(s, paper); + } else if (paper_size == USER_SIZE + LANDSCAPE) { + /* modified by shige 06/27 2003 +- sprintf(paper, "%c81;%d;%dp", LIPS_CSI, height * 10, width * 10); */ ++ gs_sprintf(paper, "%c81;%d;%dp", LIPS_CSI, height * 10, width * 10); */ + /* modified by shige 11/09 2003 +- sprintf(paper, "%c81;%d;%dp", LIPS_CSI, width * 10, height * 10); */ +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, ++ gs_sprintf(paper, "%c81;%d;%dp", LIPS_CSI, width * 10, height * 10); */ ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, + (width * 10 > LIPS_HEIGHT_MAX_720)? + LIPS_HEIGHT_MAX_720 : (width * 10), + (height * 10 > LIPS_WIDTH_MAX_720)? + LIPS_WIDTH_MAX_720 : (height * 10)); + lputs(s, paper); + } else { +- sprintf(paper, "%c%dp", LIPS_CSI, paper_size); ++ gs_sprintf(paper, "%c%dp", LIPS_CSI, paper_size); + lputs(s, paper); + } + } else if (paper_size == USER_SIZE) { + if (pdev->prev_paper_width != width || + pdev->prev_paper_height != height) + /* modified by shige 06/27 2003 +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, width * 10, height * 10); */ ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, width * 10, height * 10); */ + /* modified by shige 11/09 2003 +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, height * 10, width * 10); */ +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, height * 10, width * 10); */ ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, + (height * 10 > LIPS_HEIGHT_MAX_720)? + LIPS_HEIGHT_MAX_720 : (height * 10), + (width * 10 > LIPS_WIDTH_MAX_720)? +@@ -832,10 +832,10 @@ lips4v_beginpage(gx_device_vector * vdev + if (pdev->prev_paper_width != width || + pdev->prev_paper_height != height) + /* modified by shige 06/27 2003 +- sprintf(paper, "%c81;%d;%dp", LIPS_CSI, height * 10, width * 10); */ ++ gs_sprintf(paper, "%c81;%d;%dp", LIPS_CSI, height * 10, width * 10); */ + /* modified by shige 11/09 2003 +- sprintf(paper, "%c81;%d;%dp", LIPS_CSI, width * 10, height * 10); */ +- sprintf(paper, "%c80;%d;%dp", LIPS_CSI, ++ gs_sprintf(paper, "%c81;%d;%dp", LIPS_CSI, width * 10, height * 10); */ ++ gs_sprintf(paper, "%c80;%d;%dp", LIPS_CSI, + (width * 10 > LIPS_HEIGHT_MAX_720)? + LIPS_HEIGHT_MAX_720 : (width * 10), + (height * 10 > LIPS_WIDTH_MAX_720)? +@@ -847,32 +847,32 @@ lips4v_beginpage(gx_device_vector * vdev + pdev->prev_paper_height = height; + + if (pdev->faceup) { +- sprintf(faceup_char, "%c11;12;12~", LIPS_CSI); ++ gs_sprintf(faceup_char, "%c11;12;12~", LIPS_CSI); + lputs(s, faceup_char); + } + /* N-up Printing Setting */ + if (pdev->first_page) { + if (pdev->nup != 1) { +- sprintf(nup_char, "%c%d1;;%do", LIPS_CSI, pdev->nup, paper_size); ++ gs_sprintf(nup_char, "%c%d1;;%do", LIPS_CSI, pdev->nup, paper_size); + lputs(s, nup_char); + } + } + /* Duplex Setting */ + if (dupset && dup) { + if (pdev->prev_duplex_mode == 0 || pdev->prev_duplex_mode == 1) { +- sprintf(duplex_char, "%c2;#x", LIPS_CSI); /* duplex */ ++ gs_sprintf(duplex_char, "%c2;#x", LIPS_CSI); /* duplex */ + lputs(s, duplex_char); + if (!tum) { + /* long edge binding */ + if (pdev->prev_duplex_mode != 2) { +- sprintf(tumble_char, "%c0;#w", LIPS_CSI); ++ gs_sprintf(tumble_char, "%c0;#w", LIPS_CSI); + lputs(s, tumble_char); + } + pdev->prev_duplex_mode = 2; + } else { + /* short edge binding */ + if (pdev->prev_duplex_mode != 3) { +- sprintf(tumble_char, "%c2;#w", LIPS_CSI); ++ gs_sprintf(tumble_char, "%c2;#w", LIPS_CSI); + lputs(s, tumble_char); + } + pdev->prev_duplex_mode = 3; +@@ -880,7 +880,7 @@ lips4v_beginpage(gx_device_vector * vdev + } + } else if (dupset && !dup) { + if (pdev->prev_duplex_mode != 1) { +- sprintf(duplex_char, "%c0;#x", LIPS_CSI); /* simplex */ ++ gs_sprintf(duplex_char, "%c0;#x", LIPS_CSI); /* simplex */ + lputs(s, duplex_char); + } + pdev->prev_duplex_mode = 1; +@@ -893,9 +893,9 @@ lips4v_beginpage(gx_device_vector * vdev + /* size unit (dpi) */ + sputc(s, LIPS_CSI); + lputs(s, "11h"); +- sprintf(unit, "%c?7;%d I", LIPS_CSI, (int)pdev->x_pixels_per_inch); ++ gs_sprintf(unit, "%c?7;%d I", LIPS_CSI, (int)pdev->x_pixels_per_inch); + lputs(s, unit); +- sprintf(page_header, "%c[0&}#%c", LIPS_ESC, LIPS_IS2); ++ gs_sprintf(page_header, "%c[0&}#%c", LIPS_ESC, LIPS_IS2); + lputs(s, page_header); /* vector mode */ + + lputs(s, "!0"); /* size unit (dpi) */ +@@ -904,10 +904,10 @@ lips4v_beginpage(gx_device_vector * vdev + sputc(s, LIPS_IS2); + + if (pdev->color_info.depth == 8) { +- sprintf(l4vmono_page_header, "!13%c$%c", LIPS_IS2, LIPS_IS2); ++ gs_sprintf(l4vmono_page_header, "!13%c$%c", LIPS_IS2, LIPS_IS2); + lputs(s, l4vmono_page_header); + } else { +- sprintf(l4vcolor_page_header, "!11%c$%c", LIPS_IS2, LIPS_IS2); ++ gs_sprintf(l4vcolor_page_header, "!11%c$%c", LIPS_IS2, LIPS_IS2); + lputs(s, l4vcolor_page_header); + } + +@@ -1010,7 +1010,7 @@ lips4v_setlinecap(gx_device_vector * vde + break; + } + /* ü̿ */ +- sprintf(c, "}E%d%c", line_cap, LIPS_IS2); ++ gs_sprintf(c, "}E%d%c", line_cap, LIPS_IS2); + lputs(s, c); + + pdev->linecap = cap; +@@ -1050,7 +1050,7 @@ lips4v_setlinejoin(gx_device_vector * vd + break; + } + +- sprintf(c, "}F%d%c", lips_join, LIPS_IS2); ++ gs_sprintf(c, "}F%d%c", lips_join, LIPS_IS2); + lputs(s, c); + + return 0; +@@ -1486,7 +1486,7 @@ lips4v_output_page(gx_device * dev, int + if (num_copies > 255) + num_copies = 255; + if (pdev->prev_num_copies != num_copies) { +- sprintf(str, "%c%dv", LIPS_CSI, num_copies); ++ gs_sprintf(str, "%c%dv", LIPS_CSI, num_copies); + lputs(s, str); + pdev->prev_num_copies = num_copies; + } +diff -up ghostscript-9.07/contrib/pcl3/src/gdevpcl3.c.gs_sprintf ghostscript-9.07/contrib/pcl3/src/gdevpcl3.c +--- ghostscript-9.07/contrib/pcl3/src/gdevpcl3.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/contrib/pcl3/src/gdevpcl3.c 2013-05-09 17:02:39.095447210 +0100 +@@ -302,7 +302,7 @@ static void get_string_for_int(int in_va + else { + static char buffer[22]; /* Must be sufficient for an 'int' */ + +- sprintf(buffer, "%d", in_value); ++ gs_sprintf(buffer, "%d", in_value); + assert(strlen(buffer) < sizeof(buffer)); + out_value->data = (const byte *)buffer; + out_value->size = strlen(buffer); +diff -up ghostscript-9.07/cups/gdevcups.c.gs_sprintf ghostscript-9.07/cups/gdevcups.c +--- ghostscript-9.07/cups/gdevcups.c.gs_sprintf 2013-05-09 17:02:39.048447008 +0100 ++++ ghostscript-9.07/cups/gdevcups.c 2013-05-09 17:02:39.096447214 +0100 +@@ -60,6 +60,9 @@ + * cups_print_planar() - Print a page of planar pixels. + */ + ++/* prevent gp.h redefining fopen */ ++#define sprintf sprintf ++ + /* + * Include necessary headers... + */ +diff -up ghostscript-9.07/base/Makefile.in.gs_sprintf ghostscript-9.07/base/Makefile.in +--- ghostscript-9.07/base/Makefile.in.gs_sprintf 2013-05-09 17:02:46.190477741 +0100 ++++ ghostscript-9.07/base/Makefile.in 2013-05-09 17:03:22.377633508 +0100 +@@ -302,6 +302,8 @@ LCUPSISRCDIR=cups + CUPS_CC=$(CC) + + ++TRIOSRCDIR=trio ++ + # Define how to build the library archives. (These are not used in any + # standard configuration.) + +@@ -583,6 +585,7 @@ MAKEDIRSTOP= + INSTALL_CONTRIB=@INSTALL_CONTRIB@ + include $(GLSRCDIR)/unixhead.mak + include $(GLSRCDIR)/gs.mak ++include $(GLSRCDIR)/trio.mak + # psromfs.mak must precede lib.mak + include $(PSSRCDIR)/psromfs.mak + include $(GLSRCDIR)/lib.mak +diff -up ghostscript-9.07/psi/dmmain.c.gs_sprintf ghostscript-9.07/psi/dmmain.c +--- ghostscript-9.07/psi/dmmain.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/dmmain.c 2013-05-09 17:02:39.096447214 +0100 +@@ -644,8 +644,8 @@ void main(void) + argv[1] = ddevice; + argv[2] = dformat; + +- sprintf(ddevice, "-sDEVICE=display"); +- sprintf(dformat, "-dDisplayFormat=%d", display_format); ++ gs_sprintf(ddevice, "-sDEVICE=display"); ++ gs_sprintf(dformat, "-dDisplayFormat=%d", display_format); + + /* Run Ghostscript */ + if (gsapi_new_instance(&instance, NULL) < 0) +diff -up ghostscript-9.07/psi/dpmain.c.gs_sprintf ghostscript-9.07/psi/dpmain.c +--- ghostscript-9.07/psi/dpmain.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/dpmain.c 2013-05-09 17:02:39.097447219 +0100 +@@ -100,9 +100,9 @@ gs_free_dll(void) + return TRUE; + rc = DosFreeModule(gsdll.hmodule); + if (rc) { +- sprintf(buf, "DosFreeModule returns %d\n", rc); ++ gs_sprintf(buf, "DosFreeModule returns %d\n", rc); + gs_addmess(buf); +- sprintf(buf, "Unloaded GSDLL\n\n"); ++ gs_sprintf(buf, "Unloaded GSDLL\n\n"); + gs_addmess(buf); + } + return !rc; +@@ -150,7 +150,7 @@ gs_load_dll(void) + dllname = szDllName; + #ifdef DEBUG + if (debug) { +- sprintf(buf, "Trying to load %s\n", dllname); ++ gs_sprintf(buf, "Trying to load %s\n", dllname); + gs_addmess(buf); + } + #endif +@@ -172,7 +172,7 @@ gs_load_dll(void) + dllname = fullname; + #ifdef DEBUG + if (debug) { +- sprintf(buf, "Trying to load %s\n", dllname); ++ gs_sprintf(buf, "Trying to load %s\n", dllname); + gs_addmess(buf); + } + #endif +@@ -183,7 +183,7 @@ gs_load_dll(void) + dllname = shortname; + #ifdef DEBUG + if (debug) { +- sprintf(buf, "Trying to load %s\n", dllname); ++ gs_sprintf(buf, "Trying to load %s\n", dllname); + gs_addmess(buf); + } + #endif +@@ -197,21 +197,21 @@ gs_load_dll(void) + #endif + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_REVISION", + (PFN *) (&gsdll.revision))) != 0) { +- sprintf(buf, "Can't find GSAPI_REVISION, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_REVISION, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + /* check DLL version */ + if (gsdll.revision(&rv, sizeof(rv)) != 0) { +- sprintf(buf, "Unable to identify Ghostscript DLL revision - it must be newer than needed.\n"); ++ gs_sprintf(buf, "Unable to identify Ghostscript DLL revision - it must be newer than needed.\n"); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + + if (rv.revision != GS_REVISION) { +- sprintf(buf, "Wrong version of DLL found.\n Found version %ld\n Need version %ld\n", rv.revision, (long)GS_REVISION); ++ gs_sprintf(buf, "Wrong version of DLL found.\n Found version %ld\n Need version %ld\n", rv.revision, (long)GS_REVISION); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; +@@ -219,35 +219,35 @@ gs_load_dll(void) + + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_NEW_INSTANCE", + (PFN *) (&gsdll.new_instance))) != 0) { +- sprintf(buf, "Can't find GSAPI_NEW_INSTANCE, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_NEW_INSTANCE, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_DELETE_INSTANCE", + (PFN *) (&gsdll.delete_instance))) != 0) { +- sprintf(buf, "Can't find GSAPI_DELETE_INSTANCE, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_DELETE_INSTANCE, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_SET_STDIO", + (PFN *) (&gsdll.set_stdio))) != 0) { +- sprintf(buf, "Can't find GSAPI_SET_STDIO, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_SET_STDIO, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_SET_DISPLAY_CALLBACK", + (PFN *) (&gsdll.set_display_callback))) != 0) { +- sprintf(buf, "Can't find GSAPI_SET_DISPLAY_CALLBACK, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_SET_DISPLAY_CALLBACK, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_SET_POLL", + (PFN *) (&gsdll.set_poll))) != 0) { +- sprintf(buf, "Can't find GSAPI_SET_POLL, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_SET_POLL, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; +@@ -255,27 +255,27 @@ gs_load_dll(void) + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, + "GSAPI_INIT_WITH_ARGS", + (PFN *) (&gsdll.init_with_args))) != 0) { +- sprintf(buf, "Can't find GSAPI_INIT_WITH_ARGS, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_INIT_WITH_ARGS, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_RUN_STRING", + (PFN *) (&gsdll.run_string))) != 0) { +- sprintf(buf, "Can't find GSAPI_RUN_STRING, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_RUN_STRING, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + if ((rc = DosQueryProcAddr(gsdll.hmodule, 0, "GSAPI_EXIT", + (PFN *) (&gsdll.exit))) != 0) { +- sprintf(buf, "Can't find GSAPI_EXIT, rc = %d\n", rc); ++ gs_sprintf(buf, "Can't find GSAPI_EXIT, rc = %d\n", rc); + gs_addmess(buf); + gs_load_dll_cleanup(); + return FALSE; + } + } else { +- sprintf(buf, "Can't load Ghostscript DLL %s \nDosLoadModule rc = %d\n", ++ gs_sprintf(buf, "Can't load Ghostscript DLL %s \nDosLoadModule rc = %d\n", + szDllName, rc); + gs_addmess(buf); + gs_load_dll_cleanup(); +@@ -373,10 +373,10 @@ static int run_gspmdrv(IMAGE *img) + if (debug) + fprintf(stdout, "run_gspmdrv: starting\n"); + #endif +- sprintf(id, ID_NAME, img->pid, (ULONG)img->device); ++ gs_sprintf(id, ID_NAME, img->pid, (ULONG)img->device); + + /* Create termination queue - used to find out when gspmdrv terminates */ +- sprintf(term_queue_name, "\\QUEUES\\TERMQ_%s", id); ++ gs_sprintf(term_queue_name, "\\QUEUES\\TERMQ_%s", id); + if (DosCreateQueue(&(img->term_queue), QUE_FIFO, term_queue_name)) { + fprintf(stdout, "run_gspmdrv: failed to create termination queue\n"); + return e_limitcheck; +@@ -404,7 +404,7 @@ static int run_gspmdrv(IMAGE *img) + /* arguments are: */ + /* (1) -d (display) option */ + /* (2) id string */ +- sprintf(arg, "-d %s", id); ++ gs_sprintf(arg, "-d %s", id); + + /* because gspmdrv.exe is a different EXE type to gs.exe, + * we must use start session not DosExecPgm() */ +@@ -592,17 +592,17 @@ int display_open(void *handle, void *dev + return e_limitcheck; + } + img->pid = pppib->pib_ulppid; /* use parent (CMD.EXE) pid */ +- sprintf(id, ID_NAME, img->pid, (ULONG) img->device); ++ gs_sprintf(id, ID_NAME, img->pid, (ULONG) img->device); + + /* Create update event semaphore */ +- sprintf(name, SYNC_NAME, id); ++ gs_sprintf(name, SYNC_NAME, id); + if (DosCreateEventSem(name, &(img->sync_event), 0, FALSE)) { + fprintf(stdout, "display_open: failed to create event semaphore %s\n", name); + return e_limitcheck; + } + /* Create mutex - used for preventing gspmdrv from accessing */ + /* bitmap while we are changing the bitmap size. Initially unowned. */ +- sprintf(name, MUTEX_NAME, id); ++ gs_sprintf(name, MUTEX_NAME, id); + if (DosCreateMutexSem(name, &(img->bmp_mutex), 0, FALSE)) { + DosCloseEventSem(img->sync_event); + fprintf(stdout, "display_open: failed to create mutex semaphore %s\n", name); +@@ -612,7 +612,7 @@ int display_open(void *handle, void *dev + /* Shared memory is common to all processes so we don't want to + * allocate too much. + */ +- sprintf(name, SHARED_NAME, id); ++ gs_sprintf(name, SHARED_NAME, id); + if (DosAllocSharedMem((PPVOID) & img->bitmap, name, + 13 * 1024 * 1024, PAG_READ | PAG_WRITE)) { + fprintf(stdout, "display_open: failed allocating shared BMP memory %s\n", name); +@@ -1020,7 +1020,7 @@ main(int argc, char *argv[]) + else if (depth >= 4) + format = DISPLAY_COLORS_NATIVE | DISPLAY_ALPHA_NONE | + DISPLAY_DEPTH_4 | DISPLAY_LITTLEENDIAN | DISPLAY_BOTTOMFIRST; +- sprintf(dformat, "-dDisplayFormat=%d", format); ++ gs_sprintf(dformat, "-dDisplayFormat=%d", format); + } + nargc = argc + 1; + +diff -up ghostscript-9.07/psi/dscparse.c.gs_sprintf ghostscript-9.07/psi/dscparse.c +--- ghostscript-9.07/psi/dscparse.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/dscparse.c 2013-05-09 17:02:39.097447219 +0100 +@@ -38,7 +38,7 @@ + % %%ViewingOrientation: xx xy yx yy + */ + +-#include /* for sprintf(), not file I/O */ ++#include /* for sprintf(), not file I/O */ + #include + #include + #include +@@ -584,7 +584,7 @@ dsc_fixup(CDSC *dsc) + /* make sure all pages have a label */ + for (i=0; ipage_count; i++) { + if (strlen(dsc->page[i].label) == 0) { +- sprintf(buf, "%d", i+1); ++ gs_sprintf(buf, "%d", i+1); + if ((dsc->page[i].label = dsc_alloc_string(dsc, buf, (int)strlen(buf))) + == (char *)NULL) + return CDSC_ERROR; /* no memory */ +@@ -1178,7 +1178,7 @@ dsc_unknown(CDSC *dsc) + if (dsc->debug_print_fn) { + char line[DSC_LINE_LENGTH]; + unsigned int length = min(DSC_LINE_LENGTH-1, dsc->line_length); +- sprintf(line, "Unknown in %s section at line %d:\n ", ++ gs_sprintf(line, "Unknown in %s section at line %d:\n ", + dsc_scan_section_name[dsc->scan_section], dsc->line_count); + dsc_debug_print(dsc, line); + strncpy(line, dsc->line, length); +@@ -2669,7 +2669,7 @@ dsc_check_match_prompt(CDSC *dsc, const + strncpy(buf, dsc->line, dsc->line_length); + buf[dsc->line_length] = '\0'; + } +- sprintf(buf+strlen(buf), "\n%%%%Begin%.40s: / %%%%End%.40s\n", str, str); ++ gs_sprintf(buf+strlen(buf), "\n%%%%Begin%.40s: / %%%%End%.40s\n", str, str); + return dsc_error(dsc, CDSC_MESSAGE_BEGIN_END, buf, (int)strlen(buf)); + } + return CDSC_RESPONSE_CANCEL; +diff -up ghostscript-9.07/psi/dwimg.c.gs_sprintf ghostscript-9.07/psi/dwimg.c +--- ghostscript-9.07/psi/dwimg.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/dwimg.c 2013-05-09 17:02:39.098447223 +0100 +@@ -36,6 +36,11 @@ + + #define STRICT + #include ++ ++ ++/* prevent gp.h redefining sprintf */ ++#define sprintf sprintf ++ + #include "stdio_.h" + + #include "dwres.h" +diff -up ghostscript-9.07/psi/dwmainc.c.gs_sprintf ghostscript-9.07/psi/dwmainc.c +--- ghostscript-9.07/psi/dwmainc.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/dwmainc.c 2013-05-09 17:02:39.098447223 +0100 +@@ -13,6 +13,8 @@ + CA 94903, U.S.A., +1(415)492-9861, for further information. + */ + ++/* prevent gp.h redefining sprintf */ ++#define sprintf sprintf + + /* dwmainc.c */ + +diff -up ghostscript-9.07/psi/dxmain.c.gs_sprintf ghostscript-9.07/psi/dxmain.c +--- ghostscript-9.07/psi/dxmain.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/dxmain.c 2013-05-09 17:02:39.098447223 +0100 +@@ -1160,7 +1160,7 @@ int main(int argc, char *argv[]) + use_gui = gtk_init_check(&argc, &argv); + + /* insert display device parameters as first arguments */ +- sprintf(dformat, "-dDisplayFormat=%d", ++ gs_sprintf(dformat, "-dDisplayFormat=%d", + DISPLAY_COLORS_RGB | DISPLAY_ALPHA_NONE | DISPLAY_DEPTH_8 | + DISPLAY_BIGENDIAN | DISPLAY_TOPFIRST); + nargc = argc + 1; +diff -up ghostscript-9.07/psi/int.mak.gs_sprintf ghostscript-9.07/psi/int.mak +--- ghostscript-9.07/psi/int.mak.gs_sprintf 2013-05-09 17:02:39.018446879 +0100 ++++ ghostscript-9.07/psi/int.mak 2013-05-09 17:02:39.098447223 +0100 +@@ -651,7 +651,7 @@ $(PSOBJ)zdscpars.$(OBJ) : $(PSSRC)zdscpa + $(gsstruct_h) + $(PSCC) $(PSO_)zdscpars.$(OBJ) $(C_) $(PSSRC)zdscpars.c + +-$(PSOBJ)dscparse.$(OBJ) : $(PSSRC)dscparse.c $(dscparse_h) ++$(PSOBJ)dscparse.$(OBJ) : $(PSSRC)dscparse.c $(dscparse_h) $(stdio__h) + $(PSCC) $(PSO_)dscparse.$(OBJ) $(C_) $(PSSRC)dscparse.c + + dscparse_=$(PSOBJ)zdscpars.$(OBJ) $(PSOBJ)dscparse.$(OBJ) +diff -up ghostscript-9.07/psi/iparam.c.gs_sprintf ghostscript-9.07/psi/iparam.c +--- ghostscript-9.07/psi/iparam.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/iparam.c 2013-05-09 17:02:39.099447227 +0100 +@@ -65,7 +65,7 @@ ref_to_key(const ref * pref, gs_param_ke + int len; + byte *buf; + +- sprintf(istr, "%"PRIpsint, pref->value.intval); ++ gs_sprintf(istr, "%"PRIpsint, pref->value.intval); + len = strlen(istr); + /* GC will take care of freeing this: */ + buf = gs_alloc_string(plist->memory, len, "ref_to_key"); +diff -up ghostscript-9.07/psi/iutil2.c.gs_sprintf ghostscript-9.07/psi/iutil2.c +--- ghostscript-9.07/psi/iutil2.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/iutil2.c 2013-05-09 17:02:39.099447227 +0100 +@@ -56,7 +56,7 @@ param_read_password(gs_param_list * plis + code = param_read_long(plist, kstr, &ipass); + if (code != 0) /* error or missing */ + return code; +- sprintf((char *)ppass->data, "%ld", ipass); ++ gs_sprintf((char *)ppass->data, "%ld", ipass); + ppass->size = strlen((char *)ppass->data); + return 0; + } +diff -up ghostscript-9.07/psi/iutil.c.gs_sprintf ghostscript-9.07/psi/iutil.c +--- ghostscript-9.07/psi/iutil.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/iutil.c 2013-05-09 17:02:39.099447227 +0100 +@@ -340,10 +340,10 @@ obj_cvp(const ref * op, byte * str, uint + float value = op->value.realval; + float scanned; + +- sprintf(buf, "%g", value); ++ gs_sprintf(buf, "%g", value); + sscanf(buf, "%f", &scanned); + if (scanned != value) +- sprintf(buf, "%.9g", value); ++ gs_sprintf(buf, "%.9g", value); + ensure_dot(buf); + goto rs; + } +@@ -494,7 +494,7 @@ other: + data = (const byte *)(op->value.boolval ? "true" : "false"); + break; + case t_integer: +- sprintf(buf, "%"PRIpsint, op->value.intval); ++ gs_sprintf(buf, "%"PRIpsint, op->value.intval); + break; + case t_string: + check_read(*op); +@@ -529,7 +529,7 @@ other: + break; + } + /* Internal operator, no name. */ +- sprintf(buf, "@0x%lx", (ulong) op->value.opproc); ++ gs_sprintf(buf, "@0x%lx", (ulong) op->value.opproc); + break; + } + case t_real: +@@ -542,7 +542,7 @@ other: + if (op->value.realval == (float)0.0001) { + strcpy(buf, "0.0001"); + } else { +- sprintf(buf, "%g", op->value.realval); ++ gs_sprintf(buf, "%g", op->value.realval); + } + ensure_dot(buf); + break; +@@ -573,9 +573,9 @@ ensure_dot(char *buf) + sscanf(pe + 1, "%d", &i); + /* MSVC .net 2005 express doesn't support "%+02d" */ + if (i >= 0) +- sprintf(pe + 1, "+%02d", i); ++ gs_sprintf(pe + 1, "+%02d", i); + else +- sprintf(pe + 1, "-%02d", -i); ++ gs_sprintf(pe + 1, "-%02d", -i); + } else if (strchr(buf, '.') == NULL) { + strcat(buf, ".0"); + } +diff -up ghostscript-9.07/psi/msvc.mak.gs_sprintf ghostscript-9.07/psi/msvc.mak +--- ghostscript-9.07/psi/msvc.mak.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/msvc.mak 2013-05-09 17:02:39.099447227 +0100 +@@ -332,6 +332,10 @@ TIFFCONFIG_SUFFIX=.vc + TIFFPLATFORM=win32 + !endif + ++!ifndef TRIOSRCDIR ++TRIOSRCDIR=trio ++!endif ++ + # Define the directory where the zlib sources are stored. + # See zlib.mak for more information. + +diff -up ghostscript-9.07/psi/zbfont.c.gs_sprintf ghostscript-9.07/psi/zbfont.c +--- ghostscript-9.07/psi/zbfont.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/zbfont.c 2013-05-09 17:02:39.099447227 +0100 +@@ -109,7 +109,7 @@ zfont_encode_char(gs_font *pfont, gs_cha + + if (gspace == GLYPH_SPACE_NOGEN) + return gs_no_glyph; +- sprintf(buf, "j%ld", chr); /* 'j' is arbutrary. */ ++ gs_sprintf(buf, "j%ld", chr); /* 'j' is arbutrary. */ + code = name_ref(pfont->memory, (const byte *)buf, strlen(buf), &tname, 1); + if (code < 0) { + /* Can't propagate the error due to interface limitation, +@@ -131,7 +131,7 @@ zfont_glyph_name(gs_font *font, gs_glyph + char cid_name[sizeof(gs_glyph) * 3 + 1]; + int code; + +- sprintf(cid_name, "%lu", (ulong) index); ++ gs_sprintf(cid_name, "%lu", (ulong) index); + code = name_ref(font->memory, (const byte *)cid_name, strlen(cid_name), + &nref, 1); + if (code < 0) +diff -up ghostscript-9.07/psi/zdouble.c.gs_sprintf ghostscript-9.07/psi/zdouble.c +--- ghostscript-9.07/psi/zdouble.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/zdouble.c 2013-05-09 17:02:39.100447231 +0100 +@@ -323,7 +323,7 @@ zcvsd(i_ctx_t *i_ctx_p) + len = r_size(op - 1); + if (len > MAX_CHARS) + return_error(e_limitcheck); +- sprintf(buf, "%f", 1.5); ++ gs_sprintf(buf, "%f", 1.5); + dot = buf[1]; /* locale-dependent */ + memcpy(str, op[-1].value.bytes, len); + /* +@@ -406,7 +406,7 @@ zdcvs(i_ctx_t *i_ctx_p) + if (code < 0) + return code; + check_write_type(*op, t_string); +- sprintf(str, "%f", 1.5); ++ gs_sprintf(str, "%f", 1.5); + dot = str[1]; /* locale-dependent */ + /* + * To get fully accurate output results for IEEE double- +@@ -420,10 +420,10 @@ zdcvs(i_ctx_t *i_ctx_p) + { + double scanned; + +- sprintf(str, "%g", num); ++ gs_sprintf(str, "%g", num); + sscanf(str, "%lf", &scanned); + if (scanned != num) +- sprintf(str, "%.16g", num); ++ gs_sprintf(str, "%.16g", num); + } + len = strlen(str); + if (len > r_size(op)) +diff -up ghostscript-9.07/psi/zfapi.c.gs_sprintf ghostscript-9.07/psi/zfapi.c +--- ghostscript-9.07/psi/zfapi.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/zfapi.c 2013-05-09 17:02:39.100447231 +0100 +@@ -583,11 +583,11 @@ FAPI_FF_get_word(gs_fapi_font *ff, gs_fa + length += r_size(&string) + 1; + break; + case t_real: +- sprintf(Buffer, "%f", Element.value.realval); ++ gs_sprintf(Buffer, "%f", Element.value.realval); + length += strlen(Buffer) + 1; + break; + case t_integer: +- sprintf(Buffer, "%"PRIpsint, Element.value.intval); ++ gs_sprintf(Buffer, "%"PRIpsint, Element.value.intval); + length += strlen(Buffer) + 1; + break; + case t_operator: +@@ -823,12 +823,12 @@ FAPI_FF_get_proc(gs_fapi_font *ff, gs_fa + ptr += r_size(&string); + break; + case t_real: +- sprintf(Buf, "%f", Element.value.realval); ++ gs_sprintf(Buf, "%f", Element.value.realval); + strcpy(ptr, Buf); + ptr += strlen(Buf); + break; + case t_integer: +- sprintf(Buf, "%"PRIpsint, Element.value.intval); ++ gs_sprintf(Buf, "%"PRIpsint, Element.value.intval); + strcpy(ptr, Buf); + ptr += strlen(Buf); + break; +diff -up ghostscript-9.07/psi/zfont2.c.gs_sprintf ghostscript-9.07/psi/zfont2.c +--- ghostscript-9.07/psi/zfont2.c.gs_sprintf 2013-02-14 07:58:13.000000000 +0000 ++++ ghostscript-9.07/psi/zfont2.c 2013-05-09 17:02:39.101447236 +0100 +@@ -2666,7 +2666,7 @@ parse_font(i_ctx_t *i_ctx_p, ref *topdi + return sid; + if ((code = make_name_from_sid(i_ctx_p, &name, strings, data, sid)) < 0) { + char buf[40]; +- int len = sprintf(buf, "sid-%d", sid); ++ int len = gs_sprintf(buf, "sid-%d", sid); + + if ((code = name_ref(imemory, (unsigned char *)buf, len, &name, 1)) < 0) + return code; +diff -up ghostscript-9.07/trio/autogen.sh.gs_sprintf ghostscript-9.07/trio/autogen.sh +--- ghostscript-9.07/trio/autogen.sh.gs_sprintf 2013-05-09 17:02:39.101447236 +0100 ++++ ghostscript-9.07/trio/autogen.sh 2013-05-09 17:02:39.101447236 +0100 +@@ -0,0 +1,3 @@ ++#!/bin/sh ++autoconf ++rm -rf autom4te.cache +diff -up ghostscript-9.07/trio/CHANGES.gs_sprintf ghostscript-9.07/trio/CHANGES +--- ghostscript-9.07/trio/CHANGES.gs_sprintf 2013-05-09 17:02:39.101447236 +0100 ++++ ghostscript-9.07/trio/CHANGES 2013-05-09 17:02:39.101447236 +0100 +@@ -0,0 +1,785 @@ ++CHANGES -- trio ++ ++ ++The changes listed without a name attributed to them were most likely done by ++Bjorn Reese and/or Daniel Stenberg. ++ ++Version 1.14 - 2010/01/26 ++------------------------- ++* David Byron ++ Added trio_xstring_append_max. ++ ++* Fixed compilation problem on Cygwin due to lack of long double math ++ (reported by Matthias Andree). ++ ++* David Boyce ++ Added #undef of standard stdio function names before assigning trio functions ++ to them. ++ ++* Matthias Andree ++ Upgraded configure.in to use new macros instead of obsoleted macros. ++ ++* Matthias Andree ++ Added VPATH to Makefile.in ++ ++* Tom Honermann ++ Fixed problem with subnormal numbers which caused an infinite loop outputting ++ leading spaces. ++ ++* Adam McLaurin ++ Improved parsing performance by avoiding memset() and memcpy() on character ++ arrays. ++ ++* Gideon Smeding ++ Fixed %u scanning of signed numbers. ++ ++* Gideon Smeding ++ Fixed group scanning for non-matching input. ++ ++* Fixed missing undo of look-ahead reading for scanf functions. This does only ++ work for the scanf* and fscanf* functions, not dscanf* and cscanf* functions ++ (reported by Gideon Smeding). ++ ++* If the format string is empty, scanf does not attempt to read any input. ++ ++* Ralf Junker ++ Fixed Borland compilation for user-defined specifiers. ++ ++ ++Version 1.13 - 2008/11/09 ++------------------------- ++* Ives Aerts ++ Added the $ format for user-defined specifiers, which is ++ compatible with compiler warnings about mismatches between specifiers and ++ arguments. ++ ++* Added TRIO_DEPRECATED flag (reported by David Boyce) ++ ++* Fixed rounding adjustment for long double (reported as bug item #2136686). ++ ++* Added Makefile dependency for test target (reported as bug item #2136636). ++ ++* David Boyce ++ Fixed long long support for MSVC. ++ ++* Fixed potential problem with read after buffer end for non-zero terminated ++ strings (reported as bug item #1828465). ++ ++* Andreas Stricker ++ Added WinCE support. ++ ++* Fixed number of significant digits for %g. ++ ++ ++Version 1.12 - 2006/10/22 ++------------------------- ++* Fixed scanning of floats (reported by Bernd Ahlers). ++ ++* Fixed configure.in for GCC on Tru64 and MIPSpro on IRIX (reported by Andreas ++ Maus). ++ ++* Olli Savia ++ Added support for LynxOS. ++ ++ ++Version 1.11 - 2006/04/08 ++------------------------- ++* Mark Pickelmann ++ Fixed trio_unregister. If the first element was removed, the remaining ++ list would be removed as well. ++ ++* Fixed unintended formatting of %e that would result in non-zero numbers ++ starting with zero (reported by Mark Pickelmann and Gisli Ottarsson). ++ ++* Fixed compilation with Sun Workshop 6 (reported by Matthias Andree). ++ ++* Fixed accuracy for denormalized numbers (bug item #758327). ++ ++* Glen Davidson ++ Fixed scanning of floating-point numbers without a decimal-point (bug item ++ #1370427). ++ ++* David Byron ++ Fixed more compiler warnings. ++ ++* Fixed compilation of trio_to_long_double and TRIO_FEATURE_FLOAT (reported by ++ David Byron). ++ ++* Fixed precision of large floating-point numbers (bug item #1314524). ++ ++* Karl Bochert ++ Fixed trio_fpclassify_and_signbit to only restore the floating-point ++ precision. ++ ++* Fixed detection of need for ieee option on FreeBSD/Alpha. ++ ++* Added TRIO_SNPRINTF_ONLY compilation. ++ ++* Fixed trio_to_double by not using strtod() on Tru64/DECC because it does not ++ support hex-floats. ++ ++* Fixed crash on 64 bits machines related to a previous workaround in version ++ 1.9 for uninitialized va_list (reported by Nicolai Tufar, suggestion by ++ Douglas Gwyn). ++ ++* Patrick Jessee ++ Fixed width calculation for %g. ++ ++* Added macros for internal features. ++ ++* Jon Foster ++ Added macros for conditional compilation of many features. Documented all ++ the features. ++ ++* Karl Bochert ++ Fixed problem with Borland C++, which changes the floating-point precision ++ for certain math functions (log10() and _fpclass()). ++ ++* Karl Bochert ++ Fixed compilation warnings on Borland C++. ++ ++* Removed any occurrence of #elif because Borland C++ reports wrong line ++ numbers when they are present (reported by Karl Bochert). ++ ++* David Byron ++ Added trio_asprintfv. ++ ++* Brian Chapman ++ Fixed Mac OS X compilation. ++ ++* David Byron ++ Fixed several compiler warnings. ++ ++* Fixed printing of out-of-range arguments for %hhd and %hd. These arguments ++ can be out of range because of default integer promotion. ++ ++* Bob Friesenhahn ++ Fixed installation of header files. ++ ++* Joe Orton ++ Added SHELL to Makefile.in to avoid problems with CShells. ++ ++* Shaun Tancheff ++ Fixed regresion tests for MSVC. ++ ++* Craig Berry ++ Fixed the VMS C99 workaround. ++ ++ ++Version 1.10 - 2003/03/06 ++------------------------- ++* Rearranged some include files to accommodate large file support (reported by ++ Albert Chin-A-Young). ++ ++* Added support for SunOS 4.1.x lack of strerror, tolower, and toupper ++ (reported by Peter McCluskey). ++ ++* Fixed pedantic compilation with TRIO_MINIMAL. ++ ++* Jose Kahan ++ Moved to avoid redefinition problems. ++ ++* Fixed hex-float exponents (reported by Matthias Clasen). ++ ++* Fixed handling of negative width and precision via paramters (reported by ++ Jacob Navia). ++ ++* Nigel Hall ++ Fixed TRIO_VA_START for VMS. ++ ++* Rune Enggaard Lausen ++ Fixed compilation for Borland C++ Builder. ++ ++* Fixed precision of hex-float numbers (reported by James Antill). ++ ++* Fixed plus sign only to be added for signed numbers. ++ ++* Fixed printing of integers with value and precision of zero (reported by ++ James Antill). ++ ++* Fixed %#.o to only print one zero if the value is zero (reported by James ++ Antill). ++ ++* Rewrote check for IEEE compilation option to remove dependency on additional ++ scripts. ++ ++* Mehdi Lavasani ++ Makefile install target fixed to work with older install programs. ++ ++* Collapsed the DECC, MSVC, HP-UX, and AIX code for trio_fpclassify_and_sign() ++ with further preprocessing. ++ ++ ++Version 1.9 - 2002/10/13 ++------------------------ ++* Fixed trio_fpclassify_and_signbit on AIX 3.2 ++ ++* Added configure check for -ieee/-mieee compilation option for Alpha machines. ++ ++* Craig Berry ++ Fixed compilation on VMS. ++ ++* Albert Chin-A-Young ++ Fixed incorrect conditional expression in trio_isinf. ++ ++* Fixed the warnings about uninitialized va_list in the printfv and scanfv ++ family without the use of compiler specific pragmas (suggested by Ian ++ Pilcher). ++ ++* Fixed space flag for floating-point numbers (reported by Ian Main). ++ ++ ++Version 1.8 - 2002/07/10 ++------------------------ ++* Fixed infinite loop in multibyte handling (reported by Gisli Ottarsson). ++ ++* Added the customizable cprintf/cscanf family which enables to user to specify ++ input and output stream functions (suggested by Florian Schulze). ++ ++* Fixed trio_isinf by removing the HP-UX workaround, and instead making sure ++ that the C99 macro will adhere to the trio return values (reported by Luke ++ Dunstan). ++ ++* Alexander Lukyanov ++ Fixed boundary case for scanning and EOF. ++ ++* Jacob Navia ++ Enabled the L modifier for formatting. ++ ++* Added TRIO_MINIMAL to build trio without the string functions. ++ ++* Added the R modifier to print rounded floating-point numbers. ++ ++* Added trio_to_long_double and long double scanning (the L modifier). ++ ++* Added trio_locale_decimal_point, trio_locale_thousand_separator, ++ trio_locale_grouping to overwrite locale settings. ++ ++* Rewrote TrioWriteDouble to avoid temporary buffers and thus the danger of ++ buffer overflows (for instance %.5000f). ++ ++* Improved floating-point formatting accuracy. ++ ++* Fixed formatting of non-decimal exponents. ++ ++* Fixed thousand separator checking. ++ ++* Fixed %f scanning to get a float and %lf to get a double. ++ ++* Fixed WIN32 compilation (reported by Emmanuel Mogenet) ++ ++* Fixed regression test cases to exclude disabled features. ++ ++ ++Version 1.7 - 2002/05/07 ++------------------------ ++* Fixed trio_to_double to handle hex-floats properly. ++ ++* Fixed printing of %a-format to be like %e, not like %g. ++ ++* Fixed floating-point printing of values beyond the machine accuracy. ++ ++* Fixed %f for printing with large precision. ++ ++* Fixed the usage of C99 nan(), which caused a crash on OSF/1 (reported by ++ Georg Bolz) ++ ++* Joe Orton ++ Fixed %p on 64-bit platforms. ++ ++* Made trio compile with K&R compilers. ++ ++* Emmanuel Mogenet ++ Fixed bug in trio_asprintf. ++ ++* Emmanuel Mogenet ++ Various WIN32 fixes. ++ ++* Joe Orton ++ Fixed trio_isinf() on HP-UX, and added test cases. ++ ++* Joe Orton ++ Fixed non-portable use of $^ in Makefile. ++ ++* Joe Orton ++ Added autoconf. ++ ++* Alexander Lukyanov ++ Fixed a number of bugs in the scanning of EOF and the count specifier. ++ ++* Richard Jinks ++ Added trio_nzero ++ ++* Fixed incorrect handling of return code from TrioReadChar (reported by ++ Henrik Lf) ++ ++* Fixed parsing of character class expressions. ++ ++* Fixed trio_to_double which did not work with long fractions. ++ ++* Fixed %f for printing of large numbers. ++ ++* Fixed %#s to handle whitespaces as non-printable characters. ++ ++* Added trio_isfinite, trio_signbit, and trio_fpclassify. ++ ++* Added new test cases. ++ ++ ++Version 1.6 - 2002/01/13 ++------------------------ ++* Added dynamic string functions. ++ ++* Rewrote and extended documentation in JavaDoc (using Doxygen). ++ ++* Moved and renamed strio functions to triostr. ++ ++* Robert Collins ++ Added definition for Cygwin. ++ ++* Markus Henke ++ Added long double workaround for the HP C/iX compiler. ++ ++* Marc Verwerft ++ Improved error handling for dynamically allocated strings. ++ ++* John Fotheringham ++ Made trionan compile on OpenVMS. ++ ++* Added 'd' and 'D' as exponent letters when using TRIO_MICROSOFT. ++ ++* Fixed uninitial memory read for the parameter modifiers. ++ ++ ++Version 1.5 - 2001/09/08 ++------------------------ ++* Merged with libxml changes. ++ ++* Moved NaN and Inf handling to separate file to enable reuse in other ++ projects. ++ ++* Igor Zlatkovic ++ Fixed TrioGenerateNan for MSVC. ++ ++* Fixed lots of preprocessor macros and internal data structure names. ++ ++ ++Version 1.4 - 2001/06/03 ++------------------------ ++* Added hex-float (%a and %A) for scanning. ++ ++* Added wide character arguments (%ls, %ws, %S, %lc, %wc, and %C) for both ++ printf and scanf. ++ ++* Added mutex callbacks for user-specified specifiers to enable applications to ++ add thread-safety. These are registered with trio_register, where the ++ namespace is set to either ":enter" to lock a mutex, or ":leave" to unlock a ++ mutex. ++ ++* Added equivalence class expressions for scanning. For example, %[[=a=]] scans ++ for all letters in the same equivalence class as the letter 'a' as defined ++ by the locale. ++ ++* Changed character class expressions for scanning. The expressions must now ++ be embedded withing an extra set of brackets, e.g. %[[:alpha:]]. This was ++ done to adhere to the syntax of UNIX98 regular expressions. ++ ++* Added the possibility to specify standard support (TRIO_C99 etc.) as compiler ++ options. ++ ++* Fixed conversion of hex-float in StrToDouble. ++ ++* Fixed formatting of hex-float numbers. ++ ++* Stan Boehm ++ Fixed crash on QNX, which happend because some buffers on the stack were too ++ big. ++ ++* Fixed default precision for %f and %g (reported by Jose Ortiz) ++ ++* Howard Kapustein ++ Added the I8, I16, I32, and I64 modifiers. ++ ++* Jose Ortiz ++ Fixed rounding problem for %e. ++ ++* Jose Ortiz ++ Fixed various problems with the xlC and Sun C++ compilers. ++ ++ ++Version 1.3 - 2001/05/16 ++------------------------ ++* trio's treatment of the field width when the %e code was used was not ++ correct (reported by Gisli Ottarsson). It turns out the fraction part should ++ be zero-padded by default and the exponent part should be zero-prefixed if ++ it is only one digit. At least that's how the GNU and Sun libc's work. The ++ trio floating point output looks identical to them now. ++ ++* Fixed group scanning with modifiers. ++ ++* Fixed compilation for 64-bit Digital Unix. ++ ++* Igor Zlatkovic ++ Fixed compilation of dprintf, which uses read/write, for MSVC. ++ ++* Fixed various compilation problems on Digital Unix (mainly associated with ++ va_list). ++ ++ ++Version 1.2 - 2001/04/11 ++------------------------ ++* Added autoconf integration. If compiled with HAVE_CONFIG_H the following ++ happens. Firstly, is included. Secondly, trio will only be ++ compiled if WITH_TRIO is defined herein. Thirdly, if TRIO_REPLACE_STDIO is ++ defined, only stdio functions that have not been detected by autoconf, i.e. ++ those not defined by HAVE_PRINTF or similar, will be replaced by trio ++ functions (suggested by Daniel Veillard). ++ ++* Fixed '%m.nf' output. Previously trio did not treat the width properly ++ in all cases (reported by Gisli Ottarsson). ++ ++* Added explicit promotion for the scanfv family. ++ ++* Fixed more C++ compilation warnings. ++ ++ ++Version 1.1 - 2001/02/25 ++------------------------ ++* Added explicit promotion for the printfv familiy. A float must be specified ++ by %hf. ++ ++* Fixed positionals for printfv (reported by Gisli Ottarsson). ++ ++* Fixed an integer to pointer conversion problem on the SGI MIPS C compiler ++ (reported by Gisli Ottarsson). ++ ++* Fixed ANSI C++ warnings (type casting, and namespace is a reserved keyword). ++ ++* Added \n to all examples in the documentation to prevent confusion. ++ ++* Fixed StrSubstringMax ++ ++ ++Version 1.0 - 2000/12/10 ++------------------------ ++* Bumped Version number. ++ ++ ++Version 0.25 - 2000/12/09 ++------------------------- ++* Wrote more documentation. ++ ++* Improved NaN support and added NaN to regression test. ++ ++* Fixed C99 support. ++ ++* Added missing getter/setter functions. ++ ++ ++Version 0.24 - 2000/12/02 ++------------------------- ++* Added callback functionality for the user-defined specifier (<>). All ++ the necessary functions are defined in triop.h header file. See the ++ documentation for trio_register for further detail. ++ ++* Wrote initial documentation on the callback functionality. ++ ++* Added the printfv and scanfv family of functions, which takes a pointer ++ array rather than variadic arguments. Each pointer in the array must point ++ to the associated data (requested by Bruce Korb). ++ ++* As indicated in version 0.21 the extension modifiers (<>) have now been ++ completely removed. ++ ++* Added skipping of thousand-separators in floating-point number scanning. ++ ++ ++Version 0.23 - 2000/10/21 ++------------------------- ++* Added width to scanning of floating-point numbers. ++ ++* Wrote more documentation on trio_printf. ++ ++* Fixed problem with trailing zeroes after decimal-point. ++ ++ ++Version 0.22 - 2000/08/06 ++------------------------- ++* Added LC_CTYPE locale dependent character class expressions to scan lists. ++ Included are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], ++ [:lower:], [:print:], [:punct:], [:space:], [:upper:], [:xdigit:] ++ ++* Added C escapes to alternative string formatting and scanning. ++ ++* Added StrSubstringMax. ++ ++* Wrote a little more documentation. ++ ++* Fixed scanf return values. ++ ++* Fixed a sign error for non-ascii characters. ++ ++ ++Version 0.21 - 2000/07/19 ++------------------------- ++* Converted the documentation to TeX. With latex2man the documentation can ++ automatically be converted into man pages. ++ ++* Added trio_scanf, trio_vscanf, trio_fscanf, and trio_vfscanf. ++ ++* Added trio_dprintf, trio_vdprintf, trio_dscanf, and trio_vdscanf. These ++ functions can be used to write and read directly to pipes and sockets (the ++ assume blocking sockets). Stdio buffering is surpassed, so the functions are ++ async-safe. However, reading from stdin (STDIN_FILENO) or writing to stdout ++ (STDOUT_FILENO) reintroduces the buffering. ++ ++* Paul Janzen ++ Added trio_asprintf and trio_vasprintf, which are compatible with the GNU ++ and BSD interfaces. ++ ++* Added scanlist ranges for group scanning (%[]). ++ ++* Added width for scanning (missing for floating-point numbers though). ++ ++* Added variable size modifier (&) to handle system defined types of unknown ++ size. This modifier makes certain assumptions about the integer sizes, which ++ may not be valid on any machine. Consequently, the modifier will remain ++ undocumented, as it may be removed later. ++ ++* Added \777 and \xFF to alternative string scanning (%#s) ++ ++* Added the TRIO_REPLACE_STDIO check in the header. ++ ++* Improved performance of the multibyte character parsing. ++ ++* Fixed positionals (%n$) which had stopped working. ++ ++* Fixed hh and ll modifiers to allow exactly two letters and no more. ++ ++* Fixed ANSI C++ warnings. Also fixed the compiler warning about casting ++ between integer and pointer (this has been annoying me for ages). ++ ++* Fixed snprintf and vsnprintf with zero buffer size. ++ ++* Fixed NAN problems (reported by Keith Briggs). ++ ++* Fixed parsing of multibyte characters. The format string was not correctly ++ advanced in case of a multibyte character. ++ ++* Renamed many of the internal functions to have more consistant names. ++ ++* Removed the and modifiers. They are not really worth ++ including. The other <> modifiers may disappear as well. ++ ++ ++Version 0.20 - 2000/06/05 ++------------------------- ++* Added intmax_t and ptrdiff_t support. ++ ++* Added support for LC_NUMERIC grouping. ++ ++* Added double-dot notation for the conversion base. The style is now ++ %width.precision.base, where any argument can be a number, an asterix ++ indicating a parameter, or be omitted entirely. For example, %*..2i is ++ to specify binary numbers without precision, and with width as a parameter ++ on the va_list. ++ ++* Added sticky modifier (!), which makes subsequent specifiers of the same ++ type reuse the current modifiers. Inspired by a suggestion from Gary Porter. ++ ++* Added group scanning (%[]). Scanlist ranges and multibyte sequences are not ++ supported yet. ++ ++* Added count scanning (%n). ++ ++* Changed the number scanning to accept thousand separators and any base. ++ ++* Fixed positional for parameters. It is possible to write something like ++ %3$*1$.*2$d (which happens to be the same as %*.*d). ++ ++* Fixed precision of integers. ++ ++* Fixed parameter flags. Before trio could only handle one parameter flag per ++ specifier, although two (three with double-dot base) were possible. ++ ++* Fixed isinf() for those platforms where it is unimplemented. ++ ++ ++Version 0.18 - 2000/05/27 ++------------------------- ++* Rewrote the entire floating-point formatting function (Danny Dulai had ++ reported several errors and even supplied some patches, which unfortunately ++ were lost due to the refactoring). ++ ++* Removed the use of strlen() in the declaration of a stack array. This ++ caused problems on some compilers (besides it isn't really ANSI C compliant ++ anyways). Using some arbitrarily chosen maximum value; should examine if ++ some standard defines an upper limit on the length of decimal-point and ++ thousands-separator (sizeof(wchar_t) perhaps?) ++ ++* Changed the parsing of the format string to be multibyte aware. ++ ++ ++Version 0.17 - 2000/05/19 ++------------------------- ++* Added INF, -INF, and NAN for floating-point numbers. ++ ++* Fixed %#.9g -- alternative with precision. ++ ++* Ken Gibson ++ Fixed printing of negative hex numbers ++ ++* Joerg (last name unknown) ++ Fixed convertion of non-ASCII characters ++ ++ ++Version 0.16 - 1999/08/06 ++------------------------- ++* Changed the constness of the second argument of StrFloat and StrDouble. The ++ lack of parameter overloading in C is the reason for the strange use of ++ constness in strtof and strtod. ++ ++* Cleaned up constness. ++ ++ ++Version 0.15 - 1999/07/23 ++------------------------- ++* Fixed the internal representation of numbers from signed to unsigned. Signed ++ numbers posed a problem for large unsigned numbers (reported by Tero) ++ ++* Fixed a tiny bug in trio_vsprintfcat ++ ++* Changed the meaning of the max argument of StrAppendMax to be consistant ++ with StrFormatAppendMax. Now it is the maximal size of the entire target ++ buffer, not just the appended size. This makes it easier to avoid buffer ++ overflows (requested by Tero) ++ ++ ++Version 0.14 - 1999/05/16 ++------------------------- ++* Added size_t support (just waiting for a C99 compliant compiler to add ++ ptrdiff_t and intmax_t) ++ ++* Rewrote TrioOutStreamDouble so it does not use the libc sprintf to emulate ++ floating-point anylonger. ++ ++* Fixed width, precision, and adjustment for numbers and doubles. ++ ++ ++Version 0.13 - 1999/05/06 ++------------------------- ++* Fixed zero padding for %d. Now %d will only zero pad if explicitly requested ++ to do so with the 0 flag (reported by Tero). ++ ++* Fixed an incorrect while() condition in TrioGetString (reported by Tero). ++ ++ ++Version 0.12 - 1999/04/19 ++------------------------- ++* Fixed incorrect zero padding of pointers ++ ++* Added StrHash with STRIO_HASH_PLAIN ++ ++* Added StrFormatDateMax ++ ++ ++Version 0.11 - 1999/03/25 ++------------------------- ++* Made it compile under cygwin ++ ++* Fixed a bug were TrioPreprocess would return an error if no formatting chars ++ were found (reported by Tero). ++ ++ ++Version - 1999/03/19 ++-------------------- ++* Added trio_strerror and TRIO_ERROR_NAME. ++ ++* Changed the error codes to be positive (as errno) ++ ++* Fixed two reads of uninitialized memory reported by Purify ++ ++* Added binary specifiers 'b' and 'B' (like SCO.) ThousandSeparator can be ++ used to separate nibbles (4 bit) ++ ++* Renamed all Internal* functions to Trio*, which seems like a better ++ namespace (even though it is of no practical interest because these ++ functions are not visible beyond the scope of this file.) ++ ++ ++Version - 1999/03/12 ++-------------------- ++* Added hex-float format for StrToDouble ++ ++* Double references and gaps in the arguments are not allowed (for the %n$ ++ format) and in both cases an error code is returned. ++ ++* Added StrToDouble (and StrToFloat) ++ ++ ++Version - 1999/03/08 ++-------------------- ++* Added InStream and OutStream to the trio_T structure. ++ ++* Started work on TrioScan. ++ ++* Return values for errors changed. Two macros to unpack the error code has ++ been added to the header. ++ ++* Shortshort (hh) flag added. ++ ++* %#s also quotes the quote-char now. ++ ++* Removed the 'errorInFormat' boolean, which isn't used anymore after the ++ functions bail out with an error instead. ++ ++ ++Version - 1999/03/04 ++-------------------- ++* More than MAX_PARAMETERS parametes will now cause the TrioPreprocess() ++ function to return error. ++ ++* Unknown flags and/or specifiers cause errors too. ++ ++* Added trio_snprintfcat and trio_vsnprintfcat and the defined name ++ StrFormatAppendMax. They append a formatted string to the end of a string. ++ ++* Define MAX_PARAMETERS to 128 at all times instead of using NL_ARGMAX when ++ that exists. ++ ++* Added platform fixes for Amiga as suggested by Tero Jnk ++ ++ ++Version - 1999/01/31 ++-------------------- ++* vaprintf did add a zero byte even when it had failed. ++ ++* Cleaned up the code for locale handling and thousand separator ++ ++* Added trio_aprintf() and trio_vaprintf(). They return an allocated string. ++ ++* Added thousands separator for numbers ++ ++* Added floating point support for *printf ++ ++ ++Version - 1998/10/20 ++-------------------- ++* StrMatchCase() called StrMatch() instead of itself recursively ++ ++* Rewrote the implementation of *printf and *scanf and put all the code in ++ this file. Extended qualifiers and qualifiers from other standards were ++ added. ++ ++* Added StrSpanFunction, StrToLong, and StrToUnsignedLong ++ ++ ++Version - 1998/05/23 ++-------------------- ++* Made the StrEqual* functions resistant to NULL pointers ++ ++* Turns out strdup() is no standard at all, and some platforms (I seem to ++ recall HP-UX) has problems with it. Made our own StrDuplicate() instead. ++ ++* Added StrFormat() and StrFormatMax() to serve as sprintf() and snprintf() ++ respectively. +diff -up ghostscript-9.07/trio/compare.c.gs_sprintf ghostscript-9.07/trio/compare.c +--- ghostscript-9.07/trio/compare.c.gs_sprintf 2013-05-09 17:02:39.101447236 +0100 ++++ ghostscript-9.07/trio/compare.c 2013-05-09 17:02:39.101447236 +0100 +@@ -0,0 +1,53 @@ ++#include "trio.h" ++ ++#define compare(format, value) printf("FORMAT: %s\n", format); printf("TRIO: "); trio_printf(format,value); printf("\nLIBC: "); \ ++printf(format,value); printf("\n\n"); ++ ++int main() ++{ ++ compare("\"%e\"",2.342E+02); ++ compare("\"%10.4e\"",-2.342E-02); ++ compare("\"%11.4e\"",-2.342E-02); ++ compare("\"%12.4e\"",-2.342E-02); ++ compare("\"%13.4e\"",-2.342E-02); ++ compare("\"%14.4e\"",-2.342E-02); ++ compare("\"%15.4e\"",-2.342E-02); ++ compare("\"%16.4e\"",-2.342E-02); ++ compare("\"%16.4e\"",-2.342E-22); ++ compare("\"%G\"",-2.342E-02); ++ compare("\"%G\"",3.1415e-6); ++ compare("%016e", 3141.5); ++ compare("%16e", 3141.5); ++ compare("%-16e", 3141.5); ++ compare("%010.3e", 3141.5); ++ ++ compare("*%5f*", 3.3); ++ compare("*%5f*", 3.0); ++ compare("*%5f*", .999999E-4); ++ compare("*%5f*", .99E-3); ++ compare("*%5f*", 3333.0); ++ ++ compare("*%5g*", 3.3); ++ compare("*%5g*", 3.0); ++ compare("*%5g*", .999999E-4); ++ compare("*%5g*", .99E-3); ++ compare("*%5g*", 3333.0); ++ compare("*%5g*", 0.01); ++ ++ compare("*%5.g*", 3.3); ++ compare("*%5.g*", 3.0); ++ compare("*%5.g*", .999999E-4); ++ compare("*%5.g*", 1.0E-4); ++ compare("*%5.g*", .99E-3); ++ compare("*%5.g*", 3333.0); ++ compare("*%5.g*", 0.01); ++ ++ compare("*%5.2g*", 3.3); ++ compare("*%5.2g*", 3.0); ++ compare("*%5.2g*", .999999E-4); ++ compare("*%5.2g*", .99E-3); ++ compare("*%5.2g*", 3333.0); ++ compare("*%5.2g*", 0.01); ++ ++ return 0; ++} +diff -up ghostscript-9.07/trio/configure.in.gs_sprintf ghostscript-9.07/trio/configure.in +--- ghostscript-9.07/trio/configure.in.gs_sprintf 2013-05-09 17:02:39.101447236 +0100 ++++ ghostscript-9.07/trio/configure.in 2013-05-09 17:02:39.101447236 +0100 +@@ -0,0 +1,54 @@ ++dnl ++dnl Configuration for trio ++dnl ++ ++AC_INIT ++AC_CONFIG_SRCDIR([triodef.h]) ++AC_PREREQ(2.55) dnl autoconf 2.55 was released in 2002 ++ ++AC_PROG_CC ++ifdef([AC_PROG_CC_STDC], [AC_PROG_CC_STDC]) ++AC_LANG([C]) ++ ++AC_PROG_INSTALL ++AC_PROG_RANLIB ++ ++dnl ++dnl Alpha floating-point compiler option. ++dnl ++ ++AC_MSG_CHECKING(for IEEE compilation options) ++AC_CACHE_VAL(ac_cv_ieee_option, [ ++ AC_COMPILE_IFELSE(AC_LANG_PROGRAM(,[[[ ++ #if !(defined(__alpha) && (defined(__DECC) || defined(__DECCXX) || (defined(__osf__) && defined(__LANGUAGE_C__))) && (defined(VMS) || defined(__VMS))) ++ # error "Option needed" ++ typedef int option_needed[-1]; ++ #endif ++ ]]]), ++ ac_cv_ieee_option="/IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE", ++ AC_COMPILE_IFELSE(AC_LANG_PROGRAM(,[[[ ++ #if !(defined(__alpha) && (defined(__DECC) || defined(__DECCXX) || (defined(__osf__) && defined(__LANGUAGE_C__) && !defined(__GNUC__))) && !(defined(VMS) || defined(__VMS)) && !defined(_CFE)) ++ # error "Option needed" ++ typedef int option_needed[-1]; ++ #endif ++ ]]]), ++ ac_cv_ieee_option="-ieee", ++ AC_COMPILE_IFELSE(AC_LANG_PROGRAM(,[[[ ++ #if !(defined(__alpha) && (defined(__GNUC__) && (defined(__osf__) || defined(__linux__)))) ++ # error "Option needed" ++ typedef int option_needed[-1]; ++ #endif ++ ]]]), ++ ac_cv_ieee_option="-mieee", ++ ac_cv_ieee_option="none" ++ ) ++ ) ++ ) ++]) ++AC_MSG_RESULT($ac_cv_ieee_option) ++if test $ac_cv_ieee_option != none; then ++ CFLAGS="${CFLAGS} ${ac_cv_ieee_option}" ++fi ++ ++AC_CONFIG_FILES([Makefile]) ++AC_OUTPUT +diff -up ghostscript-9.07/trio/doc/doc_dynamic.h.gs_sprintf ghostscript-9.07/trio/doc/doc_dynamic.h +--- ghostscript-9.07/trio/doc/doc_dynamic.h.gs_sprintf 2013-05-09 17:02:39.102447240 +0100 ++++ ghostscript-9.07/trio/doc/doc_dynamic.h 2013-05-09 17:02:39.102447240 +0100 +@@ -0,0 +1,31 @@ ++/************************************************************************* ++ * ++ * $Id: doc_dynamic.h,v 1.1 2001/12/27 17:29:20 breese Exp $ ++ * ++ * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ++ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ++ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND ++ * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. ++ * ++ ************************************************************************/ ++ ++/** @addtogroup DynamicStrings Dynamic String Functions. ++Dynamic string functions. ++ ++@b SYNOPSIS ++ ++@verbatim ++cc ... -ltrio -lm ++ ++#include ++@endverbatim ++ ++@b DESCRIPTION ++ ++*/ +diff -up ghostscript-9.07/trio/doc/doc.h.gs_sprintf ghostscript-9.07/trio/doc/doc.h +--- ghostscript-9.07/trio/doc/doc.h.gs_sprintf 2013-05-09 17:02:39.102447240 +0100 ++++ ghostscript-9.07/trio/doc/doc.h 2013-05-09 17:02:39.102447240 +0100 +@@ -0,0 +1,172 @@ ++/************************************************************************* ++ * ++ * $Id: doc.h,v 1.20 2006/08/18 11:32:08 breese Exp $ ++ * ++ * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ++ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ++ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND ++ * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. ++ * ++ ************************************************************************/ ++ ++/** ++@mainpage ++ ++@author Bjrn Reese ++@author Daniel Stenberg ++ ++@section intro Introduction ++ ++Trio is a fully matured and stable set of printf and string functions ++designed be used by applications with focus on portability or with the ++need for additional features that are not supported by standard stdio ++implementation. ++ ++There are several cases where you may want to consider using trio: ++ ++@li Portability across heterogeneous platforms. ++@li Embedded systems without stdio support. ++@li Extendability of unsupported features. ++@li Your native version does not do everything you need. ++ ++When you write applications that must be portable to a wide range of ++platforms you often have to deal with inadequate implementations of the ++stdio library functions. Most notably is the lack of secure formatting ++functions, such as snprintf, or the lack of parameter reordering commonly ++used for the internationalization of applications, such as the $ ++modifier. Sometimes the feature you need is simply not present in stdio. ++So you end up spending much effort on determining which platforms supports ++what, and to write your own versions of various features. This is where ++trio can help you. Trio is a platform-independent implementation of the ++stdio printf and scanf functions and the string library functions. ++ ++The functionality described in the stdio standards is a compromise, and ++does unfortunately not include a mechanism to extend the functionality for ++an individual application. Oftentimes an application has the need for an ++extra feature, and the application code can become much more clear and ++readable by using an extension mechanism. Trio supports a range of useful ++extensions such as user-defined specifiers, passing of arguments in arrays, ++localized string scanning, thousand-separators, and arbitrary integer bases. ++ ++Trio fully implements the C99 (ISO/IEC 9899:1999) and UNIX98 (the Single ++Unix Specification, Version 2) standards, as well as many features from ++other implemenations, e.g. the GNU libc and BSD4. ++ ++@section examples Examples ++ ++@subsection ex1 Binary Numbers ++Output an integer as a binary number using a trio extension. ++@verbatim ++ trio_printf("%..2i\n", number); ++@endverbatim ++ ++@subsection ex2 Thousand-separator ++Output a number with thousand-separator using a trio extension. ++@verbatim ++ trio_printf("%'f\n", 12345.6); ++@endverbatim ++The thousand-separator described by the locale is used. ++ ++@subsection ex3 Fixed Length Array and Sticky Modifier ++Output an fixed length array of floating-point numbers. ++@verbatim ++ double array[] = {1.0, 2.0, 3.0}; ++ printf("%.2f %.2f %.2f\n", array[0], array[1], array[2]); ++@endverbatim ++The same with two trio extensions (arguments are passed in an array, and ++the first formatting specifier sets the sticky option so we do not have ++to type all the formatting modifiers for the remaining formatting specifiers) ++@verbatim ++ trio_printfv("%!.2f %f %f\n", array); ++@endverbatim ++Another, and more powerful, application of being able to pass arguments in ++an array is the creation of the printf/scanf statement at run-time, where ++the formatting string, and thus the argument list, is based on an external ++configuration file. ++ ++@subsection ex4 Localized scanning ++Parse a string consisting of one or more upper-case alphabetic characters ++followed by one or more numeric characters. ++@verbatim ++ sscanf(buffer, "%[A-Z]%[0-9]", alphabetic, numeric); ++@endverbatim ++The same but with locale using a trio extension. ++@verbatim ++ trio_sscanf(buffer, "%[[:upper:]]%[[:digit:]]", alphabetic, numeric); ++@endverbatim ++ ++@section legal Legal Issues ++Trio is distributed under the following license, which allows practically ++anybody to use it in almost any kind of software, including proprietary ++software, without difficulty. ++ ++"Copyright (C) 1998-2001 Bjorn Reese and Daniel Stenberg. ++ ++Permission to use, copy, modify, and distribute this software for any ++purpose with or without fee is hereby granted, provided that the above ++copyright notice and this permission notice appear in all copies. ++ ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ++WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ++MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND ++CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER." ++ ++@section contribution Contribution ++ ++@subsection contribute Contribute ++We appreciate any type of contribution, from ideas over improvements to ++error corrections. ++ ++The project space contains references to bug and feature tracking, ++mailing-list, and the CVS repository. We prefer communication via the ++mailing-list, but do not require you to be subscribed, because trio is a ++small project. ++ ++The project space is located at http://sourceforge.net/projects/ctrio/ ++ ++@subsection contributors Contributors ++We have received contributions from the following persons (in alphabetic ++order sorted by surname) ++ ++@li Craig Berry ++@li Karl Bochert ++@li Stan Boehm ++@li David Byron ++@li Brian Chapman ++@li Robert Collins ++@li Danny Dulai ++@li Bob Friesenhahn ++@li Jon Foster ++@li John Fotheringham ++@li Markus Henke ++@li Ken Gibson ++@li Paul Janzen ++@li Patrick Jessee ++@li Richard Jinks ++@li Tero Jnk ++@li Howard Kapustein ++@li Rune Enggaard Lausen ++@li Mehdi Lavasani ++@li Alexander Lukyanov ++@li Andreas Maus ++@li Mikey Menezes ++@li Emmanuel Mogenet ++@li Jacob Navia ++@li Jose Ortiz ++@li Joe Orton ++@li Gisli Ottarsson ++@li Mark Pickelmann ++@li Olli Savia ++@li Shaun Tancheff ++@li Marc Werwerft ++@li Igor Zlatkovic ++ ++Please let us know, and accept our apology, if we have omitted anybody. ++ ++*/ +diff -up ghostscript-9.07/trio/doc/doc_printf.h.gs_sprintf ghostscript-9.07/trio/doc/doc_printf.h +--- ghostscript-9.07/trio/doc/doc_printf.h.gs_sprintf 2013-05-09 17:02:39.102447240 +0100 ++++ ghostscript-9.07/trio/doc/doc_printf.h 2013-05-09 17:02:39.102447240 +0100 +@@ -0,0 +1,532 @@ ++/************************************************************************* ++ * ++ * $Id: doc_printf.h,v 1.5 2008/10/12 12:09:51 breese Exp $ ++ * ++ * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ++ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ++ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND ++ * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. ++ * ++ ************************************************************************/ ++ ++/** @addtogroup Printf Formatted Printing Functions. ++Variations of formatted printing functions. ++ ++@b SYNOPSIS ++ ++@verbatim ++cc ... -ltrio -lm ++ ++#include ++@endverbatim ++ ++@b DESCRIPTION ++ ++This documentation is incomplete. ++The documentation of the printf family in [C99] and [UNIX98] also applies ++to the trio counterparts. ++ ++All these functions outputs a string which is formatted according to the ++@p format string and the consecutive arguments. The @p format string is ++described in the Formatting section below. ++ ++@ref trio_printf, @ref trio_vprintf, and @ref trio_printfv writes the ++output to the standard output stream (stdout). ++ ++@ref trio_fprintf, @ref trio_vfprintf, and @ref trio_fprintfv writes the ++output to a given output stream. ++ ++@ref trio_dprintf, @ref trio_vdprintf, and @ref trio_dprintfv writes the ++output to a file descriptor (this includes, for example, sockets). ++ ++@ref trio_sprintf, @ref trio_vsprintf, and @ref trio_sprintfv writes the ++output into @p buffer. ++ ++@ref trio_snprintf, @ref trio_vsnprintf, and @ref trio_snprintfv writes @p ++max - 1 characters into @p buffer followed by a terminating zero character. ++If @p max is 1, then @p buffer will be an empty string. If @p max is 0, ++then @p buffer is left untouched, and can consequently be NULL. The number ++of characters that would have been written to @p buffer, had there been ++sufficient space, is returned. ++ ++@ref trio_snprintfcat appends the formatted text at the end of @p buffer. ++ ++@ref trio_asprintf, @ref trio_vasprintf, and @ref trio_asprintfv allocates ++and returns an allocated string in @p buffer containing the formatted text. ++ ++@b FORMATTING ++ ++The @p format string can contain normal text and conversion indicators. ++The normal text can be any character except the nil character (\000 = ++'\0') and the percent character (\045 = '%'). Conversion indicators ++consists of an indication character (%), followed by zero or more conversion ++modifiers, and exactly one conversion specifier. ++ ++@b Modifiers ++ ++Some modifiers exhibit the same behaviour for all specifiers, other modifiers ++indicate different behaviours for different specifiers, and other modifiers ++are only applicable to certain specifiers. The relationship is described for ++each modifier. The number 9 is used to denotes an arbitrary integer. ++ ++@em Positional ( @c 9$ ) [UNIX98] ++ ++Normally the arguments supplied to these functions are interpreted ++incrementially from left to right. Arguments can be referenced specifically in ++the format string. The modifier n$ selects the nth argument. The first ++argument is referred as 1$. If this modifier is used, it must be the first ++modifier after the indication character. n$ can also be used for argument ++width, precision, and base. ++ ++The performance penalty of using positionals is almost neglible (contrary to ++most other printf implementations). ++ ++@li @em Reference @em Mix. ++Mixing normal and positional specifiers is allowed [TRIO]. For example, ++@verbatim ++ trio_printf("%d %3$d %2$d\n", 1, 2, 3); ++@endverbatim ++results in ++@verbatim ++ 1 3 2 ++@endverbatim ++Arguments for the printf family are passed on the stack. On most platforms it ++is not possible to determine the size of individual stack elements, so it is ++essential that the format string corresponds exactly to the passed arguments. ++If this is not the case, incorrect values may be put into the result. ++ ++@li @em Reference @em Gap. ++For the same reason it is also essential that the format string does not ++contain any "gaps" in the positional arguments. For example, ++@verbatim ++ trio_printf("%1$d %3$d\n", 1, 2, 3); ++@endverbatim ++is NOT allowed. The format string parser has no knowledge about whether the ++second argument is, say, an integer or a long double (which have different ++sizes). ++@verbatim ++@endverbatim ++[UNIX98] describes this as unspecified behaviour. [TRIO] will detect reference ++gaps and return an error. ++ ++@li @em Double @em Reference. ++It is also not allowed to reference an argument twice or more. For example, ++@verbatim ++ trio_printf("%1$d %1$lf\n", 1); ++@endverbatim ++is NOT allowed, because it references the first argument as two differently ++sized objects. ++@verbatim ++@endverbatim ++[UNIX98] describes this as unspecified behaviour. [TRIO] will detect double ++references and return an error. ++ ++The following two statements are equivalent ++@verbatim ++ trio_printf("|%d %s\n|", 42, "meanings"); ++ |42 meanings| ++ ++ trio_printf("|%1$d %2$s|\n", 42, "meanings"); ++ |42 meanings| ++@endverbatim ++ ++@em Width ( @c 9 ) ++ ++Specifies the minimum width of a field. If the fields has less characters than ++specified by the width, the field will be left adjusted and padded by spaces. ++The adjustment and padding can be changed by the Alignment ( @c - ) and ++Padding ( @c 0 ) modifiers. ++ ++The width is specified as a number. If an asterix ( @c * ) is used instead, the ++width will be read from the argument list. ++ ++Prefixes, such as 0x for hexadecimal integers, are part of width. ++@verbatim ++ trio_printf("|%10i|\n", 42); ++ | 42| ++@endverbatim ++ ++@em Precision ( @c .9 ) ++ ++The precision has different semantics for the various data types. ++The precision specifies the maximum number of printed characters for strings, ++the number of digits after the decimal-point for floating-point numbers, ++the number of significant digits for the @c g (and @c G) representation of ++floating-point numbers, the minimum number of printed digits for integers. ++@verbatim ++ trio_printf("|%10.8i|%.8i|\n", 42, 42); ++ | 00000042|00000042| ++@endverbatim ++ ++@em Base ( @c ..9 ) [TRIO] ++ ++Sets the base that the associated integer must be converted to. The base can ++be between 2 and 36 (both included). ++@verbatim ++ trio_printf("|%10.8.2i|%10..2i|%..2i|\n", 42, 42, 42); ++ | 00101010| 101010|101010| ++ ++ trio_printf("|%*.8.*i|\n", 10, 2, 42); ++ | 00101010| ++@endverbatim ++ ++@em Padding ( @c 0 ) ++ ++Integer and floating point numbers are prepended by zeros. The number of ++leading zeros are determined by the precision. If precision is not present, ++width is used instead. ++ ++@em Short ( @c h ) ++ ++Integer arguments are read as an ( @c unsigned ) @c short @c int. String ++and character arguments are read as @c char @c * and @c char respectively. ++ ++@em Short @em short ( @c hh ) [C99, GNU] ++ ++The argument is read as an ( @c unsigned ) @c char. ++ ++@em Fixed @em Size ( @c I ) [MSVC] ++ ++The argument is read as a fixed sized integer. The modifier is followed by ++a number, which specifies the number of bits in the integer, and can be one ++of the following ++ ++@li @c I8 ++@li @c I16 ++@li @c I32 ++@li @c I64 (if 64-bits integers are supported) ++ ++Works only for integers (i, u, d, o, x, X) ++ ++@em Largest ( @c j ) [C99] ++ ++The argument is read as an @c intmax_t / @c uintmax_t, which is defined to ++be the largest signed/unsigned integer. ++ ++@em Long ( @c l ) ++ ++An integral argument is read as an ( @c unsigned ) @c long @c int. A string ++argument is read as a @c wchar_t @c *, and output as a multi-byte character ++sequence. ++ ++@em Long @em long ( @c ll ) [C99, UNIX98, GNU] ++ ++The argument is read as an ( @c unsigned ) @c long @c long @c int. ++ ++@em Long @em double ( @c L ) [C99, UNIX98, GNU] ++ ++The argument is read as a @c long @c double. ++ ++@em ptrdiff_t ( @c t ) [C99] ++ ++The argument is read as a @c ptrdiff_t, which is defined to be the signed ++integer type of the result of subtracting two pointers. ++ ++@em Quad ( @c q ) [BSD, GNU] ++ ++Corresponds to the long long modifier ( @c ll ). ++ ++@em Wide ( @c w ) [MISC] ++ ++For a string argument this is equivalent to using the long modifier ( @c l ). ++ ++@em size_t ( @c z ) [C99] ++ ++The argument is read as a @c size_t, which is defined to be the type ++returned by the @c sizeof operator. ++ ++@em size_t ( @c Z ) [GNU] ++ ++Corresponds to the size_t modifier ( @c z ). ++ ++@em Alternative ( @c # ) ++ ++Prepend radix indicator for hexadecimal, octal, and binary integer numbers ++and for pointers. ++Always add a decimal-point for floating-point numbers. ++Escape non-printable characters for strings. ++ ++@em Spacing ( ) ++ ++Prepend leading spaces when necessary. ++ ++@em Sign ( @c + ) ++ ++Always prepend a sign to numbers. Normally only the negative sign is prepended ++to a number. With this modifier the positive sign may also be prepended. ++ ++@em Alignment ( @c - ) ++ ++The output will be left-justified in the field specified by the width. ++ ++@em Argument ( @c * ) ++ ++Width, precision, or base is read from the argument list, rather than from ++the formatting string. ++ ++@em Quote / @em Grouping ( @c ' ) [MISC] ++ ++Groups integers and the integer-part of floating-point numbers according to ++the locale. Quote strings and characters. ++ ++@em Sticky ( @c ! ) [TRIO] ++ ++The modifiers listed for the current specifier will be reused by subsequent ++specifiers of the same group. ++The following specifier groups exists ++@li Integer ( @c i, @c u, @c d, @c o, @c x, @c X ) ++@li Floating-point ( @c f, @c F, @c e, @c E, @c g, @c G, @c a, @c A ) ++@li Character ( @c c ) ++@li String ( @c s ) ++@li Pointer ( @c p ) ++@li Count ( @c n ) ++@li Errno ( @c m ) ++@li Group ( @c [] ) ++ ++The sticky modifiers are active until superseeded by other sticky modifiers, ++or the end of the format string is reached. ++Local modifiers overrides sticky modifiers for the given specifier only. ++@verbatim ++ trio_printf("|%!08#x|%04x|%x|\n", 42, 42, 42); ++ |0x00002a|0x2a|0x00002a| ++@endverbatim ++ ++@b Specifiers ++ ++@em Percent ( @c % ) ++ ++Produce a percent ( @c % ) character. This is used to quote the indication ++character. No modifiers are allowed. ++The full syntax is @c %%. ++@verbatim ++ trio_printf("Percent is %%\n"); ++ Percent is % ++@endverbatim ++ ++@em Hex @em floats ( @c a, @c A ) [C99] ++ ++Output a hexadecimal (base 16) representation of a floating point number. The ++number is automatically preceeded by @c 0x ( or @c 0X ). The exponent is ++@c p ( or @c P ). ++@verbatim ++ trio_printf("|%a|%A|\n", 3.1415, 3.1415e20); ++ |0x3.228bc|0X3.228BCP+14| ++@endverbatim ++ ++@em Binary @em numbers ( @c b, @c B ) [MISC - SCO UnixWare 7] ++ ++DEPRECATED: Use Base modifier @c %..2i instead. ++ ++@em Character ( @c c ) ++ ++Output a single character. ++ ++@li Quote ( @c ' ) [TRIO]. ++Quote the character. ++ ++@em Decimal ( @c d ) ++ ++Output a decimal (base 10) representation of a number. ++ ++@li Grouping ( @c ' ) [TRIO]. ++The number is separated by the locale thousand separator. ++@verbatim ++ trio_printf("|%'ld|\n", 1234567); ++ |1,234,567| ++@endverbatim ++ ++@em Floating-point ( @c e, @c E) ++ ++Output a decimal floating-point number. ++The style is @c [-]9.99e[-]9, where ++@li @c [-]9.99 is the mantissa (as described for the @c f, @c F specifier), and ++@li @c e[-]9 is the exponent indicator (either @c e or @c E, depending on the ++floating-point specifier), followed by an optional sign and the exponent ++ ++If the precision is wider than the maximum number of digits that can be ++represented by the floating-point unit, then the number will be adequately ++rounded. For example, assuming DBL_DIG is 15 ++@verbatim ++ trio_printf("|%.18e|\n", (1.0 / 3.0)); ++ |3.333333333333333000e-01| ++@endverbatim ++ ++@em Floating-point ( @c f, @c F ) ++ ++Output a decimal floating-point number. ++The style is @c [-]9.99, where ++@li @c [-] is an optional sign (either @c + or @c -), ++@li @c 9 is the integer-part (possibly interspersed with thousand-separators), ++@li @c . is the decimal-point (depending on the locale), and ++@li @c 99 is the fractional-part. ++ ++If more digits are needed to output the number, than can be represented with ++the accuracy of the floating-point unit, then the number will be adequately ++rounded. For example, assuming that DBL_DIG is 15 ++@verbatim ++ trio_printf("|%f|\n", (2.0 / 3.0) * 1E18); ++ |666666666666666700.000000| ++@endverbatim ++ ++The following modifiers holds a special meaning for this specifier ++@li Alternative ( @c # ) [C99]. ++Add decimal point. ++@li Grouping ( @c ' ) [TRIO]. ++Group integer part of number into thousands (according to locale). ++ ++@em Floating-point ( @c g, @c G) ++ ++Output a decimal floating-point representation of a number. The format of ++either the @c f, @c F specifier or the @c e, @c E specifier is used, whatever ++produces the shortest result. ++ ++@em Integer ( @c i ) ++ ++Output a signed integer. Default base is 10. ++ ++@em Errno ( @c m ) [GNU] ++ ++@em Count ( @c n ) ++ ++Insert into the location pointed to by the argument, the number of octets ++written to the output so far. ++ ++@em Octal ( @c o ) ++ ++Output an octal (base 8) representation of a number. ++ ++@em Pointer ( @c p ) ++ ++Ouput the address of the argument. The address is printed as a hexadecimal ++number. If the argument is the NULL pointer the text @c (nil) will be used ++instead. ++@li Alternative ( @c # ) [TRIO]. ++Prepend 0x ++ ++@em String ( @c s, @c S ) ++ ++Output a string. The argument must point to a zero terminated string. If the ++argument is the NULL pointer the text @c (nil) will be used instead. ++@c S is equivalent to @c ls. ++@li Alternative ( @c # ) [TRIO]. ++Escape non-printable characters. ++ ++Non-printable characters are converted into C escapes, or hexadecimal numbers ++where no C escapes exists for the character. The C escapes, the hexadecimal ++number, and all backslashes are prepended by a backslash ( @c \ ). ++The supported C escapes are ++@li @c \a (\007) = alert ++@li @c \b (\010) = backspace ++@li @c \f (\014) = formfeed ++@li @c \n (\012) = newline ++@li @c \r (\015) = carriage return ++@li @c \t (\011) = horizontal tab ++@li @c \v (\013) = vertical tab ++ ++@verbatim ++ trio_printf("|One %s Three|One %'s Three|\n", "Two", "Two"); ++ |One Two Three|One "Two" Three| ++ ++ trio_printf("|Argument missing %s|\n", NULL); ++ |Argument missing (nil)| ++ ++ trio_printf("|%#s|\n", "\007 \a."); ++ |\a \a.| ++@endverbatim ++ ++@em Unsigned ( @c u ) ++ ++Output an unsigned integer. Default base is 10. ++ ++@em Hex ( @c x, @c X ) ++ ++Output a hexadecimal (base 16) representation of a number. ++ ++@li Alternative ( @c # ). ++Preceed the number by @c 0x ( or @c 0X ). The two characters are counted ++as part of the width. ++ ++@em User-defined ( @c <> ) ++ ++Invoke user-defined formatting. ++See @ref trio_register for further information. ++ ++@b RETURN @b VALUES ++ ++All functions returns the number of outputted characters. If an error occured ++then a negative error code is returned [TRIO]. Note that this is a deviation ++from the standard, which simply returns -1 (or EOF) and errno set ++appropriately. ++The error condition can be detected by checking whether the function returns ++a negative number or not, and the number can be parsed with the following ++macros. The error codes are primarily intended as debugging aide for the ++developer. ++ ++@li TRIO_EINVAL: Invalid argument. ++@li TRIO_ETOOMANY: Too many arguments. ++@li TRIO_EDBLREF: Double argument reference. ++@li TRIO_EGAP: Argument reference gap. ++@li TRIO_ENOMEM: Out of memory. ++@li TRIO_ERANGE: Invalid range. ++@li TRIO_ERRNO: The error is specified by the errno variable. ++ ++Example: ++@verbatim ++ int rc; ++ ++ rc = trio_printf("%r\n", 42); ++ if (rc < 0) { ++ if (TRIO_ERROR_CODE(rc) != TRIO_EOF) { ++ trio_printf("Error: %s at position %d\n", ++ TRIO_ERROR_NAME(rc), ++ TRIO_ERROR_POSITION(rc)); ++ } ++ } ++@endverbatim ++ ++@b SEE @b ALSO ++ ++@e trio_scanf, @e trio_register. ++ ++@b NOTES ++ ++The printfv family uses an array rather than the stack to pass arguments. ++This means that @c short @c int and @c float values will not be handled by ++the default argument promotion in C. Instead, these values must be explicitly ++converted with the Short (h) modifier in both cases. ++ ++Example: ++@verbatim ++ void *array[2]; ++ float float_number = 42.0; ++ short short_number = 42; ++ ++ array[0] = &float_number; ++ array[1] = &short_number; ++ ++ trio_printfv("%hf %hd\n", array); /* CORRECT */ ++ trio_printfv("%f %d\n", array); /* WRONG */ ++@endverbatim ++ ++@b CONFORMING @b TO ++ ++Throughout this document the following abbreviations have been used to ++indicate what standard a feature conforms to. If nothing else is indicated ++ANSI C (C89) is assumed. ++ ++@li [C89] ANSI X3.159-1989 ++@li [C99] ISO/IEC 9899:1999 ++@li [UNIX98] The Single UNIX Specification, Version 2 ++@li [BSD] 4.4BSD ++@li [GNU] GNU libc ++@li [MSVC] Microsoft Visual C ++@li [MISC] Other non-standard sources ++@li [TRIO] Extensions specific for this package ++ ++*/ +diff -up ghostscript-9.07/trio/doc/doc_register.h.gs_sprintf ghostscript-9.07/trio/doc/doc_register.h +--- ghostscript-9.07/trio/doc/doc_register.h.gs_sprintf 2013-05-09 17:02:39.102447240 +0100 ++++ ghostscript-9.07/trio/doc/doc_register.h 2013-05-09 17:02:39.102447240 +0100 +@@ -0,0 +1,384 @@ ++/************************************************************************* ++ * ++ * $Id: doc_register.h,v 1.3 2008/10/12 12:09:51 breese Exp $ ++ * ++ * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ++ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ++ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND ++ * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. ++ * ++ ************************************************************************/ ++ ++/** @addtogroup UserDefined User-defined Formatted Printing Functions. ++Functions for using customized formatting specifiers. ++ ++@b SYNOPSIS ++ ++@verbatim ++cc ... -ltrio -lm ++ ++#include ++#include ++@endverbatim ++ ++@b DESCRIPTION ++ ++This documentation is incomplete. ++ ++@b User-defined @b Specifier ++ ++The user-defined specifier consists of a start character (\074 = '<'), an ++optional namespace string followed by a namespace separator (\072 = ':'), ++a format string, an optional skipping separator (\174 = '|'), and an end ++character (\076 = '>'). ++ ++The namespace string can consist of alphanumeric characters, and is used to ++define a named reference (see below). The namespace is case-sensitive. If no ++namespace is specified, then we use an unnamed reference (see below). ++ ++The format can consist of any character except the end character ('>'), the ++namespace separator (':'), the skipping separator ('|'), and the nil character ++(\000). ++ ++Any modifier can be used together with the user-defined specifier. ++ ++There are two formats for invoking a user-defined specifier. The first format ++is an extension of the normal printf/scanf formatting. It uses the percent ++character (\045 = '%') followed by optional qualifiers and a specifier. For ++example: ++ ++@verbatim ++ trio_printf("%\n", my_handle, my_data); ++@endverbatim ++ ++Some C compilers can issue a warning if there is a mismatch between specifiers ++and arguments. Unfortunately, these warnings does not work with the first ++format for user-defined specifiers. Therefore the second format has been ++introduced. The second format can only be applied to user-defined specifiers. ++ ++The second format starts with a dollar character (\044 = '$') instead of the ++percent character, and is followed by optional qualifiers and the user-defined ++specifier. If the specifier contains a pipe character (\174 = '|'), then ++everything between the pipe character and the end character ('>') is ignored. ++The ignored part can be used to list the normal specifiers that the C compiler ++uses to determine mismatches. For example: ++ ++@verbatim ++ trio_printf("$\n", my_handle, my_data); ++@endverbatim ++ ++@b Registering ++ ++A user-defined specifier must be registered before it can be used. ++Unregistered user-defined specifiers are ignored. The @ref trio_register ++function is used to register a user-defined specifier. It takes two argument, ++a callback function and a namespace, and it returns a handle. The handle must ++be used to unregister the specifier later. ++ ++The following example registers a user-define specifier with the "my_namespace" ++namespace: ++ ++@verbatim ++ my_handle = trio_register(my_callback, "my_namespace"); ++@endverbatim ++ ++There can only be one user-defined specifier with a given namespace. There ++can be an unlimited number (subject to maximum length of the namespace) of ++different user-defined specifiers. ++ ++Passing NULL as the namespace argument results in an anonymous reference. ++There can be an unlimited number of anonymous references. ++ ++@b REFERENCES ++ ++There are two ways that a registered callback can be called. Either the ++user-defined specifier must contain the registered namespace in the format ++string, or the handle is passed as an argument to the formatted printing ++function. ++ ++If the namespace is used, then a user-defined pointer must be passed as an ++argument: ++ ++@verbatim ++ trio_printf("%\n", my_data); ++@endverbatim ++ ++If the handle is used, then the user-defined specifier must not contain a ++namespace. Instead the handle must be passed as an argument, followed by a ++user-defined pointer: ++ ++@verbatim ++ trio_printf("%\n", my_handle, my_data); ++@endverbatim ++ ++The two examples above are equivalent. ++ ++There must be exactly one user-defined pointer per user-defined specifier. ++This pointer can be used within the callback function with the ++@ref trio_get_argument getter function (see below). ++ ++The format string is optional. It can be used within the callback function ++with the @ref trio_get_format getter function. ++ ++@b Anonymous @b References ++Anonymous references are specified by passing NULL as the namespace. ++ ++The handle must be passed as an argument followed by a user-defined pointer. ++No namespace can be specified. ++ ++@verbatim ++ anon_handle = trio_register(callback, NULL); ++ trio_printf("%\n", anon_handle, my_data); ++@endverbatim ++ ++@b Restrictions ++ ++@li The length of the namespace string cannot exceed 63 characters. ++@li The length of the user-defined format string cannot exceed 255 characters. ++@li User-defined formatting cannot re-define existing specifiers. ++This restriction was imposed because the existing formatting specifiers have ++a well-defined behaviour, and any re-definition would apply globally to an ++application (imagine a third-party library changing the behaviour of a ++specifier that is crusial to your application). ++ ++@b CALLBACK @b FUNCTION ++ ++The callback function will be called if a matching user-defined specifier ++is found within the formatting string. The callback function takes one input ++parameter, an opaque reference which is needed by the private functions. It ++returns an @c int, which is currently ignored. The prototype is ++ ++@verbatim ++ int (*trio_callback_t)(void *ref); ++@endverbatim ++ ++See the Example section for full examples. ++ ++@b PRINTING @b FUNCTIONS ++ ++The following printing functions must only be used inside a callback function. ++These functions will print to the same output medium as the printf function ++which invoked the callback function. For example, if the user-defined ++specifier is used in an sprintf function, then these print functions will ++output their result to the same string. ++ ++@b Elementary @b Printing ++ ++There are a number of function to print elementary data types. ++ ++@li @ref trio_print_int Print a signed integer. For example: ++@verbatim ++ trio_print_int(42); ++@endverbatim ++@li @ref trio_print_uint Print an unsigned integer. ++@li @ref trio_print_double Print a floating-point number. ++@li @ref trio_print_string Print a string. For example: ++@verbatim ++ trio_print_string("Hello World"); ++ trio_print_string(trio_get_format()); ++@endverbatim ++@li @ref trio_print_pointer Print a pointer. ++ ++@b Formatted @b Printing ++ ++The functions @ref trio_print_ref, @ref trio_vprint_ref, and ++@ref trio_printv_ref outputs a formatted string just like its printf ++equivalents. ++ ++@verbatim ++ trio_print_ref(ref, "There are %d towels\n", 42); ++ trio_print_ref(ref, "%\n", recursive_writer, trio_get_argument(ref)); ++@endverbatim ++ ++@b GETTER @b AND @b SETTER @b FUNCTIONS ++ ++The following getter and setter functions must only be used inside a callback ++function. They can either operate on the modifiers or on special data. ++ ++@b Modifiers ++ ++The value of a modifier, or a boolean indication of its presence or absence, ++can be found or set with the getter and setter functions. ++The generic prototypes of the these getter and setter functions are ++ ++@verbatim ++ int trio_get_???(void *ref); ++ void trio_set_???(void *ref, int); ++@endverbatim ++ ++where @c ??? refers to a modifier. For example, to get the width of the ++user-defined specifier use ++ ++@verbatim ++ int width = trio_get_width(ref); ++@endverbatim ++ ++@b Special @b Data ++ ++Consider the following user-defined specifier, in its two possible referencing ++presentations. ++ ++@verbatim ++ trio_printf("%\n", namespace_writer, argument); ++ trio_printf("%\n", argument); ++@endverbatim ++ ++@ref trio_get_format will get the @p format string, and ++@ref trio_get_argument} will get the @p argument parameter. ++There are no associated setter functions. ++ ++@b EXAMPLES ++ ++The following examples show various types of user-defined specifiers. Although ++each specifier is demonstrated in isolation, they can all co-exist within the ++same application. ++ ++@b Time @b Example ++ ++Print the time in the format "HOUR:MINUTE:SECOND" if "time" is specified inside ++the user-defined specifier. ++ ++@verbatim ++ static int time_print(void *ref) ++ { ++ const char *format; ++ time_t *data; ++ char buffer[256]; ++ ++ format = trio_get_format(ref); ++ if ((format) && (strcmp(format, "time") == 0)) { ++ data = trio_get_argument(ref); ++ if (data == NULL) ++ return -1; ++ strftime(buffer, sizeof(buffer), "%H:%M:%S", localtime(data)); ++ trio_print_string(ref, buffer); ++ } ++ return 0; ++ } ++@endverbatim ++ ++@verbatim ++ int main(void) ++ { ++ void *handle; ++ time_t now = time(NULL); ++ ++ handle = trio_register(time_print, "my_time"); ++ ++ trio_printf("%