Compare commits

...
382 Commits
Author SHA1 Message Date
Alug 4f0cf44e78 Merge branch 'unnestmothink' into fixgnu23 2025-07-27 18:15:31 +02:00
Alug 2417647110 Merge branch 'Saturn-Next' into fixgnu23 2025-07-27 18:15:04 +02:00
Alug 982cd7bde2 add mobj islocal field
so we can skip the pushable trigger stuff for local mobjs for synch reasons
very sketchy
2025-07-27 18:14:27 +02:00
Alug d6bd289fcf Merge branch 'Saturn-Next' into unnestmothink 2025-07-27 18:14:17 +02:00
Alug ba44e61733 Merge branch 'Saturn' into Saturn-Next 2025-07-27 15:09:58 +02:00
chromaticpipe 845652cbfe Make it a part of fullscreen cvar 2025-07-27 15:02:24 +02:00
chromaticpipe ceafa06efc Borderless window toggle 2025-07-27 15:01:47 +02:00
Alug e6f487474b register chasecam with the other cam vars
why dupe a loop
2025-07-27 14:53:31 +02:00
Alug d8461bb44f dont apply player camfade when exiting or in freecam mode
also renames it and moves the check outside
2025-07-27 14:53:07 +02:00
Alug e25d366728 add toggable player close to camera fade
similar to some other kartracers
only takes other players into account
2025-07-27 14:51:10 +02:00
Alug 2abf0b98ac dont do this in dedi
dont need to, its pointless and prob causes more issues than anything
2025-07-27 14:32:38 +02:00
Alug 0f087d13bb dont do this in dedi
dont need to, its pointless and prob causes more issues than anything
2025-07-27 14:18:41 +02:00
indev 2e914c61d1 Init displayplayers to {0} 2025-07-27 14:33:01 +03:00
indev 3f599d5a28 Fix smol typo :3 2025-07-27 14:03:35 +03:00
indev 6ef1f73d4d Init displayplayers to {0} 2025-07-27 13:54:27 +03:00
Alug 38b84baf9d Merge pull request #193 from chromaticpipe/borderlesswindowtoggle
Borderless window toggle
2025-07-26 21:42:50 +01:00
chromaticpipe fae50c0e19 Make it a part of fullscreen cvar 2025-07-26 15:18:03 -05:00
Alug 50f7e2084c seenames stuff is always unlikely 2025-07-26 21:29:25 +02:00
Alug 67cc5402cf move assignments after early returns ST_drawLevelTitle 2025-07-26 21:29:21 +02:00
Alug 2259d4f309 get rid of code dupe for fpscapping stuff 2025-07-26 21:29:16 +02:00
Alug f8d903e7d2 simplify this 2025-07-26 21:29:13 +02:00
Alug 805cde8ae8 D_CleanFile can be static 2025-07-26 21:29:09 +02:00
Alug b23906e327 update link in addon menu to "mb.srb2.org/addons"
:chonkbuncle:
2025-07-26 21:29:04 +02:00
Gustaf Alhäll 2052afdb66 Fix custom addon directory being ignored when downloading addons 2025-07-26 21:29:01 +02:00
chromaticpipe d9c7a40d4a Borderless window toggle 2025-07-26 11:58:55 -05:00
Alug cb2e017bcf seenames stuff is always unlikely 2025-07-26 16:18:59 +02:00
Alug d91fbf5d36 move assignments after early returns ST_drawLevelTitle 2025-07-26 16:18:56 +02:00
Alug 9859e43be7 get rid of some redundancy R_Frame stuff
R_SetupCommonFrame already checks the actual sector for us, so we dont need to do this before
2025-07-26 16:18:52 +02:00
Alug 306fec6f9e get rid of code dupe for fpscapping stuff 2025-07-26 16:18:25 +02:00
Alug 3e8b3e868b simplify this 2025-07-26 16:18:22 +02:00
Alug 9261d9c5b2 D_CleanFile can be static 2025-07-26 16:18:20 +02:00
Alug f97941f86e update link in addon menu to "mb.srb2.org/addons"
:chonkbuncle:
2025-07-24 23:47:41 +02:00
Gustaf Alhäll a4810bd6c8 Fix custom addon directory being ignored when downloading addons 2025-07-24 23:45:55 +02:00
Alug 93cbba218a add mobj islocal field
so we can skip the pushable trigger stuff for local mobjs for synch reasons
very sketchy
2025-07-24 22:33:53 +02:00
Alug e749346f0c fix console taking minutes to open during frameskipping
prob not the best way to handle this, but its the simplest
the console should always be openable without issues unless during wipes, since in some cases you end up having to kill the game to do anything
2025-07-24 20:47:31 +02:00
Alug a658883664 fix console taking minutes to open during frameskipping
prob not the best way to handle this, but its the simplest
the console should always be openable without issues unless during wipes, since in some cases you end up having to kill the game to do anything
2025-07-24 20:47:21 +02:00
indev d94c10014f Move server search below refresh option 2025-07-24 21:20:19 +03:00
Alug 45629386bb update credits
this is super full and we need to think about something better for this X)
2025-07-24 19:03:06 +02:00
Alug ffec9d64d5 delet windoze users (winuser.h)
apparently this makes cross compile commit sudoku, need to test this on actual windoze and see if this breaks anything since idk how this file even works
thx nep for the tip!
2025-07-24 15:22:44 +01:00
Alug 3e9f17af86 raise version number to 8.3
so i dont forger before release lul
2025-07-24 17:18:57 +02:00
Alug 03ff2fc007 enable ZDEBUG by default
this is just quite useful honestly
2025-07-24 17:03:23 +02:00
Alug 4492c00840 move prints to ZDEBUG2
as it seems to be for this purpose
2025-07-24 17:03:18 +02:00
Alug e15319ac9b move this stuff behind ZDEBUG 2025-07-24 17:03:10 +02:00
Alug fa012aefe1 let Z_CheckHeap print file and line of where it occured
like its supposed to lel
2025-07-24 17:03:06 +02:00
Alug e681d2d24d remove itemamount check here
replicate vanilla
even if this becomes negative
this does not seem to crash, so id rather do whatever vanilla does
2025-07-24 16:41:28 +02:00
Alug 76e54762d8 add toggle for quake screenshake effects
TODO: make an accessability option menu for certain effects
2025-07-24 16:39:06 +02:00
GenericHeroGuy 3b7d517be2 bruh
Let's try that again, this time putting the camera in a local...
2025-07-24 16:38:55 +02:00
Alug f4da64e3fa remove prob pointless check
viewplayer will be the currently viewed displayplayer lel
2025-07-24 16:38:44 +02:00
GenericHeroGuy 384acf8e31 Fix fake floors in Donut Plains disappearing when chasecam is off
Also remove the useless R_PointInSubsector calls
2025-07-24 16:37:18 +02:00
indev a423451383 SF_HIRES is already handled via spritexscale and spriteyscale 2025-07-24 16:37:08 +02:00
indev 66cfceedaf If gamestate resend took too long, abort resynching 2025-07-24 16:36:26 +02:00
Alug fe9107fa9d fix the fov adjust check
lmao oops
2025-07-24 16:33:29 +02:00
chromaticpipe e4f2db54e7 Fix level interpolators jittering during objectplac 2025-07-24 16:33:01 +02:00
chromaticpipe 2f5fe01ae0 Truncate trailing zeroes in float CVars 2025-07-24 16:32:04 +02:00
chromaticpipe 1bb7bd0abc Fix help command for CV_FLOAT CVars 2025-07-24 16:31:57 +02:00
indev a84ec88bc3 dedi's do run got_mapcmd :p 2025-07-24 16:29:09 +02:00
Alug 4a2e78081a shut up curl im already long 2025-07-24 16:27:56 +02:00
Alug d09d2cb445 use memcmp during startup map check
prob not faster just looks a bit better tbh
2025-07-24 16:27:30 +02:00
Alug 1faa585e83 fix memoryleak in pk3 verify functions 2025-07-24 16:27:16 +02:00
Alug 7479c82691 some crap from ceepeepeecheck 2025-07-24 16:27:04 +02:00
Alug cfab2236da fix awayview join crash
player->awayviewmobj may not exist yet in some cases
2025-07-24 16:26:48 +02:00
Alug d2ee344b22 Fix underflow in consistancy checking code
https://git.srb2.org/Hanicef/SRB2Classic/-/commit/9f5686ef48956cd64ef92f737e59cbbaa27d8cf9
2025-07-24 16:25:57 +02:00
Alug b22737223e didnt mean to change this lel 2025-07-24 16:25:06 +02:00
Alug 578158c060 move HWR_GetTexturePalette calls
to after early returns/where they are used
2025-07-24 16:24:48 +02:00
Alug 8eda0f78f7 call HWR_LoadMapTextures in paletterender toggle callback
from srb2 pr
2025-07-24 16:24:45 +02:00
Alug 2c2c82dc1a add mo checks to automap stuff 2025-07-24 16:24:22 +02:00
Alug d8c9522ec9 add a bunch of checks for if G_BuildMapTitle returns NULL 2025-07-24 16:24:14 +02:00
Alug 492aef2165 no need for an else here 2025-07-24 16:23:50 +02:00
Alug fc0409e967 readd cubeapply check here 2025-07-24 16:23:32 +02:00
Alug 8a89b57e48 this memset is incorrect and does nothing 2025-07-24 16:22:45 +02:00
Alug 0f6b9ba181 remove this
prob wrong assumption, our netcode sucks massive ass
2025-07-24 16:22:23 +02:00
Alug 8f1b4004c9 fix compiler warning bout playeringame 2025-07-24 16:21:45 +02:00
Alug bee5250940 readd flexible array for softwarepatch columnofs
how did this ever work lel
2025-07-24 16:20:48 +02:00
Alug c61a2e6ba2 fix https://github.com/Indev450/SRB2Kart-Saturn/issues/191
was an oversight when i cleaned up the gamepad stuff a bit
2025-07-24 16:16:04 +02:00
Alug d293bb9672 fix https://github.com/Indev450/SRB2Kart-Saturn/issues/190
doing it like this, so potentially wonky socked maps dont show up if its disabled
2025-07-24 16:15:57 +02:00
Alug 9fb3f4c9a3 fix https://github.com/Indev450/SRB2Kart-Saturn/issues/191
was an oversight when i cleaned up the gamepad stuff a bit
2025-07-24 15:38:05 +02:00
Alug 9a60441e54 few more things for hw renderer
just moving aaround some things and declaring more stuff as const
2025-07-23 17:07:38 +02:00
Alug 29cf728fac enable ZDEBUG by default
this is just quite useful honestly
2025-07-22 17:33:23 +02:00
Alug 3c78c5c57d ok git very cool 2025-07-22 17:33:11 +02:00
Alug 7f3f332821 Remove aligned allocation functions 2025-07-22 17:33:07 +02:00
Alug 38576082fb move prints to ZDEBUG2
as it seems to be for this purpose
2025-07-22 17:31:44 +02:00
Alug 4a4b5661f2 move this stuff behind ZDEBUG 2025-07-22 17:31:22 +02:00
Alug 1e879dc432 let Z_CheckHeap print file and line of where it occured
like its supposed to lel
2025-07-22 14:18:00 +02:00
Alug f3c8ff19b9 remove redundant R_SetColumnFunc call
this would only be needed if we had brightmap support, but like this it just sets the column function to what it already is
2025-07-21 19:11:01 +02:00
Alug fdd19632bf Use R_RenderSegLoop if the back sector has any 3D floor planes
fixes issues in northern district zone
2025-07-21 19:10:58 +02:00
Alug efc4a513ce Merge branch 'Saturn-Next' into fixgnu23 2025-07-20 17:02:31 +02:00
Alug b13793b2a4 Merge branch 'Saturn-Next' into unnestmothink 2025-07-20 17:00:53 +02:00
Alug e102d218ff add toggle for quake screenshake effects
TODO: make an accessability option menu for certain effects
2025-07-19 22:54:37 +02:00
Alug 20cdec33fb fix https://github.com/Indev450/SRB2Kart-Saturn/issues/190
doing it like this, so potentially wonky socked maps dont show up if its disabled
2025-07-19 22:42:37 +02:00
indev 12d4a6d291 Also add scoll into level select for displaying map source filename 2025-07-18 23:19:19 +03:00
Alug d2b1ff595d remove itemamount check here
replicate vanilla
even if this becomes negative
this does not seem to crash, so id rather do whatever vanilla does
2025-07-18 17:57:45 +02:00
indev 03d79fba16 Add filename scrolling for addons menu 2025-07-18 14:48:45 +03:00
indev 989c29f7a0 Move scrollMusicName into m_misc as M_ScrollString 2025-07-18 14:21:05 +03:00
Alug 8a79c0a4e0 simplify free block in P_RemoveMobj
should be functionally the same
2025-07-18 11:01:58 +02:00
Alug 307c333c50 use branch instrincts for P_MobjThinker
based on observations from kart stuff
2025-07-18 11:01:28 +02:00
Alug 3ce8b9f09c oop move this back
this is some global, dont wanna mess things up
2025-07-18 10:57:15 +02:00
Alug 4dbe637510 remove pointless var P_TryCameraMove 2025-07-17 00:28:22 +02:00
Alug c0e97e7f43 store sector directly P_CheckPosition
hopefully this makes pointer access faster here
2025-07-17 00:28:19 +02:00
Alug 37fc64e97d optimization K_KartUpdatePosition
this checked the distance to every single waypoint on the map always and unconditionally, but we dont need the distance unconditionally so only check if we need to
+5fps in techbatics hadal classic timedemo
2025-07-17 00:06:59 +02:00
Alug ca93f08230 use branch instricts for blua
mostly just for error handling
similar to upstream lua and bluajit
hope this speeds this up a little
2025-07-16 23:01:16 +02:00
Alug 3581ce811c cache those things 2025-07-16 23:01:12 +02:00
Alug 0411c40fae discord rpc my butt 2025-07-15 17:04:32 +02:00
Alug 68cb96ab97 💀 fix menu screentex toggle lel
thx neppy!
2025-07-15 15:30:34 +02:00
Alug 0159b8d0a3 use the tooltips array in the menu_t struct for tooltips
so this was always there lel
gets rid of massively duplicated tooltip calls and is generally cleaner
2025-07-15 15:03:00 +02:00
Alug aea3b49a51 💀 fix menu screentex toggle lel
thx neppy!
2025-07-15 14:00:57 +02:00
GenericHeroGuy 1a6f775cc3 bruh
Let's try that again, this time putting the camera in a local...
2025-07-15 14:00:53 +02:00
Alug ddd192fad0 declare all the kart "time" stuff as const
as far as i can see those never get overwritten and cant be overwritten
2025-07-15 14:00:49 +02:00
Alug 2e4fb32dac dont apply player camfade when exiting or in freecam mode
also renames it and moves the check outside
2025-07-15 14:00:46 +02:00
Alug 7d6e210625 use c++ template for HWR_DrawSprites
works just as well without code dupe
2025-07-13 23:11:52 +02:00
Alug 3ca42ce42f register chasecam with the other cam vars
why dupe a loop
2025-07-13 21:52:26 +02:00
Alug e4e40cf049 remove prob pointless check
viewplayer will be the currently viewed displayplayer lel
2025-07-13 21:52:23 +02:00
Alug d4f912e3b0 add toggable player close to camera fade
similar to some other kartracers
only takes other players into account
2025-07-13 21:52:20 +02:00
Alug eec4443c95 smol stuff i missed i_video 2025-07-13 16:31:59 +02:00
Alug b938c75892 clean up i_video.c a little
what a mess
this is still far from tidy
2025-07-13 16:17:32 +02:00
Alug 455cb9ca24 delet windoze users
apparently this makes cross compile commit sudoku, need to test this on actual windoze and see if this breaks anything since idk how this file even works
thx nep for the tip!
2025-07-12 14:56:34 +02:00
Alug 24e7f5f864 readd R_PointInSubsectorFast
use it for camera, viewpoint, some precip and sound stuff and (visual) banana slope calc
after profiling it a bit, this may be 2-4x faster in a bunch cases
2025-07-12 13:39:57 +02:00
Alug 298fa36c5d uninline R_IsPointInSubsector
this gets used like once or twice, we dont need that inlined
2025-07-12 13:35:12 +02:00
indev d31e9c5b55 Strip colors from server name when searching through server list 2025-07-11 23:15:19 +03:00
Alug 30f53f398f move CopyCaretColors to m_misc 2025-07-11 21:56:10 +02:00
indev eee217deec Add server search 2025-07-11 22:43:36 +03:00
Alug 487ef6f1b9 fix windoze for the 50 trillionth time
when do we finally remove windows support?
those two things do absolutely fucking nothing but shit dies without em for whatever reason
2025-07-08 17:05:44 +01:00
Alug a554b886c6 fix peeindex overflow
lelelele thx indev <3
2025-07-08 14:23:34 +02:00
Alug f2d68b075c texturewidthmask can be static 2025-07-08 13:48:18 +02:00
Alug dc24de3501 fix color translated spans lmao
oopsie
well atleast we got some extra safety with the spandata source lel
2025-07-08 13:48:14 +02:00
Alug d2c73f072e reuse "i" 2025-07-08 12:02:10 +02:00
GenericHeroGuy 96bc7f7aa6 Fix fake floors in Donut Plains disappearing when chasecam is off
Also remove the useless R_PointInSubsector calls
2025-07-08 12:01:49 +02:00
Alug bd48b24000 some micro optimize 2025-07-08 12:01:46 +02:00
indev a26867bbdb Add separate option to toggle parallel rendering in R_DrawMaskedList 2025-07-08 00:36:25 +03:00
indev 8d570b7ba3 Revert "Disable multithreading in R_DrawMaskedList"
This reverts commit 5a44afcd9f.
2025-07-08 00:10:08 +03:00
Alug 96f5a8adb3 fix for non pow2 width textures in software from doom-legacy 2025-07-07 21:47:48 +02:00
indev 3b34f0a972 Sort replays in replay hut 2025-07-06 15:48:18 +03:00
Alug fe5a0b7c64 GL_ 2025-07-05 15:51:30 +02:00
BlueStaggo 2aa5324225 Manual mipmapping + Texture padding 2025-07-05 15:51:27 +02:00
Alug 22f50402fe remove this 2025-07-05 15:51:15 +02:00
Gustaf Alhäll 4e2f1bcf2b Fix invalid formats being passed to interal texture formats
The effects that this had on the engine is unknown, but the reference
pages makes in very clear that the old behavior is wrong.
2025-07-05 15:50:48 +02:00
indev ca34b0c8d6 Add /mute chat command 2025-07-05 00:27:17 +03:00
indev 0df5ef996c (kinda) unify LookupPlayer and nametonum, rename first into D_LookupPlayer 2025-07-04 23:15:31 +03:00
Alug 4c0ea2695e remove smoothpos cvar and add it as setting for "postitionanimation" cvar 2025-07-04 12:32:49 +02:00
Alug 48556ca428 oop lmao 2025-07-04 12:23:34 +02:00
NepDisk 5db50bbaff Port HEPII(I) position number scaling 2025-07-04 11:19:48 +02:00
Alug 416da7cdc8 use memset for S_ClearQueue
just simpler
2025-07-04 11:19:45 +02:00
Alug f47057e800 update credits
this is super full and we need to think about something better for this X)
2025-07-03 10:17:12 +02:00
Alug 090559a766 move this out of maptitle condition
it does not rely on it and may even fail
idk why i threw it in there
2025-07-03 00:34:19 +02:00
Alug 1a6a3de443 double fpscounter samples
slightly more readable
2025-07-03 00:32:15 +02:00
Alug 0293fbfe99 why are you still here wtf 2025-07-01 21:51:28 +02:00
Alug ecfb52eabe delet GETTEXT and translation stuff 2025-07-01 21:50:56 +02:00
Alug 999e1a525e use quickcamdist for render distance culling stuff
we do not need this to be accurate at all in these cases, so this is probably faster than doing le fixedhypot
2025-07-01 21:24:58 +02:00
Alug ef530c2f7d tiny optimizations hw_main again 2025-07-01 21:15:17 +02:00
indev 3e5d1a436c Add option for smallminimapplayers to only downscale non-displayplayers icons 2025-07-01 22:07:12 +03:00
Alug 962eb531ff clamp the sprite lightlevel stuff + ensure proper type cast
this is a mess
lets hope this doesent change how the game looks lel
2025-07-01 19:12:54 +02:00
Alug 07e1ca40a4 oop dont need those 2025-07-01 19:12:32 +02:00
sphere c479d9d706 Merge branch 'allowdesync' into 'next'
Add a console variable that will allow individual demos to desync....

See merge request STJr/SRB2!2361
2025-07-01 19:06:10 +02:00
Alug 338fbfbeaf whoops those are demo related lol 2025-07-01 19:06:07 +02:00
Alug 5ca12bb421 split replay stuff into g_demo 2025-07-01 18:48:46 +02:00
Alug 6c94e0c9bf conflict moment 2025-07-01 18:29:45 +02:00
Alug 83d0f6bb50 move kart hud stuff into k_hud
hope i got everything lol
2025-07-01 18:27:39 +02:00
Alug 7e06fc986f this is INT32 so cast to that lel 2025-07-01 15:26:21 +02:00
Alug 3f5328371a put interp distance stuff into a function
just some code dupe cleanup
also account for c++ so we can use the same macro lel
2025-07-01 15:26:18 +02:00
Alug 148fcc8dab friendship with constexpr started 2025-07-01 15:26:02 +02:00
Alug 72a67d306f slightly cleanup addline stuff
no clue why i just didnt do this before lel
2025-07-01 15:25:57 +02:00
Alug 0dcdcc3da1 fix hw_main compiler warning 2025-07-01 15:25:53 +02:00
Alug 729c60c9b0 thanks michaelsoft very cool 2025-07-01 15:25:26 +02:00
Alug 1b418caf6b ceepeepeefy hw_main, abuse templates for portal stuff
no idea if this is faster at all lmao
2025-07-01 15:25:23 +02:00
Alug d275db9bb4 turn TC_ stuff into enum 2025-07-01 15:25:14 +02:00
Alug 21cfd7c361 Merge pull request #186 from Indev450/softwarecrap
Give the software renderer some love!
2025-07-01 15:21:48 +02:00
indev 5a44afcd9f Disable multithreading in R_DrawMaskedList 2025-07-01 16:09:18 +03:00
Alug 3c282b5022 this can use min/max 2025-07-01 14:42:28 +02:00
Alug f4d40bd55f "-Wno-aggregate-return" for c++ 2025-07-01 14:38:42 +02:00
Alug 612431c1f1 dont define min and max with c++ 2025-07-01 14:22:49 +02:00
Alug 465fea8bb3 "restrict" macro for c++
since it does not have it, use __restrict instead
2025-06-30 12:18:21 +02:00
Alug 04385d9700 add "songcredits" to saturn hud menu
since we have a new style for this now, want to have it in the menu instead
2025-06-29 12:02:11 +02:00
Alug d47e20b54e those can be const 2025-06-29 11:44:29 +02:00
Alug 7ef2da5922 tiny cleanup hw_batching 2025-06-29 11:44:12 +02:00
Alug 5638709670 some cleanup k_kart
perhaps we could also move the saturn stuff into arrays, those massive walls of variables are kinda ugly lel
2025-06-29 11:44:04 +02:00
Alug 4e9f9b7e0e Revert "add "for_each" to srb2 threadpool"
This reverts commit 604bc40021.
2025-06-27 16:38:19 +02:00
Alug 9650139470 Revert "allocate tiltlighting buffer in R_AllocViewMemory again"
This reverts commit b541de4f8c.
2025-06-27 16:38:16 +02:00
Alug 054a40a4b2 Revert "omit realloc and use unique_ptr for our tiltlighting buffer"
This reverts commit e351c1e62a.
2025-06-27 16:38:13 +02:00
indev db67176eca Revert "Replace '\' symbols with '\\' in comptime.sh"
This reverts commit 0b7a4ff4e0.
2025-06-26 22:50:59 +03:00
indev 0b7a4ff4e0 Replace '\' symbols with '\\' in comptime.sh 2025-06-26 21:18:22 +03:00
Alug 972ee5cf76 remove erronous BACKSLASH
was from when this was a macro lel
edit: screw you comptime
2025-06-26 20:17:33 +02:00
Gustaf Alhäll aef02cb347 Fix one-pixel wide gaps in tall sprites 2025-06-26 20:09:16 +02:00
Alug 36e485b2a3 move gl portalcullsector check back to the right place lel
oopsie
2025-06-26 15:13:54 +02:00
Alug d23c51e707 mark node as restrict again pointonside 2025-06-26 13:22:17 +02:00
Alug 0db437aadd do some more tiny optimizations
-those can all be declared with restrict
-our ternary clamp macro is slightly faster than std::clamp
2025-06-26 13:22:15 +02:00
Alug e351c1e62a omit realloc and use unique_ptr for our tiltlighting buffer
this makes asan shut up, since those effectively clean up after themselves
2025-06-26 13:22:11 +02:00
Alug b541de4f8c allocate tiltlighting buffer in R_AllocViewMemory again
just removes the ugly stuff in the span drawers
needs to be tested a little, but should be fine
2025-06-26 13:21:56 +02:00
Alug 604bc40021 add "for_each" to srb2 threadpool
this exectures something for EACH thread not some abritatrily choosen ones
2025-06-26 13:21:52 +02:00
Alug be8ddebd80 forgor about the new signal handler oop 2025-06-26 00:39:01 +02:00
Alug 02feb3ad5c Merge pull request #177 from Indev450/votebgstuff
Cleanup Votescreen stuff
2025-06-25 13:24:48 +02:00
Alug 49f13d2a59 Merge pull request #176 from Indev450/luamusicdef
Expose musicdefs to lua
2025-06-25 13:24:37 +02:00
Alug b2a36850cb Merge branch 'Saturn-Next' into softwarecrap 2025-06-25 12:47:43 +02:00
Alug 8353c1efdd add toggle for software cyan cut stuff
"softwarecyancut"
this is disabled by default, since some vanilla maps were designed around this
also costs a bit of performance (splat span drawers are slooooow)
2025-06-25 12:47:25 +02:00
Alug d19a2e0912 attempt to make fofs in software always cut cyan pixels
if they do contain cyan pixels lel
kinda meh, and needs a toggle
2025-06-25 12:45:14 +02:00
Alug 07432c0381 turn angle stuff into a switch in R_SetupSkyScale 2025-06-25 12:29:58 +02:00
Alug 4fb3b63152 optimize R_StoreWallRange with cut down version of rendersegloop when a seg is untextured
from srb2, its just a cut down rendersegloop with alot less things to check and such
2025-06-23 19:38:57 +02:00
Alug 85b736620a Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Next 2025-06-23 19:26:07 +02:00
Alug 9f770993d4 proper init enterprecise 2025-06-23 19:25:50 +02:00
Alug 4bd02ad325 check if player is local here 2025-06-23 19:25:46 +02:00
Alug 6e7b45d15c simplify R_SetupAimingFrame 2025-06-23 19:25:34 +02:00
Alug 99ebca51d5 use const_cast for colfunccopy
idk its from rr idk why it was like this
2025-06-23 19:23:56 +02:00
Alug 24eb888af3 make skytextures support texture offsets in software 2025-06-23 19:20:20 +02:00
Alug 09ce33abb9 just always clamp the non psprite texture column
this may underflow, which the check in the lööp body does not account for
2025-06-23 19:18:11 +02:00
indev 044ff158a1 SF_HIRES is already handled via spritexscale and spriteyscale 2025-06-23 18:37:57 +03:00
Alug 36c68d055c minor optimizations r_things 2025-06-21 18:07:44 +02:00
Alug ddf7d7cdcb use templates for R_ClipWallSegment
actual slight speedup
2025-06-21 18:07:41 +02:00
Alug 38950d580f fix a clang warning 2025-06-20 09:54:20 +02:00
Alug 707701f317 do palette stuff in st_ticker
cleanup and dont call it in normal ogl at all unless palette render with flashpals is enabled
inspired by Nyan-Doom/Woof
2025-06-20 09:54:17 +02:00
Alug 09507d635b remove now unecessary type cast 2025-06-19 17:41:26 +02:00
Alug ab85d6a693 shut the up -Waggregate-return 2025-06-19 17:41:23 +02:00
Alug 5011b17f88 attempt at optimizing drawcolumn drawers a bit more
inspired by dsda/prboom
seems to be super slighty faster
2025-06-19 15:57:21 +02:00
Alug 83bb908ff0 Merge remote-tracking branch 'origin/Saturn-Next' into unnestmothink 2025-06-19 15:56:32 +02:00
Alug 515c18c855 Merge remote-tracking branch 'origin/Saturn-Next' into fixgnu23 2025-06-19 15:55:58 +02:00
Alug 7bef45f701 Merge remote-tracking branch 'origin/Saturn-Next' into softwarecrap 2025-06-19 15:50:55 +02:00
indev 40cbce8f9f Merge pull request #178 from Indev450/newmakefiles
Port over SRB2´s makefile rewrites + Port Dedicated server build
2025-06-19 16:47:34 +03:00
Alug 70a70084c9 macrofy ogl function pointer setup
should make it a little less annoying to add new functions
2025-06-17 19:21:09 +02:00
indev b6da6359d3 If gamestate resend took too long, abort resynching 2025-06-16 21:43:54 +03:00
Alug 97075ca5c5 remove some code dupe
starting to like those lambda things
2025-06-13 16:08:06 +02:00
Alug e94737945a fix double sided skies per addline clipping code
fixes greencave skybox
hopefully this is it and doesent break anything else sigh
2025-06-13 08:11:45 +02:00
Alug 57f15e0213 R_GenerateBlendTables can be static 2025-06-13 03:23:31 +02:00
Alug 2eae9b197c port the span and column drawer templates + tilted translucent splat drawer
took the liberty to also carry over our optimizations, this is actually slightly faster than what we had before
2025-06-13 03:23:25 +02:00
Alug 68c7620349 Merge branch 'Saturn-Next' into softwarecrap 2025-06-13 00:53:30 +02:00
Alug 7a3faf34e7 move this into an if else
saves us a little work
2025-06-13 00:20:59 +02:00
Alug d401644447 tweak the sky checks even more
apparently koda has a skybox, and checking like this makes it not trigger, lets hope this has no bad side effects Zzz...
2025-06-13 00:20:48 +02:00
Alug dfc349b230 Merge branch 'newmakefiles' into softwarecrap 2025-06-12 23:33:49 +02:00
Alug be3e5a964d pass -flto to linkerflags too
lel forgor
somehow this still worked anyways
2025-06-12 23:33:41 +02:00
Alug 687d2bd894 Merge remote-tracking branch 'origin/Saturn' into Saturn-Next 2025-06-12 23:18:45 +02:00
Alug 78b642cf2d Merge pull request #183 from P-AS/mac-fixes
Fix build on macOS
2025-06-12 21:46:39 +01:00
Alug cb3b6ca34b Merge pull request #184 from chromaticpipe/levelinterpolatorjitter
Fix level interpolators jittering during objectplace
2025-06-12 20:46:31 +01:00
Alug ad15bf0ea3 readd some lost comments in r_bsp 2025-06-12 19:48:58 +02:00
Alug 56021ed999 dont compile with software multithread if NOTHREADS/HAVE_THREADS=0
might be useful for smth ig
2025-06-12 19:48:55 +02:00
chromaticpipe 3d22a5906f Fix level interpolators jittering during objectplac 2025-06-12 11:37:25 -05:00
Alug b6d771b48f unnest the skybox scale setup stuff 2025-06-12 17:10:26 +02:00
Alug ab30fb2e5e check if seg has any texture at all
seems to work even better and less "false positives"
also removing some redundant conditons
2025-06-12 17:10:22 +02:00
Alug 618d9e4cdf add lugent to credits 2025-06-11 20:55:26 +02:00
Alug bf78ad9c75 absolute insanity to hopefully fix all sky issues while keeping skyvisible 2025-06-11 20:28:16 +02:00
Alug 918a4e8cd9 add tilted fog span drawer
fixes the red fog blocks on mkrevamp
2025-06-11 17:10:47 +02:00
Alug e90c84c9ac we have a var for that lul 2025-06-11 16:32:36 +02:00
PAS a9209a4887 Include errno.h on macOS 2025-06-10 21:53:43 -04:00
Eidolon 0a3e7ba09f Include poll.h on UNIXCOMMON
Apple was not including poll.h despite needing it.
2025-06-10 21:49:00 -04:00
Alug eb132b08c0 make the check a little more robust + account for slopes a little 2025-06-11 00:31:01 +02:00
Alug 82407c3560 add missing plane bounds check to R_DrawSkyPlane 2025-06-11 00:30:59 +02:00
Alug f1a8210663 another attempt at actually fixing sky issues
absolutely fucking horrible
but this also does account for single sided lines aswell and gets rid of artifacts and perf
2025-06-10 18:33:20 +02:00
Alug 1d722be4bc few smoler optimizations r_segs 2025-06-10 01:21:36 +02:00
Alug 62a660bfe1 maybe this makes perf better somehow 2025-06-10 01:21:34 +02:00
Alug 2984795175 kill the splitscreen lööps from R_RenderPlayerView
this already gets called from within the one that assigns viewssnum which we can just use here
2025-06-09 23:45:02 +02:00
Alug da706d89a5 absolutely disgusting hack for sky issues
instead of homremoval, we draw the fucking skyplane before everything lmao
there probably is a right way to fix this, but im too dumb for that
needs some performance testing, but since i could move the semaphores back, its even better in some instances
2025-06-09 22:59:52 +02:00
Alug a8005d5cec fix portals dying
due to nummasks being too small and causing an overflow
ty hannu!
2025-06-09 20:57:19 +02:00
Alug 793ccff6e6 fix the goddamn portal use after free
https://git.do.srb2.org/STJr/SRB2/-/commit/f536ab34674fb8d3ee262a0009753f552074305c
2025-06-09 19:02:58 +02:00
Alug e7db9bf1fd fix bad copy paste lul 2025-06-09 17:09:57 +02:00
Alug 88d62c93a1 fix SHITPLANESPARENCY and QUINCUNX
maybe
2025-06-09 17:06:31 +02:00
Alug d73532d019 fix some fofs not rendering in software
i did an oopsie in 7.2 X)
2025-06-09 17:06:23 +02:00
Alug 84d3d23936 declare fracstep as const 2025-06-09 17:06:20 +02:00
Alug 717947843b memset those 2025-06-09 17:06:16 +02:00
Alug 968584a316 make skyportals account for how kart sets the viewheight
no we still dont use it
2025-06-09 17:06:14 +02:00
Alug ccd67f621a dont set any texture mapped drawer when fog 2025-06-09 17:06:10 +02:00
Alug 80b301dbbe unnest the overflow_test stuff
its also a ternary now lul
2025-06-09 17:06:07 +02:00
Alug 001e61d39d Merge branch 'Saturn-Next' into softwarecrap 2025-06-09 17:06:02 +02:00
Alug 19c98a436a fix some fofs not rendering in software
i did an oopsie in 7.2 X)
2025-06-09 17:05:42 +02:00
Alug 8dd6d7cfdd fix the fov adjust check
lmao oops
2025-06-09 16:59:00 +02:00
Alug 7456b6e02c Revert "bring back old clipwallsegment stuff"
This reverts commit 6af77afc44.
2025-06-09 04:27:58 +02:00
Alug 5e8096f74c move hom removal to D_Renderview
removes the hwr code dupe and moves this out of the splitscreen loop
2025-06-09 00:21:41 +02:00
Alug 6af77afc44 bring back old clipwallsegment stuff
i just didnt like the flow of the new ones
2025-06-08 21:38:57 +02:00
Alug 42eeb7bdf5 fix the massive slowdown on ante
due to really bad loop layout
std::fill is only cause it looks fancy :3
2025-06-08 21:38:54 +02:00
Alug 6f4b1e5125 fix portals on slopes
idk this is quite the hack, but it works
this adjustment somehow got omitted from srb2 during the portal refactor
2025-06-08 20:03:09 +02:00
Alug 22e65cdda8 readd portalcullsector
+ sprite clipping improvements with portals
2025-06-08 20:03:06 +02:00
Alug 9d342d0f3d fix lightlist memory leak
not sure if we need to copy over the old shit, but this seems to work aswell
2025-06-08 17:24:18 +02:00
Alug 9583bed718 fix da rippled wöter
i hate fixed point maths lmao
2025-06-08 00:43:15 +02:00
Alug b69ce75712 do NOT use Z_ functions in threaded stuff
shit dies
2025-06-08 00:25:03 +02:00
Alug a1cd19b023 make the fov dependant init stuff bit more safe and stuff 2025-06-07 23:54:12 +02:00
Alug 6e50710b25 fix column data colormap shit in R_RenderThickSideRange
too lazy to explain so https://git.do.srb2.org/KartKrew/RingRacers/-/commit/1ccd41c3dbb3132ce7467edf0c12c9d420b189f9
2025-06-07 23:31:51 +02:00
indev 989a971d27 Fix 'C++11 requires a space between literal and string macro' warning 2025-06-07 23:18:55 +03:00
indev 24ee56ce7a ceepeepee 17 :3 2025-06-07 23:15:55 +03:00
Alug 52f99dd9c1 fix span corruption due to wrong types being used
i did not realise srb2 changed this at some point to use fixed_t
2025-06-07 20:05:51 +02:00
Alug 6374fda570 convert i_system to cpp add missing exit for threading errors 2025-06-07 20:05:48 +02:00
Alug cdd2d6323e dont think we need this twice lel 2025-06-07 20:05:03 +02:00
Alug c508a7ea78 smol makefile stuff 2025-06-07 20:05:01 +02:00
Alug 1380a394c7 remove duped declaration 2025-06-07 20:04:58 +02:00
Alug 2c937099d4 this does nothing lel 2025-06-07 20:04:55 +02:00
Alug 0a936b3bba fix le sourcefile 2025-06-07 20:04:52 +02:00
Alug 0a31e0a65e use realloc for batching stuff
seems to strangely speed things up even
didnt think those happen often?
2025-06-07 11:55:52 +02:00
Alug 8627a18452 Merge pull request #182 from chromaticpipe/fixedhelp
Fixed help command
2025-06-07 10:54:36 +01:00
Alug be528adea5 thanks michaelsoft! 2025-06-07 10:21:25 +01:00
James R. 5eb4ed8391 R_FindPlane: fix offsets rotation overflow for non-sloped planes 2025-06-07 11:43:13 +02:00
James R 9a00d30c0c Do not factor height into sprite thickseg sorting 2025-06-07 11:43:10 +02:00
James R 71237c5e11 Check that top of sprite is above plane or bottom is below
This fixes slightly raised fofs drawing on top of sprites that should be in
front of them. Previously would check that the bottom of the object was above
the plane. Now also uses sprite offsets like the fof seg sorting does.
2025-06-07 11:43:07 +02:00
Alug 9c6e32a1ab HACK: dont pass wflags to c++
silences some annoying compiler complaints lel
2025-06-07 11:43:04 +02:00
Alug 1bc18801c8 cleanup the software drawers even more + unroll them
looks pretty clean now, not sure if i want to port the templates, this is good enough for now
2025-06-07 11:43:01 +02:00
Alug 221f2a956e tiny optimizations 2025-06-07 11:42:58 +02:00
Alug b450abdf4d simplify R_ExpandPlane 2025-06-07 11:42:55 +02:00
Alug d36eed3c09 convert r_segs to ceepeepee + overflow fix from RR R_DrawRepeatMaskedColumn
+ alot of cleanup
should more or less function the same, just alot less messy
2025-06-07 11:42:52 +02:00
Alug 43ee791d4a fix slopes and slope flat alignment
software slopes finally are sane........
fixes certain maps like stardust speedway looking like complete butt
need to test ogl, not sure if theres any real change there
2025-06-07 11:42:48 +02:00
Alug c921945922 cleanup software drawer handling stuff
mostly ported from rr
is alot more readable and less confusing
2025-06-07 11:42:45 +02:00
Alug 5f8c77e752 test: allow multithreading for masked planes
quite a neat speedup on some maps
needs testing
2025-06-07 01:20:52 +02:00
Alug 064db977aa HACK: move semaphores into the drawplane loop, to fix a few visual glitches
a bit of slowdown, but i have no clue what exactly causes shit, so this is the best solution for now i guess
2025-06-07 01:20:48 +02:00
Alug 5868cd9777 make drawcolum lightlists use realloc again lel
otherwise theres a crapton of overlapping memory lel
2025-06-07 01:20:44 +02:00
Alug b0ddde996a forgor this from removing screen size static array stuff lel 2025-06-07 01:20:41 +02:00
Alug e03c3766f0 forgor to free the mask heads lel 2025-06-07 01:20:37 +02:00
Alug 953c0d7451 convert r_things to ceepeepee 2025-06-07 01:20:34 +02:00
Alug 97b303c362 split skin stuff from r_things into r_skins
what a mess
2025-06-07 01:20:31 +02:00
Alug 2ffe736a20 smol cleanup 2025-06-07 01:20:28 +02:00
Alug 21f2032f34 save smol amount of fixed to double conversions in R_StoreWallRange
also adds those as actual functions in case we wanna use it for smth else
2025-06-06 17:37:55 +02:00
Alug 2f66207205 make this less ugly 2025-06-06 16:55:38 +02:00
Alug 5a14b09c1f cache ds->transmap for translucent span drawers
super slight speedup
2025-06-06 16:35:26 +02:00
Alug 7e9da92dbe dont redundantly clamp the sprites texturecolumn
we already take care of this in the lööp header
2025-06-06 16:35:23 +02:00
Alug a27550b95b fix R_ProjectSprite clipping checks overflowing
was causing sprites to disappear in some angles
2025-06-06 14:43:03 +02:00
Alug 556883487d optimize software hud drawing
from srb2classic adjusted to our drawers
2025-06-06 01:17:36 +02:00
Alug 96f8533479 dont check for wraps on 0 height textures in column drawers
slight speedup thx srb2classic!
2025-06-06 01:04:20 +02:00
Alug f3cca27448 cache vid.width in the column drawers
shit was really slow lel
2025-06-06 00:55:23 +02:00
indev 252563725d Make tiltlighting buffer thread_local 2025-06-06 01:42:15 +03:00
indev 9a934a55e2 Revert "ok fuck you tiltlighting static buffer it is"
This reverts commit 2a023246be.
2025-06-06 01:39:51 +03:00
Alug f07d5d381e fix the goddamn boolean 2025-06-06 00:19:23 +02:00
Alug 3faab66ef4 add toggle for software multithread 2025-06-06 00:04:42 +02:00
Alug 2a023246be ok fuck you tiltlighting static buffer it is 2025-06-06 00:04:39 +02:00
Alug 006e7fe8f8 move this 2025-06-06 00:04:36 +02:00
Alug 1a7ff21a04 fix some warnings and plane ripple 2025-06-06 00:04:33 +02:00
Alug 98cb0fdcb2 fix slopes and other shit 2025-06-06 00:04:30 +02:00
indev 1fd7e9cdac Add -lpthread into libs and cxxopts into c++ compilation flags 2025-06-06 00:04:27 +02:00
indev 0a2eac4d3a Add ifdef __cplusplus into hardware/hw_main.h 2025-06-06 00:04:24 +02:00
Alug 9ac6fffd4d busted ass multithreading for le soft 2025-06-06 00:04:19 +02:00
Alug da20f4a087 Merge branch 'newmakefiles' into softwarecrap 2025-06-06 00:04:14 +02:00
Alug dbf822ced9 dont draw precip in the skybox lel 2025-06-05 15:05:29 +02:00
Alug 095842f4aa smol cleanup the splat drawers
didnt knew we actually use em so kinda didnt care lel
2025-06-05 15:00:35 +02:00
Alug 8c290d7597 kill static buffer for tiltlighting, again
kinda ugly but gets the job done lel
2025-06-05 14:48:50 +02:00
Alug 8a6f4db9af fix precip not drawing 2025-06-05 14:48:47 +02:00
Alug 99186a86db port masked drawlists for software + portal visplanes
Note: need to check if we gotta readd portalcullsector for ogl portals, technically this is alot faster and fixes the occasional portal disappearing, but may introduce occasional visual bugs
2025-06-05 14:48:44 +02:00
Alug c67bf97f7b unglobalize drawspandata 2025-06-05 14:48:41 +02:00
Alug 33a1540fcd unglobalise drawcolumndata
from RRs multithread
will follow up with spandata
2025-06-05 14:48:38 +02:00
Alug 529b0d643a delet dc_hires 2025-06-05 01:41:55 +02:00
Alug 4576efbe5c remove FIXMEs from draw column stuff 2025-06-05 01:27:34 +02:00
Alug 185375ece1 use ternaries for column clamp
it is slightly faster for me lel
also lets us get rid of an extra variable
npow2min is also declared static as its always -1
2025-06-05 01:25:33 +02:00
Alug d11521954e move those around + remove NOWATER ifdef 2025-06-05 01:01:31 +02:00
Alug 41c4300ec2 split r_draw8 into r_drawcolumn and r_drawspan
+ remove the _8 from the "namespace" since we dont have highcolor stuff
2025-06-05 00:52:53 +02:00
Alug 51d5023f29 those can be just "while" lööps 2025-06-05 00:44:59 +02:00
Alug d2878f8834 set MAXVIDWIDTH and MAXVIDHEIGHT to 8192
should accomidate absolutely everything
2025-06-04 23:03:17 +02:00
Alug 7808159d23 get rid of static screen size buffers, alloc em to current screen size instead
mostly taken from srb2s any-resolution branch
2025-06-04 23:03:14 +02:00
Alug e759431948 clamp shit so vhs effect doesent do oob writes on some resolutions
shoddy way but fuckit
2025-06-04 20:46:12 +02:00
Alug 268ccce955 move ripple blit stuff into own function 2025-06-04 20:00:06 +02:00
Alug f2d3432bf5 make software ripple splitscreen checks less awful to look at 2025-06-04 18:48:33 +02:00
Alug 2da89f1946 remove ylookup, columnofs and topleft lookups
move screens array to "vid" struct
remove a bunch of unused stuff

this speeds up 4 player splitscreen ever so slighty
mostly just alot cleaner than the mess it was before
2025-06-04 15:55:46 +02:00
Alug 6153733df4 unroll span drawer loops 2025-06-04 15:55:43 +02:00
Alug d280b39f9f use floats flor slope drawing
idea from srb2classic
2025-06-04 15:55:40 +02:00
indev 236e7b8d45 Fix game rendering only first splitscreen player in opengl 2025-06-04 03:57:54 +03:00
chromaticpipe dcccf672c9 Truncate trailing zeroes in float CVars 2025-06-03 13:18:02 -05:00
Alug 03f81bed16 dont initialise those twice lol 2025-06-03 20:00:52 +02:00
chromaticpipe fc51c1ba88 Fix help command for CV_FLOAT CVars 2025-06-03 11:38:46 -05:00
Alug 83d20a72ab delet this since its mostly wrong anyways 2025-06-02 20:05:09 +02:00
indev d50c1ab6d7 dedi's do run got_mapcmd :p 2025-06-02 14:21:34 +03:00
Alug 984c2ff8d6 Merge pull request #175 from chromaticpipe/serverinfo
Display server information before connecting to it
2025-06-01 21:03:19 +01:00
chromaticpipe 74646acdca Options. 2025-05-31 16:27:34 -05:00
indev 45ffe87ba6 Add new music credit draw style, 'songcredits Box' 2025-05-31 22:27:17 +03:00
Alug 37eb8cfa57 shut up curl im already long 2025-05-31 21:01:57 +02:00
Alug a0f903f162 i like switches mhhhm 2025-05-31 21:01:53 +02:00
indev 8fb1775606 Forgot MusicCredit hook 2025-05-31 19:15:04 +03:00
indev fab7635373 Add musicdef lua stuff into LUASTUFF.md 2025-05-31 19:10:58 +03:00
indev b29ca13916 Add musicdefs table into lua 2025-05-31 18:54:07 +03:00
Alug f1f0782256 fix memoryleak in pk3 verify functions 2025-05-31 17:30:19 +02:00
Alug 0e9a825f63 some crap from ceepeepeecheck 2025-05-31 17:27:07 +02:00
indev 68ae880979 Change the way how musicdefs are stored (preparing for exposing them to lua) 2025-05-31 18:04:08 +03:00
Alug 5c53a90eea hack: reset musiccredits when changing gamestate
otherwise they may persist if theyve been currently displayed
2025-05-31 16:20:58 +02:00
Alug 55c6ba6d12 fix awayview join crash
player->awayviewmobj may not exist yet in some cases
2025-05-31 15:57:20 +02:00
chromaticpipe dd499a410f Very bad gamepad support 2025-05-30 13:30:47 -05:00
chromaticpipe c04ba992a7 Forgort something 2025-05-30 13:26:27 -05:00
chromaticpipe 27c053cd48 Add Server info screen, ported from SRB2Classic 2025-05-30 13:23:36 -05:00
Alug e47e58a982 fixup ceepeepee support 2025-05-29 21:40:15 +02:00
Alug c05068f22f why are those still here lel 2025-05-29 19:35:15 +02:00
Alug f5cb473f3d thanks windoze very cool part 2 2025-05-29 19:33:46 +02:00
Alug c5b72f24b5 thanks windoze very cool 2025-05-29 19:33:37 +02:00
Alug 58de672915 add comment 2025-05-29 15:31:32 +02:00
Alug 16b5037486 dont use stdbool´s bool type
this badly breaks everything
apparently the code assumes boolean to be an interger type or some shit
2025-05-29 12:41:45 +01:00
Alug 7c34733eea add nofork parameter to dedibuild 2025-05-28 23:58:10 +02:00
indev 359befd857 Add MusicCredit lua hook 2025-05-28 23:27:30 +03:00
indev 279dfcafc4 Expose S_FindMusicCredit and musiccredit_t to lua 2025-05-28 22:10:25 +03:00
Alug bcec8b98f7 make the game c23 compatible properly
+ some cleanup and removal of some redundant checks
2025-05-28 18:25:07 +02:00
Alug 393ade780c add missing "time" include from dedi i_system 2025-05-28 14:43:27 +01:00
indev 8b2e6ea17b libpeethread 2025-05-28 16:54:37 +03:00
Alug 8c31682723 smol adjustments for main 2025-05-28 15:43:21 +02:00
Alug 7c87b5259a port SRB2s new makefiles + add dedicated build (squashed)
also fix some of the new warnings
to make a dedicated build just pass DEDICATED=1 to the compiler
TODO:make this compatible with bluajit
2025-05-28 15:38:25 +02:00
Alug fa3dcdb24f massive cleanup p_mobj 2025-05-23 16:31:17 +02:00
Alug 311258dda0 more unnesting for mobj think stuff 2025-05-23 16:24:50 +02:00
Alug a0f8816de7 readd itembox fuse think that was lost somehow lmao 2025-05-23 16:22:03 +02:00
Alug c546b6225c move this since it does check for fuse 2025-05-23 16:21:48 +02:00
Alug f6c6621af8 unnest and cleanup P_MobjThinker
everything was moved into seperate functions lel
2025-05-23 16:21:27 +02:00
325 changed files with 31346 additions and 36783 deletions

No files matched your search

+8 -7
View File
@@ -13,16 +13,17 @@ Win32_LIB_ASM_Release
*.dgb
*.debug
*.debug.txt
/bin/VC10/
/objs/VC10/
*.user
*.db
*.opendb
/.vs
/debian
/assets/debian
compile.sh
*.gz
.vscode/
out
build
/make
/bin
/build
/build/*
/CMakeUserPresets.json
/out
/objs/VC10
*.kate-swp
+31
View File
@@ -161,6 +161,37 @@ Duration is in milliseconds and is optional to set, default value is 84ms.
Exactly same as P_CheckSight but uses cheaper algorithm, useful for things like nametags. Doesn't work exactly
like P_CheckSight so don't use it for anything gameplay-related.
## musicdef_t
Userdata structure representing a musicdef. Fields:
`musicdef.name` - song identifier ("kmap01" for example).
`musicdef.usage`, `musicdef.source` - fields from vanilla MUSICDEFS lump.
`musicdef.filename` - unused for now.
`musicdef.title`, `musicdef.alttitle`, `musicdef.authors` - fields from MUSCINFO lump.
`#musicdef` - returns integer id for musicdef (which can be used as index in `musicdefs`).
All fields are read-only.
## S_FindMusicCredit(name)
Returns musicdef corresponding to music with given identifier. For example, `S_FindMusicCredit("kmap01")` will return
musicdef for green hills music.
## musicdefs
Global table for all musicdefs, similar to mobjinfo, states, etc. Can take either integer indices,
from `0` to `#musicdefs-1`, or string indices (which is equal to calling `S_FindMusicCredit`).
## addHook("MusicCredit", function(musicdef))
Hook is called whenever `S_ShowMusicCredit` (either from game or mod) is called. Takes musicdef as only argument, returning true
will overwrite vanilla behavior (not show music credit), can be used to implement custom music credit pop-ups.
# Other changes
## P_PlayRinglossSound(source, damager)
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-1
View File
@@ -1 +0,0 @@
/lsdlsrb2
-3
View File
@@ -1,3 +0,0 @@
/lsdlsrb2
/pnd
/*.mo
-1
View File
@@ -1 +0,0 @@
/lsdlsrb2
-1
View File
@@ -1 +0,0 @@
/lsdl2srb2kart
-4
View File
@@ -1,4 +0,0 @@
*.exe
*.mo
r_opengl.dll
*.bat
-4
View File
@@ -1,4 +0,0 @@
*.exe
*.mo
r_opengl.dll
*.bat
-3
View File
@@ -1,3 +0,0 @@
/srb2sdl.exe
/srb2win.exe
/r_opengl.dll
-4
View File
@@ -1,4 +0,0 @@
*.exe
*.mo
r_opengl.dll
*.bat
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-717
View File
@@ -1,717 +0,0 @@
#! /bin/sh
#
# Copyright (C) 2002-2010 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This file is meant for authors, maintainers, co-maintainers or installers
# of packages which are internationalized with the help of GNU gettext. For
# further information how to use it consult the GNU gettext manual.
progname=$0
package=gettext-tools
version=0.18.1
# Set variables
# - gettext_dir directory where the sources are stored.
prefix="/usr/local/i686-w64-mingw32/stow/gettext-0.18.1.1"
datarootdir="${prefix}/share"
gettext_dir="${datarootdir}/gettext"
# func_tmpdir
# creates a temporary directory.
# Sets variable
# - tmp pathname of freshly created temporary directory
func_tmpdir ()
{
# Use the environment variable TMPDIR, falling back to /tmp. This allows
# users to specify a different temporary directory, for example, if their
# /tmp is filled up or too small.
: ${TMPDIR=/tmp}
{
# Use the mktemp program if available. If not available, hide the error
# message.
tmp=`(umask 077 && mktemp -d "$TMPDIR/gtXXXXXX") 2>/dev/null` &&
test -n "$tmp" && test -d "$tmp"
} ||
{
# Use a simple mkdir command. It is guaranteed to fail if the directory
# already exists. $RANDOM is bash specific and expands to empty in shells
# other than bash, ksh and zsh. Its use does not increase security;
# rather, it minimizes the probability of failure in a very cluttered /tmp
# directory.
tmp=$TMPDIR/gt$$-$RANDOM
(umask 077 && mkdir "$tmp")
} ||
{
echo "$0: cannot create a temporary directory in $TMPDIR" >&2
{ (exit 1); exit 1; }
}
}
# Support for relocatability.
func_find_curr_installdir ()
{
# Determine curr_installdir, even taking into account symlinks.
curr_executable="$0"
case "$curr_executable" in
*/* | *\\*) ;;
*) # Need to look in the PATH.
if test "${PATH_SEPARATOR+set}" != set; then
func_tmpdir
{ echo "#! /bin/sh"; echo "exit 0"; } > "$tmp"/conf.sh
chmod +x "$tmp"/conf.sh
if (PATH="/nonexistent;$tmp"; conf.sh) >/dev/null 2>&1; then
PATH_SEPARATOR=';'
else
PATH_SEPARATOR=:
fi
rm -rf "$tmp"
fi
save_IFS="$IFS"; IFS="$PATH_SEPARATOR"
for dir in $PATH; do
IFS="$save_IFS"
test -z "$dir" && dir=.
for exec_ext in ''; do
if test -f "$dir/$curr_executable$exec_ext"; then
curr_executable="$dir/$curr_executable$exec_ext"
break 2
fi
done
done
IFS="$save_IFS"
;;
esac
# Make absolute.
case "$curr_executable" in
/* | ?:/* | ?:\\*) ;;
*) curr_executable=`pwd`/"$curr_executable" ;;
esac
# Resolve symlinks.
sed_dirname='s,/[^/]*$,,'
sed_linkdest='s,^.* -> \(.*\),\1,p'
while : ; do
lsline=`LC_ALL=C ls -l "$curr_executable"`
case "$lsline" in
*" -> "*)
linkdest=`echo "$lsline" | sed -n -e "$sed_linkdest"`
case "$linkdest" in
/* | ?:/* | ?:\\*) curr_executable="$linkdest" ;;
*) curr_executable=`echo "$curr_executable" | sed -e "$sed_dirname"`/"$linkdest" ;;
esac ;;
*) break ;;
esac
done
curr_installdir=`echo "$curr_executable" | sed -e 's,/[^/]*$,,'`
# Canonicalize.
curr_installdir=`cd "$curr_installdir" && pwd`
}
func_find_prefixes ()
{
# Compute the original/current installation prefixes by stripping the
# trailing directories off the original/current installation directories.
orig_installprefix="$orig_installdir"
curr_installprefix="$curr_installdir"
while true; do
orig_last=`echo "$orig_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
curr_last=`echo "$curr_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
if test -z "$orig_last" || test -z "$curr_last"; then
break
fi
if test "$orig_last" != "$curr_last"; then
break
fi
orig_installprefix=`echo "$orig_installprefix" | sed -e 's,/[^/]*$,,'`
curr_installprefix=`echo "$curr_installprefix" | sed -e 's,/[^/]*$,,'`
done
}
if test "no" = yes; then
exec_prefix="${prefix}"
bindir="${exec_prefix}/bin"
orig_installdir="$bindir" # see Makefile.am's *_SCRIPTS variables
func_find_curr_installdir # determine curr_installdir
func_find_prefixes
# Relocate the directory variables that we use.
gettext_dir=`echo "$gettext_dir/" | sed -e "s%^${orig_installprefix}/%${curr_installprefix}/%" | sed -e 's,/$,,'`
fi
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
{
echo "\
Usage: autopoint [OPTION]...
Copies standard gettext infrastructure files into a source package.
Options:
--help print this help and exit
--version print version information and exit
-f, --force force overwriting of files that already exist
-n, --dry-run print modifications but don't perform them"
# echo "\
# -V version copy the infrastructure of the specified gettext version
# (dangerous)"
echo "
Report bugs to <bug-gnu-gettext@gnu.org>."
}
# func_version
# outputs to stdout the --version message.
func_version ()
{
echo "$progname (GNU $package) $version"
echo "Uses a versions archive in git format."
echo "Copyright (C) 2002-2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law."
echo "Written by" "Bruno Haible"
}
# func_fatal_error message
# outputs to stderr a fatal error message, and terminates the program.
func_fatal_error ()
{
echo "autopoint: *** $1" 1>&2
echo "autopoint: *** Stop." 1>&2
exit 1
}
# Command-line option processing.
# Removes the OPTIONS from the arguments. Sets the variables:
# - force yes if --force was given, empty otherwise
# - ver gettext version if -V was given, empty otherwise
# - doit false if --dry-run was given, : otherwise
{
force=
ver=
doit=:
while test $# -gt 0; do
case "$1" in
-n | --dry-run | --dry-ru | --dry-r | --dry- | --dry | --dr | --d )
shift
doit=false ;;
-f | --force | --forc | --for | --fo | --f )
shift
force=yes ;;
--help | --hel | --he | --h )
func_usage; exit 0 ;;
# -V ) # Some people put a space between -V and the version number.
# shift
# if test $# = 0; then
# func_usage 1>&2
# exit 1
# fi
# ver=$1;
# shift ;;
# -V*) # Some people omit the space between -V and the version number.
# ver=`echo "X$1" | sed -e 's/^X-V//'`
# shift ;;
--version | --versio | --versi | --vers | --ver | --ve | --v )
func_version
exit 0 ;;
-- ) # Stop option prcessing
shift; break ;;
-* )
echo "autopoint: unknown option $1" 1>&2
echo "Try 'autopoint --help' for more information." 1>&2
exit 1 ;;
* )
break ;;
esac
done
}
# Command-line argument processing.
# Analyzes the remaining arguments.
{
if test $# -gt 0; then
func_usage 1>&2
exit 1
fi
}
srcdir=`pwd`
# The current directory is now $srcdir.
# Check integrity of package: A configure.in/ac must be present. Sets variable
# - configure_in name of configure.in/ac file.
if test -f configure.in; then
configure_in=configure.in
else
if test -f configure.ac; then
configure_in=configure.ac
else
# KDE specific convention: configure.in.in
if test -f configure.in.in; then
configure_in=configure.in.in
else
func_fatal_error "Missing configure.in or configure.ac, please cd to your package first."
fi
fi
fi
# Check whether the -V option and the version number in configure.in match.
# At least one of the two must be given. If both are given, they must agree.
sed_extract_AM_GNU_GETTEXT_VERSION_argument='s/^AM_GNU_GETTEXT_VERSION(\([^()]*\)).*$/\1/'
sed_remove_outer_brackets='s/^\[\(.*\)\]$/\1/'
xver=`cat "$configure_in" | grep '^AM_GNU_GETTEXT_VERSION(' | sed -n -e "$sed_extract_AM_GNU_GETTEXT_VERSION_argument"p | sed -e "$sed_remove_outer_brackets" | sed -e 1q`
if test -z "$xver" && test -f intl/VERSION; then
xver=`cat intl/VERSION | LC_ALL=C sed -n -e 's/^.*gettext-\([-+_.0-9A-Za-z]*\).*$/\1/p'`
fi
if test -n "$xver"; then
if test -n "$ver"; then
if test "X$ver" != "X$xver"; then
func_fatal_error "Version mismatch: specified -V $ver but the package uses gettext version $xver"
fi
else
ver="$xver"
fi
else
if test -z "$ver"; then
func_fatal_error "Missing version: please specify in $configure_in through a line 'AM_GNU_GETTEXT_VERSION(x.yy.zz)' the gettext version the package is using"
fi
fi
# Check whether the version number is supported.
case "$ver" in
0.10.35 | 0.10.36 | 0.10.37 | 0.10.38 | 0.10.39 | 0.10.40 | \
0.11 | 0.11.1 | 0.11.2 | 0.11.3 | 0.11.4 | 0.11.5 | \
0.12 | 0.12.1 | \
0.13 | 0.13.1 | \
0.14 | 0.14.1 | 0.14.2 | 0.14.3 | 0.14.4 | 0.14.5 | 0.14.6 | \
0.15 | \
0.16 | 0.16.1 | \
0.17 | \
0.18 | 0.18.1 )
;;
*)
func_fatal_error "The AM_GNU_GETTEXT_VERSION declaration in your $configure_in
file requires the infrastructure from gettext-$ver but this version
is older. Please upgrade to gettext-$ver or newer."
;;
esac
# Check in which directory config.rpath, mkinstalldirs etc. belong.
auxdir=`cat "$configure_in" | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
if test -n "$auxdir"; then
auxdir="$auxdir/"
fi
# Check in which directory the *.m4 macros belong.
m4dir=m4
if test -f Makefile.am; then
# A package using automake.
# Extract the macro directory name from Makefile.am.
aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ ]*=' Makefile.am | sed -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/'`
m4dir_is_next=
for arg in $aclocal_amflags; do
if test -n "$m4dir_is_next"; then
m4dir="$arg"
break
else
if test "X$arg" = "X-I"; then
m4dir_is_next=yes
else
m4dir_is_next=
fi
fi
done
fi
# Check whether to omit the intl/ directory.
omitintl=`cat "$configure_in" | grep '^AM_GNU_GETTEXT' | sed -n -e 's/^AM_GNU_GETTEXT(\([^(),]*\).*$/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
omitintl=`if test 'external' = "$omitintl"; then echo yes; fi`
# Check in which directory or directories the po/* infrastructure belongs.
sed_extract_config_files='s,#.*$,,
s,^dnl .*$,,
s, dnl .*$,,
/AC_CONFIG_FILES(/ {
ta
:a
s/)/)/
tb
s/\\$//
N
ba
:b
s,^.*AC_CONFIG_FILES([[ ]*\([^]"$`\\)]*\).*$,\1,p
}'
configfiles=`cat "$configure_in" | sed -n -e "$sed_extract_config_files"`
# PO directories have a Makefile.in generated from Makefile.in.in.
# Treat a directory as a PO directory if and only if it has a
# POTFILES.in file. This allows packages to have multiple PO
# directories under different names or in different locations.
sed_remove_Makefile_in='s,/Makefile\.in$,,'
podirs=`for f in $configfiles; do case "$f" in */Makefile.in) echo $f;; esac; done | sed -e "$sed_remove_Makefile_in"`
if test -z "$podirs"; then
# If we cannot get the list of PO directories from configure.ac, assume the
# common default.
podirs="po"
fi
# Set up a temporary checkout directory.
# Set variables
# - work_dir directory containing the temporary checkout
work_dir=tmpwrk$$
mkdir "$work_dir" || {
if test -d "$work_dir"; then
func_fatal_error "directory $work_dir already exists"
else
func_fatal_error "cannot create directory $work_dir"
fi
}
# We support three archive formats.
#
# Format | Size (KiB) for gettext-0.17 | Extra tools needed |
# -------+-----------------------------+--------------------+
# dir | 3000 | -- |
# cvs | 356 | cvs |
# git | 484 | git |
# -------+-----------------------------+--------------------+
case "git" in
dir)
# The archive of different versions is very large, but using it does not
# require special tools.
gzip -d -c < "$gettext_dir/archive.dir.tar.gz" | (cd "$work_dir" && tar xf - "gettext-$ver")
if test `find "$work_dir" -type f -print | wc -l` = 0; then
rm -rf "$work_dir"
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
fi
mv "$work_dir/gettext-$ver" "$work_dir/archive"
;;
cvs)
# We distributed the many different versions of the files in a CVS
# repository. This guaranteed a good compression rate:
#
# Including version size in KB of
# "du autopoint-files/archive"
# 0.10.35 240
# 0.10.36 428
# 0.10.37 436
# 0.10.38 488
# 0.10.39 500
# 0.10.40 528
# 0.11 720
# 0.11.1 740
# 0.11.2 748
# 0.11.3 804
# 0.11.4 864
# 0.11.5 880
# 0.12 1032
# 0.12.1 1032
# 0.13 1220
# 0.13.1 1236
# 0.14 1296
# 0.14.1 1300
# 0.14.2 1420
# 0.14.3 1428
# 0.14.4 1464
# 0.14.5 1508
# 0.14.6 1580
# 0.15 1760
# 0.16 1808
# 0.16.1 1812
# 0.17 2128
# 0.18 2656
#
# The requirement that the user must have the CVS program available is not
# a severe restrictions, because most of the people who use autopoint are
# users of CVS.
#
# But the CVS format is now deprecated, because "cvs init" does not work in
# all circumstances
# (see <http://lists.gnu.org/archive/html/bug-cvs/2010-05/msg00003.html>)
# and we are not allowed to distribute the cvs infrastructure files
# ourselves
# (see <http://lists.gnu.org/archive/html/bug-cvs/2010-06/msg00011.html>).
#
# Check availability of the CVS program.
(cvs -v) >/dev/null 2>/dev/null || func_fatal_error "cvs program not found"
# Set up a temporary CVS repository.
# We need the temporary CVS repository because any checkout needs write
# access to the CVSROOT/history file, so it cannot be under $gettext_dir.
# We need the temporary checkout directory because when --force was not
# given, we need to compare the existing files with the checked out ones.
# Set variables
# - cvs_dir directory containing the temporary repository
cvs_dir=tmpcvs$$
# Use an umask of 077, to avoid attacks that work by overwriting files in
# the "$CVSROOT"/CVSROOT directory.
(umask 077 && mkdir "$cvs_dir") || {
if test -d "$cvs_dir"; then
func_fatal_error "directory $cvs_dir already exists"
else
func_fatal_error "cannot create directory $cvs_dir"
fi
}
CVSROOT="$srcdir/$cvs_dir"
unset CVS_CLIENT_LOG
unset CVS_CLIENT_PORT
unset CVS_IGNORE_REMOTE_ROOT
unset CVS_LOCAL_BRANCH_NUM
unset CVS_NOBASES
unset CVS_PASSFILE
unset CVS_PASSWORD
unset CVS_PROXY_PORT
unset CVS_RCMD_PORT
unset CVS_RSH
unset CVS_SERVER
unset CVS_SERVER_SLEEP
CVS_SIGN_COMMITS=
export CVS_SIGN_COMMITS
unset CVS_SSH
unset CVS_VERIFY_CHECKOUTS
unset CVS_VERIFY_TEMPLATE
unset CVSIGNORE
unset CVSREAD
unset CVSREADONLYFS
unset CVSUMASK
unset CVSWRAPPERS
# Need to pass -d "$CVSROOT", because there may be a CVS directory in the
# current directory.
cvs -d "$CVSROOT" init
gzip -d -c < "$gettext_dir/archive.cvs.tar.gz" | (cd "$cvs_dir" && tar xf -)
cd "$work_dir"
cvsver=gettext-`echo "$ver" | sed -e 's/\./_/g'`
(cvs -d "$CVSROOT" checkout -r"$cvsver" archive > /dev/null) 2>&1 | grep -v '^cvs checkout: Updating'
find archive -name CVS -type d -print | xargs rm -rf
cd ..
rm -rf "$cvs_dir"
# Check that really all CVS directories are gone, otherwise we would overwrite
# the contents of the user's CVS directories.
if test `find $work_dir/archive -name CVS -type d -print | wc -l` != 0; then
rm -rf "$work_dir"
func_fatal_error "failed to remove all CVS subdirectories"
fi
if test `find $work_dir/archive -type f -print | wc -l` = 0; then
rm -rf "$work_dir"
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
fi
;;
git)
# Check availability of the git program.
(git --version) >/dev/null 2>/dev/null || func_fatal_error "git program not found"
mkdir "$work_dir/archive"
gzip -d -c < "$gettext_dir/archive.git.tar.gz" | (cd "$work_dir/archive" && tar xf -)
(cd "$work_dir/archive" && git checkout -q "gettext-$ver") || {
rm -rf "$work_dir"
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
}
(cd "$work_dir/archive" && rm -rf .git .gitignore)
;;
esac
# func_destfile file
# determines the destination file, relative to the package's top level
# directory, for a given file name, relative to archive.
# Sets variables
# - destfile relative destination file name, or
# empty if the file shall be omitted
# - sharedowner yes if the file is not only owned by GNU gettext but may
# be installed by automake or other tools, otherwise empty
# - allpodirs yes if the file is to be installed in every dir in $podirs
func_destfile ()
{
# There are five categories of files:
# ABOUT_NLS -> top level directory
# config.rpath mkinstalldirs -> $auxdir
# m4/* -> $m4dir/
# intl/* -> intl/
# po/* ->
sharedowner=
allpodirs=
case `echo "$1" | sed -e 's,[^/]*$,,'` in
"" )
case "$1" in
config.rpath ) destfile="$auxdir$1" ;;
mkinstalldirs ) destfile="$auxdir$1" sharedowner=yes ;;
* ) destfile="$1" ;;
esac
;;
m4/ ) destfile=`echo "$1" | sed -e "s,^m4/,$m4dir/,"` ;;
intl/ ) if test -n "$omitintl"; then destfile=""; else destfile="$1"; fi ;;
po/ ) destfile=`echo "$1" | sed -e "s,^po/,,"` allpodirs=yes ;;
* ) destfile="$1" ;;
esac
}
# func_compare existingfile gettextfile
# compares the existing file and the file from gettext, and decides whether the
# existing file should be overwritten with the file from gettext. Returns 0 if
# it should be overwritten, or 1 if it should be skipped.
sed_extract_serial='s/^#.* serial \([^ ]*\).*/\1/p
1q'
func_compare ()
{
if cmp -s "$1" "$2"; then
false
else
case "$2" in
*.m4)
# For interoperability with gnulib. gnulib often has newer versions of
# the *.m4 files than the latest gettext release. Don't overwrite a
# newer version from gnulib with an older version from the gettext
# release. The version can be retrieved from the first line, which
# looks like this: # file.m4 serial NN ...
existing_serial=`sed -n -e "$sed_extract_serial" < "$1"`
gettext_serial=`sed -n -e "$sed_extract_serial" < "$2"`
if test -n "$existing_serial" && test -n "$gettext_serial" \
&& test "$existing_serial" -ge "$gettext_serial" 2> /dev/null; then
false
else
true
fi
;;
*)
true
;;
esac
fi
}
# If some files have been locally modified and we have not been requested
# to overwrite them, then bail out. This is better than leaving a source
# package around where half of the files are locally modified and half are
# original - too great risk of version mismatch.
if test -z "$force"; then
mismatch=
func_tmpdir
mismatchfile="$tmp"/autopoint.diff
for file in `find "$work_dir/archive" -type f -print | sed -e "s,^$work_dir/archive/,," | LC_ALL=C sort`; do
func_destfile "$file"
if test -n "$destfile"; then
func_compare_to_destfile ()
{
finaldestfile="$1"
if test -f "$finaldestfile"; then
if func_compare "$finaldestfile" "$work_dir/archive/$file"; then
if test -n "$sharedowner"; then
echo "autopoint: warning: File $finaldestfile has been locally modified." 1>&2
else
echo "autopoint: File $finaldestfile has been locally modified." 1>&2
mismatch=yes
diff -c "$work_dir/archive/$file" "$finaldestfile" | sed -e "1s,$work_dir/archive/,," >> "$mismatchfile"
fi
fi
fi
}
if test -n "$allpodirs"; then
for dir in $podirs; do
func_compare_to_destfile "$dir/$destfile"
done
else
func_compare_to_destfile "$destfile"
fi
fi
done
if test -n "$mismatch"; then
rm -rf "$work_dir"
func_fatal_error "Some files have been locally modified. Not overwriting them because --force has not been specified. For your convenience, you find the local modifications in the file '$mismatchfile'."
fi
rm -rf "$tmp"
fi
# func_mkdir_for to
# ensures the directory that would the given file exists.
# 'to' is a relative pathname, relative to the current directory.
func_mkdir_for ()
{
base=`echo "$1" | sed -e 's,/[^/]*$,,'`
if test "X$base" != "X$1" && test -n "$base"; then
func_mkdir_for "$base"
# Recompute base. It was clobbered by the recursive call.
base=`echo "$1" | sed -e 's,/[^/]*$,,'`
test -d "$base" || { echo "Creating directory $base"; mkdir "$base"; }
fi
}
# func_copy from to
# copies a file.
# 'from' is a relative pathname, relative to the current directory.
# 'to' is a relative pathname, relative to the current directory.
func_copy ()
{
if $doit; then
func_mkdir_for "$2"
rm -f "$2"
echo "Copying file $2"
cp "$1" "$2"
else
echo "Copy file $2"
fi
}
# func_backup to
# makes a backup of a file that is about to be overwritten or replaced.
# 'to' is a relative pathname, relative to the current directory.
func_backup ()
{
if $doit; then
if test -f "$1"; then
rm -f "$1~"
cp -p "$1" "$1~"
fi
fi
}
# Now copy the files.
for file in `find "$work_dir/archive" -type f -print | sed -e "s,^$work_dir/archive/,," | LC_ALL=C sort`; do
func_destfile "$file"
if test -n "$destfile"; then
func_copy_to_destfile ()
{
finaldestfile="$1"
mustcopy=
if test -f "$finaldestfile"; then
if func_compare "$finaldestfile" "$work_dir/archive/$file"; then
if test -n "$force"; then
# Overwrite locally modified file.
mustcopy=yes
fi
# If --force is not specified, don't overwrite locally modified files
# for which GNU gettext is a shared owner.
fi
else
mustcopy=yes
fi
if test -n "$mustcopy"; then
func_backup "$finaldestfile"
func_copy "$work_dir/archive/$file" "$finaldestfile"
fi
}
if test -n "$allpodirs"; then
for dir in $podirs; do
func_copy_to_destfile "$dir/$destfile"
done
else
func_copy_to_destfile "$destfile"
fi
fi
done
# That's it.
rm -rf "$work_dir"
exit 0
Binary file not shown.
Binary file not shown.
-123
View File
@@ -1,123 +0,0 @@
#! /bin/sh
#
# Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Find a way to echo strings without interpreting backslash.
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
echo='echo'
else
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
echo='printf %s\n'
else
echo_func () {
cat <<EOT
$*
EOT
}
echo='echo_func'
fi
fi
# This script is primarily a shell function library. In order for
# ". gettext.sh" to find it, we install it in $PREFIX/bin (that is usually
# contained in $PATH), rather than in some other location such as
# $PREFIX/share/sh-scripts or $PREFIX/share/gettext. In order to not violate
# the Filesystem Hierarchy Standard when doing so, this script is executable.
# Therefore it needs to support the standard --help and --version.
if test -z "$ZSH_VERSION"; then
# zsh is not POSIX compliant: By default, while ". gettext.sh" is executed,
# it sets $0 to "gettext.sh", defeating the purpose of this test. But
# fortunately we know that when running under zsh, this script is always
# being sourced, not executed, because hardly anyone is crazy enough to
# install zsh as /bin/sh.
case "$0" in
gettext.sh | */gettext.sh | *\\gettext.sh)
progname=$0
package=gettext-runtime
version=0.18.1
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
{
echo "GNU gettext shell script function library version $version"
echo "Usage: . gettext.sh"
}
# func_version
# outputs to stdout the --version message.
func_version ()
{
echo "$progname (GNU $package) $version"
echo "Copyright (C) 2003-2007 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law."
echo "Written by" "Bruno Haible"
}
if test $# = 1; then
case "$1" in
--help | --hel | --he | --h )
func_usage; exit 0 ;;
--version | --versio | --versi | --vers | --ver | --ve | --v )
func_version; exit 0 ;;
esac
fi
func_usage 1>&2
exit 1
;;
esac
fi
# eval_gettext MSGID
# looks up the translation of MSGID and substitutes shell variables in the
# result.
eval_gettext () {
gettext "$1" | (export PATH `envsubst --variables "$1"`; envsubst "$1")
}
# eval_ngettext MSGID MSGID-PLURAL COUNT
# looks up the translation of MSGID / MSGID-PLURAL for COUNT and substitutes
# shell variables in the result.
eval_ngettext () {
ngettext "$1" "$2" "$3" | (export PATH `envsubst --variables "$1 $2"`; envsubst "$1 $2")
}
# Note: This use of envsubst is much safer than using the shell built-in 'eval'
# would be.
# 1) The security problem with Chinese translations that happen to use a
# character such as \xe0\x60 is avoided.
# 2) The security problem with malevolent translators who put in command lists
# like "$(...)" or "`...`" is avoided.
# 3) The translations can only refer to shell variables that are already
# mentioned in MSGID or MSGID-PLURAL.
#
# Note: "export PATH" above is a dummy; this is for the case when
# `envsubst --variables ...` returns nothing.
#
# Note: In eval_ngettext above, "$1 $2" means a string whose variables set is
# the union of the variables set of "$1" and "$2".
#
# Note: The minimal use of backquote above ensures that trailing newlines are
# not dropped, not from the gettext invocation and not from the value of any
# shell variable.
#
# Note: Field splitting on the `envsubst --variables ...` result is desired,
# since envsubst outputs the variables, separated by newlines. Pathname
# wildcard expansion or tilde expansion has no effect here, since the words
# output by "envsubst --variables ..." consist solely of alphanumeric
# characters and underscore.
File diff suppressed because it is too large. Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-717
View File
@@ -1,717 +0,0 @@
#! /bin/sh
#
# Copyright (C) 2002-2010 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This file is meant for authors, maintainers, co-maintainers or installers
# of packages which are internationalized with the help of GNU gettext. For
# further information how to use it consult the GNU gettext manual.
progname=$0
package=gettext-tools
version=0.18.1
# Set variables
# - gettext_dir directory where the sources are stored.
prefix="/usr/local/x86_64-w64-mingw32/stow/gettext-0.18.1.1"
datarootdir="${prefix}/share"
gettext_dir="${datarootdir}/gettext"
# func_tmpdir
# creates a temporary directory.
# Sets variable
# - tmp pathname of freshly created temporary directory
func_tmpdir ()
{
# Use the environment variable TMPDIR, falling back to /tmp. This allows
# users to specify a different temporary directory, for example, if their
# /tmp is filled up or too small.
: ${TMPDIR=/tmp}
{
# Use the mktemp program if available. If not available, hide the error
# message.
tmp=`(umask 077 && mktemp -d "$TMPDIR/gtXXXXXX") 2>/dev/null` &&
test -n "$tmp" && test -d "$tmp"
} ||
{
# Use a simple mkdir command. It is guaranteed to fail if the directory
# already exists. $RANDOM is bash specific and expands to empty in shells
# other than bash, ksh and zsh. Its use does not increase security;
# rather, it minimizes the probability of failure in a very cluttered /tmp
# directory.
tmp=$TMPDIR/gt$$-$RANDOM
(umask 077 && mkdir "$tmp")
} ||
{
echo "$0: cannot create a temporary directory in $TMPDIR" >&2
{ (exit 1); exit 1; }
}
}
# Support for relocatability.
func_find_curr_installdir ()
{
# Determine curr_installdir, even taking into account symlinks.
curr_executable="$0"
case "$curr_executable" in
*/* | *\\*) ;;
*) # Need to look in the PATH.
if test "${PATH_SEPARATOR+set}" != set; then
func_tmpdir
{ echo "#! /bin/sh"; echo "exit 0"; } > "$tmp"/conf.sh
chmod +x "$tmp"/conf.sh
if (PATH="/nonexistent;$tmp"; conf.sh) >/dev/null 2>&1; then
PATH_SEPARATOR=';'
else
PATH_SEPARATOR=:
fi
rm -rf "$tmp"
fi
save_IFS="$IFS"; IFS="$PATH_SEPARATOR"
for dir in $PATH; do
IFS="$save_IFS"
test -z "$dir" && dir=.
for exec_ext in ''; do
if test -f "$dir/$curr_executable$exec_ext"; then
curr_executable="$dir/$curr_executable$exec_ext"
break 2
fi
done
done
IFS="$save_IFS"
;;
esac
# Make absolute.
case "$curr_executable" in
/* | ?:/* | ?:\\*) ;;
*) curr_executable=`pwd`/"$curr_executable" ;;
esac
# Resolve symlinks.
sed_dirname='s,/[^/]*$,,'
sed_linkdest='s,^.* -> \(.*\),\1,p'
while : ; do
lsline=`LC_ALL=C ls -l "$curr_executable"`
case "$lsline" in
*" -> "*)
linkdest=`echo "$lsline" | sed -n -e "$sed_linkdest"`
case "$linkdest" in
/* | ?:/* | ?:\\*) curr_executable="$linkdest" ;;
*) curr_executable=`echo "$curr_executable" | sed -e "$sed_dirname"`/"$linkdest" ;;
esac ;;
*) break ;;
esac
done
curr_installdir=`echo "$curr_executable" | sed -e 's,/[^/]*$,,'`
# Canonicalize.
curr_installdir=`cd "$curr_installdir" && pwd`
}
func_find_prefixes ()
{
# Compute the original/current installation prefixes by stripping the
# trailing directories off the original/current installation directories.
orig_installprefix="$orig_installdir"
curr_installprefix="$curr_installdir"
while true; do
orig_last=`echo "$orig_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
curr_last=`echo "$curr_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
if test -z "$orig_last" || test -z "$curr_last"; then
break
fi
if test "$orig_last" != "$curr_last"; then
break
fi
orig_installprefix=`echo "$orig_installprefix" | sed -e 's,/[^/]*$,,'`
curr_installprefix=`echo "$curr_installprefix" | sed -e 's,/[^/]*$,,'`
done
}
if test "no" = yes; then
exec_prefix="${prefix}"
bindir="${exec_prefix}/bin"
orig_installdir="$bindir" # see Makefile.am's *_SCRIPTS variables
func_find_curr_installdir # determine curr_installdir
func_find_prefixes
# Relocate the directory variables that we use.
gettext_dir=`echo "$gettext_dir/" | sed -e "s%^${orig_installprefix}/%${curr_installprefix}/%" | sed -e 's,/$,,'`
fi
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
{
echo "\
Usage: autopoint [OPTION]...
Copies standard gettext infrastructure files into a source package.
Options:
--help print this help and exit
--version print version information and exit
-f, --force force overwriting of files that already exist
-n, --dry-run print modifications but don't perform them"
# echo "\
# -V version copy the infrastructure of the specified gettext version
# (dangerous)"
echo "
Report bugs to <bug-gnu-gettext@gnu.org>."
}
# func_version
# outputs to stdout the --version message.
func_version ()
{
echo "$progname (GNU $package) $version"
echo "Uses a versions archive in git format."
echo "Copyright (C) 2002-2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law."
echo "Written by" "Bruno Haible"
}
# func_fatal_error message
# outputs to stderr a fatal error message, and terminates the program.
func_fatal_error ()
{
echo "autopoint: *** $1" 1>&2
echo "autopoint: *** Stop." 1>&2
exit 1
}
# Command-line option processing.
# Removes the OPTIONS from the arguments. Sets the variables:
# - force yes if --force was given, empty otherwise
# - ver gettext version if -V was given, empty otherwise
# - doit false if --dry-run was given, : otherwise
{
force=
ver=
doit=:
while test $# -gt 0; do
case "$1" in
-n | --dry-run | --dry-ru | --dry-r | --dry- | --dry | --dr | --d )
shift
doit=false ;;
-f | --force | --forc | --for | --fo | --f )
shift
force=yes ;;
--help | --hel | --he | --h )
func_usage; exit 0 ;;
# -V ) # Some people put a space between -V and the version number.
# shift
# if test $# = 0; then
# func_usage 1>&2
# exit 1
# fi
# ver=$1;
# shift ;;
# -V*) # Some people omit the space between -V and the version number.
# ver=`echo "X$1" | sed -e 's/^X-V//'`
# shift ;;
--version | --versio | --versi | --vers | --ver | --ve | --v )
func_version
exit 0 ;;
-- ) # Stop option prcessing
shift; break ;;
-* )
echo "autopoint: unknown option $1" 1>&2
echo "Try 'autopoint --help' for more information." 1>&2
exit 1 ;;
* )
break ;;
esac
done
}
# Command-line argument processing.
# Analyzes the remaining arguments.
{
if test $# -gt 0; then
func_usage 1>&2
exit 1
fi
}
srcdir=`pwd`
# The current directory is now $srcdir.
# Check integrity of package: A configure.in/ac must be present. Sets variable
# - configure_in name of configure.in/ac file.
if test -f configure.in; then
configure_in=configure.in
else
if test -f configure.ac; then
configure_in=configure.ac
else
# KDE specific convention: configure.in.in
if test -f configure.in.in; then
configure_in=configure.in.in
else
func_fatal_error "Missing configure.in or configure.ac, please cd to your package first."
fi
fi
fi
# Check whether the -V option and the version number in configure.in match.
# At least one of the two must be given. If both are given, they must agree.
sed_extract_AM_GNU_GETTEXT_VERSION_argument='s/^AM_GNU_GETTEXT_VERSION(\([^()]*\)).*$/\1/'
sed_remove_outer_brackets='s/^\[\(.*\)\]$/\1/'
xver=`cat "$configure_in" | grep '^AM_GNU_GETTEXT_VERSION(' | sed -n -e "$sed_extract_AM_GNU_GETTEXT_VERSION_argument"p | sed -e "$sed_remove_outer_brackets" | sed -e 1q`
if test -z "$xver" && test -f intl/VERSION; then
xver=`cat intl/VERSION | LC_ALL=C sed -n -e 's/^.*gettext-\([-+_.0-9A-Za-z]*\).*$/\1/p'`
fi
if test -n "$xver"; then
if test -n "$ver"; then
if test "X$ver" != "X$xver"; then
func_fatal_error "Version mismatch: specified -V $ver but the package uses gettext version $xver"
fi
else
ver="$xver"
fi
else
if test -z "$ver"; then
func_fatal_error "Missing version: please specify in $configure_in through a line 'AM_GNU_GETTEXT_VERSION(x.yy.zz)' the gettext version the package is using"
fi
fi
# Check whether the version number is supported.
case "$ver" in
0.10.35 | 0.10.36 | 0.10.37 | 0.10.38 | 0.10.39 | 0.10.40 | \
0.11 | 0.11.1 | 0.11.2 | 0.11.3 | 0.11.4 | 0.11.5 | \
0.12 | 0.12.1 | \
0.13 | 0.13.1 | \
0.14 | 0.14.1 | 0.14.2 | 0.14.3 | 0.14.4 | 0.14.5 | 0.14.6 | \
0.15 | \
0.16 | 0.16.1 | \
0.17 | \
0.18 | 0.18.1 )
;;
*)
func_fatal_error "The AM_GNU_GETTEXT_VERSION declaration in your $configure_in
file requires the infrastructure from gettext-$ver but this version
is older. Please upgrade to gettext-$ver or newer."
;;
esac
# Check in which directory config.rpath, mkinstalldirs etc. belong.
auxdir=`cat "$configure_in" | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
if test -n "$auxdir"; then
auxdir="$auxdir/"
fi
# Check in which directory the *.m4 macros belong.
m4dir=m4
if test -f Makefile.am; then
# A package using automake.
# Extract the macro directory name from Makefile.am.
aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ ]*=' Makefile.am | sed -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/'`
m4dir_is_next=
for arg in $aclocal_amflags; do
if test -n "$m4dir_is_next"; then
m4dir="$arg"
break
else
if test "X$arg" = "X-I"; then
m4dir_is_next=yes
else
m4dir_is_next=
fi
fi
done
fi
# Check whether to omit the intl/ directory.
omitintl=`cat "$configure_in" | grep '^AM_GNU_GETTEXT' | sed -n -e 's/^AM_GNU_GETTEXT(\([^(),]*\).*$/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
omitintl=`if test 'external' = "$omitintl"; then echo yes; fi`
# Check in which directory or directories the po/* infrastructure belongs.
sed_extract_config_files='s,#.*$,,
s,^dnl .*$,,
s, dnl .*$,,
/AC_CONFIG_FILES(/ {
ta
:a
s/)/)/
tb
s/\\$//
N
ba
:b
s,^.*AC_CONFIG_FILES([[ ]*\([^]"$`\\)]*\).*$,\1,p
}'
configfiles=`cat "$configure_in" | sed -n -e "$sed_extract_config_files"`
# PO directories have a Makefile.in generated from Makefile.in.in.
# Treat a directory as a PO directory if and only if it has a
# POTFILES.in file. This allows packages to have multiple PO
# directories under different names or in different locations.
sed_remove_Makefile_in='s,/Makefile\.in$,,'
podirs=`for f in $configfiles; do case "$f" in */Makefile.in) echo $f;; esac; done | sed -e "$sed_remove_Makefile_in"`
if test -z "$podirs"; then
# If we cannot get the list of PO directories from configure.ac, assume the
# common default.
podirs="po"
fi
# Set up a temporary checkout directory.
# Set variables
# - work_dir directory containing the temporary checkout
work_dir=tmpwrk$$
mkdir "$work_dir" || {
if test -d "$work_dir"; then
func_fatal_error "directory $work_dir already exists"
else
func_fatal_error "cannot create directory $work_dir"
fi
}
# We support three archive formats.
#
# Format | Size (KiB) for gettext-0.17 | Extra tools needed |
# -------+-----------------------------+--------------------+
# dir | 3000 | -- |
# cvs | 356 | cvs |
# git | 484 | git |
# -------+-----------------------------+--------------------+
case "git" in
dir)
# The archive of different versions is very large, but using it does not
# require special tools.
gzip -d -c < "$gettext_dir/archive.dir.tar.gz" | (cd "$work_dir" && tar xf - "gettext-$ver")
if test `find "$work_dir" -type f -print | wc -l` = 0; then
rm -rf "$work_dir"
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
fi
mv "$work_dir/gettext-$ver" "$work_dir/archive"
;;
cvs)
# We distributed the many different versions of the files in a CVS
# repository. This guaranteed a good compression rate:
#
# Including version size in KB of
# "du autopoint-files/archive"
# 0.10.35 240
# 0.10.36 428
# 0.10.37 436
# 0.10.38 488
# 0.10.39 500
# 0.10.40 528
# 0.11 720
# 0.11.1 740
# 0.11.2 748
# 0.11.3 804
# 0.11.4 864
# 0.11.5 880
# 0.12 1032
# 0.12.1 1032
# 0.13 1220
# 0.13.1 1236
# 0.14 1296
# 0.14.1 1300
# 0.14.2 1420
# 0.14.3 1428
# 0.14.4 1464
# 0.14.5 1508
# 0.14.6 1580
# 0.15 1760
# 0.16 1808
# 0.16.1 1812
# 0.17 2128
# 0.18 2656
#
# The requirement that the user must have the CVS program available is not
# a severe restrictions, because most of the people who use autopoint are
# users of CVS.
#
# But the CVS format is now deprecated, because "cvs init" does not work in
# all circumstances
# (see <http://lists.gnu.org/archive/html/bug-cvs/2010-05/msg00003.html>)
# and we are not allowed to distribute the cvs infrastructure files
# ourselves
# (see <http://lists.gnu.org/archive/html/bug-cvs/2010-06/msg00011.html>).
#
# Check availability of the CVS program.
(cvs -v) >/dev/null 2>/dev/null || func_fatal_error "cvs program not found"
# Set up a temporary CVS repository.
# We need the temporary CVS repository because any checkout needs write
# access to the CVSROOT/history file, so it cannot be under $gettext_dir.
# We need the temporary checkout directory because when --force was not
# given, we need to compare the existing files with the checked out ones.
# Set variables
# - cvs_dir directory containing the temporary repository
cvs_dir=tmpcvs$$
# Use an umask of 077, to avoid attacks that work by overwriting files in
# the "$CVSROOT"/CVSROOT directory.
(umask 077 && mkdir "$cvs_dir") || {
if test -d "$cvs_dir"; then
func_fatal_error "directory $cvs_dir already exists"
else
func_fatal_error "cannot create directory $cvs_dir"
fi
}
CVSROOT="$srcdir/$cvs_dir"
unset CVS_CLIENT_LOG
unset CVS_CLIENT_PORT
unset CVS_IGNORE_REMOTE_ROOT
unset CVS_LOCAL_BRANCH_NUM
unset CVS_NOBASES
unset CVS_PASSFILE
unset CVS_PASSWORD
unset CVS_PROXY_PORT
unset CVS_RCMD_PORT
unset CVS_RSH
unset CVS_SERVER
unset CVS_SERVER_SLEEP
CVS_SIGN_COMMITS=
export CVS_SIGN_COMMITS
unset CVS_SSH
unset CVS_VERIFY_CHECKOUTS
unset CVS_VERIFY_TEMPLATE
unset CVSIGNORE
unset CVSREAD
unset CVSREADONLYFS
unset CVSUMASK
unset CVSWRAPPERS
# Need to pass -d "$CVSROOT", because there may be a CVS directory in the
# current directory.
cvs -d "$CVSROOT" init
gzip -d -c < "$gettext_dir/archive.cvs.tar.gz" | (cd "$cvs_dir" && tar xf -)
cd "$work_dir"
cvsver=gettext-`echo "$ver" | sed -e 's/\./_/g'`
(cvs -d "$CVSROOT" checkout -r"$cvsver" archive > /dev/null) 2>&1 | grep -v '^cvs checkout: Updating'
find archive -name CVS -type d -print | xargs rm -rf
cd ..
rm -rf "$cvs_dir"
# Check that really all CVS directories are gone, otherwise we would overwrite
# the contents of the user's CVS directories.
if test `find $work_dir/archive -name CVS -type d -print | wc -l` != 0; then
rm -rf "$work_dir"
func_fatal_error "failed to remove all CVS subdirectories"
fi
if test `find $work_dir/archive -type f -print | wc -l` = 0; then
rm -rf "$work_dir"
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
fi
;;
git)
# Check availability of the git program.
(git --version) >/dev/null 2>/dev/null || func_fatal_error "git program not found"
mkdir "$work_dir/archive"
gzip -d -c < "$gettext_dir/archive.git.tar.gz" | (cd "$work_dir/archive" && tar xf -)
(cd "$work_dir/archive" && git checkout -q "gettext-$ver") || {
rm -rf "$work_dir"
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
}
(cd "$work_dir/archive" && rm -rf .git .gitignore)
;;
esac
# func_destfile file
# determines the destination file, relative to the package's top level
# directory, for a given file name, relative to archive.
# Sets variables
# - destfile relative destination file name, or
# empty if the file shall be omitted
# - sharedowner yes if the file is not only owned by GNU gettext but may
# be installed by automake or other tools, otherwise empty
# - allpodirs yes if the file is to be installed in every dir in $podirs
func_destfile ()
{
# There are five categories of files:
# ABOUT_NLS -> top level directory
# config.rpath mkinstalldirs -> $auxdir
# m4/* -> $m4dir/
# intl/* -> intl/
# po/* ->
sharedowner=
allpodirs=
case `echo "$1" | sed -e 's,[^/]*$,,'` in
"" )
case "$1" in
config.rpath ) destfile="$auxdir$1" ;;
mkinstalldirs ) destfile="$auxdir$1" sharedowner=yes ;;
* ) destfile="$1" ;;
esac
;;
m4/ ) destfile=`echo "$1" | sed -e "s,^m4/,$m4dir/,"` ;;
intl/ ) if test -n "$omitintl"; then destfile=""; else destfile="$1"; fi ;;
po/ ) destfile=`echo "$1" | sed -e "s,^po/,,"` allpodirs=yes ;;
* ) destfile="$1" ;;
esac
}
# func_compare existingfile gettextfile
# compares the existing file and the file from gettext, and decides whether the
# existing file should be overwritten with the file from gettext. Returns 0 if
# it should be overwritten, or 1 if it should be skipped.
sed_extract_serial='s/^#.* serial \([^ ]*\).*/\1/p
1q'
func_compare ()
{
if cmp -s "$1" "$2"; then
false
else
case "$2" in
*.m4)
# For interoperability with gnulib. gnulib often has newer versions of
# the *.m4 files than the latest gettext release. Don't overwrite a
# newer version from gnulib with an older version from the gettext
# release. The version can be retrieved from the first line, which
# looks like this: # file.m4 serial NN ...
existing_serial=`sed -n -e "$sed_extract_serial" < "$1"`
gettext_serial=`sed -n -e "$sed_extract_serial" < "$2"`
if test -n "$existing_serial" && test -n "$gettext_serial" \
&& test "$existing_serial" -ge "$gettext_serial" 2> /dev/null; then
false
else
true
fi
;;
*)
true
;;
esac
fi
}
# If some files have been locally modified and we have not been requested
# to overwrite them, then bail out. This is better than leaving a source
# package around where half of the files are locally modified and half are
# original - too great risk of version mismatch.
if test -z "$force"; then
mismatch=
func_tmpdir
mismatchfile="$tmp"/autopoint.diff
for file in `find "$work_dir/archive" -type f -print | sed -e "s,^$work_dir/archive/,," | LC_ALL=C sort`; do
func_destfile "$file"
if test -n "$destfile"; then
func_compare_to_destfile ()
{
finaldestfile="$1"
if test -f "$finaldestfile"; then
if func_compare "$finaldestfile" "$work_dir/archive/$file"; then
if test -n "$sharedowner"; then
echo "autopoint: warning: File $finaldestfile has been locally modified." 1>&2
else
echo "autopoint: File $finaldestfile has been locally modified." 1>&2
mismatch=yes
diff -c "$work_dir/archive/$file" "$finaldestfile" | sed -e "1s,$work_dir/archive/,," >> "$mismatchfile"
fi
fi
fi
}
if test -n "$allpodirs"; then
for dir in $podirs; do
func_compare_to_destfile "$dir/$destfile"
done
else
func_compare_to_destfile "$destfile"
fi
fi
done
if test -n "$mismatch"; then
rm -rf "$work_dir"
func_fatal_error "Some files have been locally modified. Not overwriting them because --force has not been specified. For your convenience, you find the local modifications in the file '$mismatchfile'."
fi
rm -rf "$tmp"
fi
# func_mkdir_for to
# ensures the directory that would the given file exists.
# 'to' is a relative pathname, relative to the current directory.
func_mkdir_for ()
{
base=`echo "$1" | sed -e 's,/[^/]*$,,'`
if test "X$base" != "X$1" && test -n "$base"; then
func_mkdir_for "$base"
# Recompute base. It was clobbered by the recursive call.
base=`echo "$1" | sed -e 's,/[^/]*$,,'`
test -d "$base" || { echo "Creating directory $base"; mkdir "$base"; }
fi
}
# func_copy from to
# copies a file.
# 'from' is a relative pathname, relative to the current directory.
# 'to' is a relative pathname, relative to the current directory.
func_copy ()
{
if $doit; then
func_mkdir_for "$2"
rm -f "$2"
echo "Copying file $2"
cp "$1" "$2"
else
echo "Copy file $2"
fi
}
# func_backup to
# makes a backup of a file that is about to be overwritten or replaced.
# 'to' is a relative pathname, relative to the current directory.
func_backup ()
{
if $doit; then
if test -f "$1"; then
rm -f "$1~"
cp -p "$1" "$1~"
fi
fi
}
# Now copy the files.
for file in `find "$work_dir/archive" -type f -print | sed -e "s,^$work_dir/archive/,," | LC_ALL=C sort`; do
func_destfile "$file"
if test -n "$destfile"; then
func_copy_to_destfile ()
{
finaldestfile="$1"
mustcopy=
if test -f "$finaldestfile"; then
if func_compare "$finaldestfile" "$work_dir/archive/$file"; then
if test -n "$force"; then
# Overwrite locally modified file.
mustcopy=yes
fi
# If --force is not specified, don't overwrite locally modified files
# for which GNU gettext is a shared owner.
fi
else
mustcopy=yes
fi
if test -n "$mustcopy"; then
func_backup "$finaldestfile"
func_copy "$work_dir/archive/$file" "$finaldestfile"
fi
}
if test -n "$allpodirs"; then
for dir in $podirs; do
func_copy_to_destfile "$dir/$destfile"
done
else
func_copy_to_destfile "$destfile"
fi
fi
done
# That's it.
rm -rf "$work_dir"
exit 0
Binary file not shown.
Binary file not shown.
-123
View File
@@ -1,123 +0,0 @@
#! /bin/sh
#
# Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Find a way to echo strings without interpreting backslash.
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
echo='echo'
else
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
echo='printf %s\n'
else
echo_func () {
cat <<EOT
$*
EOT
}
echo='echo_func'
fi
fi
# This script is primarily a shell function library. In order for
# ". gettext.sh" to find it, we install it in $PREFIX/bin (that is usually
# contained in $PATH), rather than in some other location such as
# $PREFIX/share/sh-scripts or $PREFIX/share/gettext. In order to not violate
# the Filesystem Hierarchy Standard when doing so, this script is executable.
# Therefore it needs to support the standard --help and --version.
if test -z "$ZSH_VERSION"; then
# zsh is not POSIX compliant: By default, while ". gettext.sh" is executed,
# it sets $0 to "gettext.sh", defeating the purpose of this test. But
# fortunately we know that when running under zsh, this script is always
# being sourced, not executed, because hardly anyone is crazy enough to
# install zsh as /bin/sh.
case "$0" in
gettext.sh | */gettext.sh | *\\gettext.sh)
progname=$0
package=gettext-runtime
version=0.18.1
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
{
echo "GNU gettext shell script function library version $version"
echo "Usage: . gettext.sh"
}
# func_version
# outputs to stdout the --version message.
func_version ()
{
echo "$progname (GNU $package) $version"
echo "Copyright (C) 2003-2007 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law."
echo "Written by" "Bruno Haible"
}
if test $# = 1; then
case "$1" in
--help | --hel | --he | --h )
func_usage; exit 0 ;;
--version | --versio | --versi | --vers | --ver | --ve | --v )
func_version; exit 0 ;;
esac
fi
func_usage 1>&2
exit 1
;;
esac
fi
# eval_gettext MSGID
# looks up the translation of MSGID and substitutes shell variables in the
# result.
eval_gettext () {
gettext "$1" | (export PATH `envsubst --variables "$1"`; envsubst "$1")
}
# eval_ngettext MSGID MSGID-PLURAL COUNT
# looks up the translation of MSGID / MSGID-PLURAL for COUNT and substitutes
# shell variables in the result.
eval_ngettext () {
ngettext "$1" "$2" "$3" | (export PATH `envsubst --variables "$1 $2"`; envsubst "$1 $2")
}
# Note: This use of envsubst is much safer than using the shell built-in 'eval'
# would be.
# 1) The security problem with Chinese translations that happen to use a
# character such as \xe0\x60 is avoided.
# 2) The security problem with malevolent translators who put in command lists
# like "$(...)" or "`...`" is avoided.
# 3) The translations can only refer to shell variables that are already
# mentioned in MSGID or MSGID-PLURAL.
#
# Note: "export PATH" above is a dummy; this is for the case when
# `envsubst --variables ...` returns nothing.
#
# Note: In eval_ngettext above, "$1 $2" means a string whose variables set is
# the union of the variables set of "$1" and "$2".
#
# Note: The minimal use of backquote above ensures that trailing newlines are
# not dropped, not from the gettext invocation and not from the value of any
# shell variable.
#
# Note: Field splitting on the `envsubst --variables ...` result is desired,
# since envsubst outputs the variables, separated by newlines. Pathname
# wildcard expansion or tilde expansion has no effect here, since the words
# output by "envsubst --variables ..." consist solely of alphanumeric
# characters and underscore.
File diff suppressed because it is too large. Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-177
View File
@@ -1,177 +0,0 @@
--- gettext-runtime/intl/printf.c
+++ gettext-runtime/intl/printf.c
@@ -69,7 +69,7 @@
#define STATIC static
/* This needs to be consistent with libgnuintl.h.in. */
-#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
+#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__
/* Don't break __attribute__((format(printf,M,N))).
This redefinition is only possible because the libc in NetBSD, Cygwin,
mingw does not have a function __printf__. */
--- gettext-runtime/intl/libgnuintl.h.in
+++ gettext-runtime/intl/libgnuintl.h.in
@@ -330,7 +330,7 @@
#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */
#undef printf
-#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
+#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__
/* Don't break __attribute__((format(printf,M,N))).
This redefinition is only possible because the libc in NetBSD, Cygwin,
mingw does not have a function __printf__.
---- gettext-tools/gnulib-lib/clean-temp.c
+++ gettext-tools/gnulib-lib/clean-temp.c
@@ -66,9 +66,11 @@
# endif
#endif
+#ifndef _WIN64
#ifndef uintptr_t
# define uintptr_t unsigned long
#endif
+#endif
#if !GNULIB_FCNTL_SAFER
/* The results of open() in this file are not used with fchdir,
--- gettext-tools/gnulib-lib/fstrcmp.c
+++ gettext-tools/gnulib-lib/fstrcmp.c
@@ -55,9 +55,11 @@
#include "minmax.h"
#include "xalloc.h"
+#ifndef _WIN64
#ifndef uintptr_t
# define uintptr_t unsigned long
#endif
+#endif
#define ELEMENT char
--- gettext-tools/gnulib-lib/gl_array_list.c
+++ gettext-tools/gnulib-lib/gl_array_list.c
@@ -55,9 +55,11 @@
/* Checked size_t computations. */
#include "xsize.h"
+#ifndef _WIN64
#ifndef uintptr_t
# define uintptr_t unsigned long
#endif
+#endif
/* -------------------------- gl_list_t Data Type -------------------------- */
--- gettext-tools/gnulib-lib/gl_linkedhash_list.c
+++ gettext-tools/gnulib-lib/gl_linkedhash_list.c
@@ -55,9 +55,11 @@
#include "xsize.h"
+#ifndef _WIN64
#ifndef uintptr_t
# define uintptr_t unsigned long
#endif
+#endif
#define WITH_HASHTABLE 1
--- gettext-tools/gnulib-lib/stdio.in.h
+++ gettext-tools/gnulib-lib/stdio.in.h
@@ -642,10 +642,6 @@
# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
|| (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@)
# if defined __GNUC__
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-/* Don't break __attribute__((format(printf,M,N))). */
-# define printf __printf__
-# endif
_GL_FUNCDECL_RPL_1 (__printf__, int,
(const char *format, ...)
__asm__ (@ASM_SYMBOL_PREFIX@
--- gettext-tools/gnulib-lib/tempname.c
+++ gettext-tools/gnulib-lib/tempname.c
@@ -54,6 +54,10 @@
#include <stdint.h>
#include <unistd.h>
+#ifdef _WIN32
+# include <direct.h>
+#endif
+
#include <sys/stat.h>
#if _LIBC
@@ -73,6 +73,10 @@
# define __xstat64(version, file, buf) stat (file, buf)
#endif
+#ifdef _WIN32
+# define mkdir(path,mode) _mkdir(path)
+#endif
+
#if ! (HAVE___SECURE_GETENV || _LIBC)
# define __secure_getenv getenv
#endif
--- gettext-tools/src/write-java.c
+++ gettext-tools/src/write-java.c
@@ -30,6 +30,10 @@
#include <stdio.h>
#include <string.h>
+#ifdef _WIN32
+# include <direct.h>
+#endif
+
#include <sys/stat.h>
#if !defined S_ISDIR && defined S_IFDIR
# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
@@ -53,6 +53,10 @@
# define S_IXUSR 00100
#endif
+#ifdef _WIN32
+# define mkdir(path,mode) _mkdir(path)
+#endif
+
#include "c-ctype.h"
#include "error.h"
#include "xerror.h"
--- gettext-tools/src/write-csharp.c
+++ gettext-tools/src/write-csharp.c
@@ -29,6 +29,10 @@
#include <stdio.h>
#include <string.h>
+#ifdef _WIN32
+# include <direct.h>
+#endif
+
#include <sys/stat.h>
#if !defined S_ISDIR && defined S_IFDIR
# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
@@ -70,6 +70,10 @@
# define S_IXOTH (S_IXUSR >> 6)
#endif
+#ifdef _WIN32
+# define mkdir(path,mode) _mkdir(path)
+#endif
+
#include "c-ctype.h"
#include "relocatable.h"
#include "error.h"
--- gettext-tools/woe32dll/export.h
+++ gettext-tools/woe32dll/export.h
@@ -90,7 +90,11 @@
--export-all-symbols is used. */
/* IMP(x) is a symbol that contains the address of x. */
+#ifdef _WIN64
+#define IMP(x) __imp_##x
+#else
#define IMP(x) _imp__##x
+#endif
/* Ensure that the variable x is exported from the library, and that a
pseudo-variable IMP(x) is available. */
-66
View File
@@ -1,66 +0,0 @@
/* Class autosprintf - formatted output to an ostream.
Copyright (C) 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA. */
#ifndef _AUTOSPRINTF_H
#define _AUTOSPRINTF_H
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
# define __attribute__(Spec) /* empty */
# endif
/* The __-protected variants of `format' and `printf' attributes
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __format__ format
# define __printf__ printf
# endif
#endif
#include <string>
#include <iostream>
namespace gnu
{
/* A temporary object, usually allocated on the stack, representing
the result of an asprintf() call. */
class autosprintf
{
public:
/* Constructor: takes a format string and the printf arguments. */
autosprintf (const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
/* Copy constructor. */
autosprintf (const autosprintf& src);
/* Destructor: frees the temporarily allocated string. */
~autosprintf ();
/* Conversion to string. */
operator char * () const;
operator std::string () const;
/* Output to an ostream. */
friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp)
{
stream << (tmp.str ? tmp.str : "(error in autosprintf)");
return stream;
}
private:
char *str;
};
}
#endif /* _AUTOSPRINTF_H */
-357
View File
@@ -1,357 +0,0 @@
/* Public API for GNU gettext PO files - contained in libgettextpo.
Copyright (C) 2003-2008, 2010 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2003.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef _GETTEXT_PO_H
#define _GETTEXT_PO_H 1
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
/* =========================== Meta Information ============================ */
/* Version number: (major<<16) + (minor<<8) + subminor */
#define LIBGETTEXTPO_VERSION 0x001201
extern __declspec (dllimport) int libgettextpo_version;
/* ================================= Types ================================= */
/* A po_file_t represents the contents of a PO file. */
typedef struct po_file *po_file_t;
/* A po_message_iterator_t represents an iterator through a domain of a
PO file. */
typedef struct po_message_iterator *po_message_iterator_t;
/* A po_message_t represents a message in a PO file. */
typedef struct po_message *po_message_t;
/* A po_filepos_t represents a string's position within a source file. */
typedef struct po_filepos *po_filepos_t;
/* A po_error_handler handles error situations. */
struct po_error_handler
{
/* Signal an error. The error message is built from FORMAT and the following
arguments. ERRNUM, if nonzero, is an errno value.
Must increment the error_message_count variable declared in error.h.
Must not return if STATUS is nonzero. */
void (*error) (int status, int errnum,
const char *format, ...)
#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__
__attribute__ ((__format__ (__printf__, 3, 4)))
#endif
;
/* Signal an error. The error message is built from FORMAT and the following
arguments. The error location is at FILENAME line LINENO. ERRNUM, if
nonzero, is an errno value.
Must increment the error_message_count variable declared in error.h.
Must not return if STATUS is nonzero. */
void (*error_at_line) (int status, int errnum,
const char *filename, unsigned int lineno,
const char *format, ...)
#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__
__attribute__ ((__format__ (__printf__, 5, 6)))
#endif
;
/* Signal a multiline warning. The PREFIX applies to all lines of the
MESSAGE. Free the PREFIX and MESSAGE when done. */
void (*multiline_warning) (char *prefix, char *message);
/* Signal a multiline error. The PREFIX applies to all lines of the
MESSAGE. Free the PREFIX and MESSAGE when done.
Must increment the error_message_count variable declared in error.h if
PREFIX is non-NULL. */
void (*multiline_error) (char *prefix, char *message);
};
typedef const struct po_error_handler *po_error_handler_t;
/* A po_xerror_handler handles warnings, error and fatal error situations. */
#define PO_SEVERITY_WARNING 0 /* just a warning, tell the user */
#define PO_SEVERITY_ERROR 1 /* an error, the operation cannot complete */
#define PO_SEVERITY_FATAL_ERROR 2 /* an error, the operation must be aborted */
struct po_xerror_handler
{
/* Signal a problem of the given severity.
MESSAGE and/or FILENAME + LINENO indicate where the problem occurred.
If FILENAME is NULL, FILENAME and LINENO and COLUMN should be ignored.
If LINENO is (size_t)(-1), LINENO and COLUMN should be ignored.
If COLUMN is (size_t)(-1), it should be ignored.
MESSAGE_TEXT is the problem description (if MULTILINE_P is true,
multiple lines of text, each terminated with a newline, otherwise
usually a single line).
Must not return if SEVERITY is PO_SEVERITY_FATAL_ERROR. */
void (*xerror) (int severity,
po_message_t message,
const char *filename, size_t lineno, size_t column,
int multiline_p, const char *message_text);
/* Signal a problem that refers to two messages.
Similar to two calls to xerror.
If possible, a "..." can be appended to MESSAGE_TEXT1 and prepended to
MESSAGE_TEXT2. */
void (*xerror2) (int severity,
po_message_t message1,
const char *filename1, size_t lineno1, size_t column1,
int multiline_p1, const char *message_text1,
po_message_t message2,
const char *filename2, size_t lineno2, size_t column2,
int multiline_p2, const char *message_text2);
};
typedef const struct po_xerror_handler *po_xerror_handler_t;
/* Memory allocation:
The memory allocations performed by these functions use xmalloc(),
therefore will cause a program exit if memory is exhausted.
The memory allocated by po_file_read, and implicitly returned through
the po_message_* functions, lasts until freed with po_file_free. */
/* ============================= po_file_t API ============================= */
/* Create an empty PO file representation in memory. */
extern po_file_t po_file_create (void);
/* Read a PO file into memory.
Return its contents. Upon failure, return NULL and set errno. */
#define po_file_read po_file_read_v3
extern po_file_t po_file_read (const char *filename,
po_xerror_handler_t handler);
/* Write an in-memory PO file to a file.
Upon failure, return NULL and set errno. */
#define po_file_write po_file_write_v2
extern po_file_t po_file_write (po_file_t file, const char *filename,
po_xerror_handler_t handler);
/* Free a PO file from memory. */
extern void po_file_free (po_file_t file);
/* Return the names of the domains covered by a PO file in memory. */
extern const char * const * po_file_domains (po_file_t file);
/* =========================== Header entry API ============================ */
/* Return the header entry of a domain of a PO file in memory.
The domain NULL denotes the default domain.
Return NULL if there is no header entry. */
extern const char * po_file_domain_header (po_file_t file, const char *domain);
/* Return the value of a field in a header entry.
The return value is either a freshly allocated string, to be freed by the
caller, or NULL. */
extern char * po_header_field (const char *header, const char *field);
/* Return the header entry with a given field set to a given value. The field
is added if necessary.
The return value is a freshly allocated string. */
extern char * po_header_set_field (const char *header, const char *field, const char *value);
/* ======================= po_message_iterator_t API ======================= */
/* Create an iterator for traversing a domain of a PO file in memory.
The domain NULL denotes the default domain. */
extern po_message_iterator_t po_message_iterator (po_file_t file, const char *domain);
/* Free an iterator. */
extern void po_message_iterator_free (po_message_iterator_t iterator);
/* Return the next message, and advance the iterator.
Return NULL at the end of the message list. */
extern po_message_t po_next_message (po_message_iterator_t iterator);
/* Insert a message in a PO file in memory, in the domain and at the position
indicated by the iterator. The iterator thereby advances past the freshly
inserted message. */
extern void po_message_insert (po_message_iterator_t iterator, po_message_t message);
/* =========================== po_message_t API ============================ */
/* Return a freshly constructed message.
To finish initializing the message, you must set the msgid and msgstr. */
extern po_message_t po_message_create (void);
/* Return the context of a message, or NULL for a message not restricted to a
context. */
extern const char * po_message_msgctxt (po_message_t message);
/* Change the context of a message. NULL means a message not restricted to a
context. */
extern void po_message_set_msgctxt (po_message_t message, const char *msgctxt);
/* Return the msgid (untranslated English string) of a message. */
extern const char * po_message_msgid (po_message_t message);
/* Change the msgid (untranslated English string) of a message. */
extern void po_message_set_msgid (po_message_t message, const char *msgid);
/* Return the msgid_plural (untranslated English plural string) of a message,
or NULL for a message without plural. */
extern const char * po_message_msgid_plural (po_message_t message);
/* Change the msgid_plural (untranslated English plural string) of a message.
NULL means a message without plural. */
extern void po_message_set_msgid_plural (po_message_t message, const char *msgid_plural);
/* Return the msgstr (translation) of a message.
Return the empty string for an untranslated message. */
extern const char * po_message_msgstr (po_message_t message);
/* Change the msgstr (translation) of a message.
Use an empty string to denote an untranslated message. */
extern void po_message_set_msgstr (po_message_t message, const char *msgstr);
/* Return the msgstr[index] for a message with plural handling, or
NULL when the index is out of range or for a message without plural. */
extern const char * po_message_msgstr_plural (po_message_t message, int index);
/* Change the msgstr[index] for a message with plural handling.
Use a NULL value at the end to reduce the number of plural forms. */
extern void po_message_set_msgstr_plural (po_message_t message, int index, const char *msgstr);
/* Return the comments for a message. */
extern const char * po_message_comments (po_message_t message);
/* Change the comments for a message.
comments should be a multiline string, ending in a newline, or empty. */
extern void po_message_set_comments (po_message_t message, const char *comments);
/* Return the extracted comments for a message. */
extern const char * po_message_extracted_comments (po_message_t message);
/* Change the extracted comments for a message.
comments should be a multiline string, ending in a newline, or empty. */
extern void po_message_set_extracted_comments (po_message_t message, const char *comments);
/* Return the i-th file position for a message, or NULL if i is out of
range. */
extern po_filepos_t po_message_filepos (po_message_t message, int i);
/* Remove the i-th file position from a message.
The indices of all following file positions for the message are decremented
by one. */
extern void po_message_remove_filepos (po_message_t message, int i);
/* Add a file position to a message, if it is not already present for the
message.
file is the file name.
start_line is the line number where the string starts, or (size_t)(-1) if no
line number is available. */
extern void po_message_add_filepos (po_message_t message, const char *file, size_t start_line);
/* Return the previous context of a message, or NULL for none. */
extern const char * po_message_prev_msgctxt (po_message_t message);
/* Change the previous context of a message. NULL is allowed. */
extern void po_message_set_prev_msgctxt (po_message_t message, const char *prev_msgctxt);
/* Return the previous msgid (untranslated English string) of a message, or
NULL for none. */
extern const char * po_message_prev_msgid (po_message_t message);
/* Change the previous msgid (untranslated English string) of a message.
NULL is allowed. */
extern void po_message_set_prev_msgid (po_message_t message, const char *prev_msgid);
/* Return the previous msgid_plural (untranslated English plural string) of a
message, or NULL for none. */
extern const char * po_message_prev_msgid_plural (po_message_t message);
/* Change the previous msgid_plural (untranslated English plural string) of a
message. NULL is allowed. */
extern void po_message_set_prev_msgid_plural (po_message_t message, const char *prev_msgid_plural);
/* Return true if the message is marked obsolete. */
extern int po_message_is_obsolete (po_message_t message);
/* Change the obsolete mark of a message. */
extern void po_message_set_obsolete (po_message_t message, int obsolete);
/* Return true if the message is marked fuzzy. */
extern int po_message_is_fuzzy (po_message_t message);
/* Change the fuzzy mark of a message. */
extern void po_message_set_fuzzy (po_message_t message, int fuzzy);
/* Return true if the message is marked as being a format string of the given
type (e.g. "c-format"). */
extern int po_message_is_format (po_message_t message, const char *format_type);
/* Change the format string mark for a given type of a message. */
extern void po_message_set_format (po_message_t message, const char *format_type, /*bool*/int value);
/* If a numeric range of a message is set, return true and store the minimum
and maximum value in *MINP and *MAXP. */
extern int po_message_is_range (po_message_t message, int *minp, int *maxp);
/* Change the numeric range of a message. MIN and MAX must be non-negative,
with MIN < MAX. Use MIN = MAX = -1 to remove the numeric range of a
message. */
extern void po_message_set_range (po_message_t message, int min, int max);
/* =========================== po_filepos_t API ============================ */
/* Return the file name. */
extern const char * po_filepos_file (po_filepos_t filepos);
/* Return the line number where the string starts, or (size_t)(-1) if no line
number is available. */
extern size_t po_filepos_start_line (po_filepos_t filepos);
/* ============================ Format type API ============================= */
/* Return a NULL terminated array of the supported format types. */
extern const char * const * po_format_list (void);
/* Return the pretty name associated with a format type.
For example, for "csharp-format", return "C#".
Return NULL if the argument is not a supported format type. */
extern const char * po_format_pretty_name (const char *format_type);
/* ============================= Checking API ============================== */
/* Test whether an entire file PO file is valid, like msgfmt does it.
If it is invalid, pass the reasons to the handler. */
extern void po_file_check_all (po_file_t file, po_xerror_handler_t handler);
/* Test a single message, to be inserted in a PO file in memory, like msgfmt
does it. If it is invalid, pass the reasons to the handler. The iterator
is not modified by this call; it only specifies the file and the domain. */
extern void po_message_check_all (po_message_t message, po_message_iterator_t iterator, po_xerror_handler_t handler);
/* Test whether the message translation is a valid format string if the message
is marked as being a format string. If it is invalid, pass the reasons to
the handler. */
#define po_message_check_format po_message_check_format_v2
extern void po_message_check_format (po_message_t message, po_xerror_handler_t handler);
#ifdef __cplusplus
}
#endif
#endif /* _GETTEXT_PO_H */
-464
View File
@@ -1,464 +0,0 @@
/* Message catalogs for internationalization.
Copyright (C) 1995-1997, 2000-2010 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA. */
#ifndef _LIBINTL_H
#define _LIBINTL_H 1
#include <locale.h>
#if (defined __APPLE__ && defined __MACH__) && 0
# include <xlocale.h>
#endif
/* The LC_MESSAGES locale category is the category used by the functions
gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
On systems that don't define it, use an arbitrary value instead.
On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
then includes <libintl.h> (i.e. this file!) and then only defines
LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
in this case. */
#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
# define LC_MESSAGES 1729
#endif
/* We define an additional symbol to signal that we use the GNU
implementation of gettext. */
#define __USE_GNU_GETTEXT 1
/* Provide information about the supported file formats. Returns the
maximum minor revision number supported for a given major revision. */
#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
((major) == 0 || (major) == 1 ? 1 : -1)
/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
precedence over _conio_gettext. */
#ifdef __DJGPP__
# undef gettext
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Version number: (major<<16) + (minor<<8) + subminor */
#define LIBINTL_VERSION 0x001201
extern int libintl_version;
/* We redirect the functions to those prefixed with "libintl_". This is
necessary, because some systems define gettext/textdomain/... in the C
library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
If we used the unprefixed names, there would be cases where the
definition in the C library would override the one in the libintl.so
shared library. Recall that on ELF systems, the symbols are looked
up in the following order:
1. in the executable,
2. in the shared libraries specified on the link command line, in order,
3. in the dependencies of the shared libraries specified on the link
command line,
4. in the dlopen()ed shared libraries, in the order in which they were
dlopen()ed.
The definition in the C library would override the one in libintl.so if
either
* -lc is given on the link command line and -lintl isn't, or
* -lc is given on the link command line before -lintl, or
* libintl.so is a dependency of a dlopen()ed shared library but not
linked to the executable at link time.
Since Solaris gettext() behaves differently than GNU gettext(), this
would be unacceptable.
The redirection happens by default through macros in C, so that &gettext
is independent of the compilation unit, but through inline functions in
C++, in order not to interfere with the name mangling of class fields or
class methods called 'gettext'. */
/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
If he doesn't, we choose the method. A third possible method is
_INTL_REDIRECT_ASM, supported only by GCC. */
#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
# if defined __GNUC__ && __GNUC__ >= 2 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
# define _INTL_REDIRECT_ASM
# else
# ifdef __cplusplus
# define _INTL_REDIRECT_INLINE
# else
# define _INTL_REDIRECT_MACROS
# endif
# endif
#endif
/* Auxiliary macros. */
#ifdef _INTL_REDIRECT_ASM
# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
# define _INTL_STRINGIFY(prefix) #prefix
#else
# define _INTL_ASM(cname)
#endif
/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return
its n-th argument literally. This enables GCC to warn for example about
printf (gettext ("foo %y")). */
#if defined __GNUC__ && __GNUC__ >= 3 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && defined __cplusplus)
# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n)))
#else
# define _INTL_MAY_RETURN_STRING_ARG(n)
#endif
/* Look up MSGID in the current default message catalog for the current
LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_gettext (const char *__msgid)
_INTL_MAY_RETURN_STRING_ARG (1);
static inline char *gettext (const char *__msgid)
{
return libintl_gettext (__msgid);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define gettext libintl_gettext
#endif
extern char *gettext (const char *__msgid)
_INTL_ASM (libintl_gettext)
_INTL_MAY_RETURN_STRING_ARG (1);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current
LC_MESSAGES locale. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dgettext (const char *__domainname, const char *__msgid)
_INTL_MAY_RETURN_STRING_ARG (2);
static inline char *dgettext (const char *__domainname, const char *__msgid)
{
return libintl_dgettext (__domainname, __msgid);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dgettext libintl_dgettext
#endif
extern char *dgettext (const char *__domainname, const char *__msgid)
_INTL_ASM (libintl_dgettext)
_INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
int __category)
_INTL_MAY_RETURN_STRING_ARG (2);
static inline char *dcgettext (const char *__domainname, const char *__msgid,
int __category)
{
return libintl_dcgettext (__domainname, __msgid, __category);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dcgettext libintl_dcgettext
#endif
extern char *dcgettext (const char *__domainname, const char *__msgid,
int __category)
_INTL_ASM (libintl_dcgettext)
_INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Similar to `gettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
static inline char *ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
{
return libintl_ngettext (__msgid1, __msgid2, __n);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define ngettext libintl_ngettext
#endif
extern char *ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
_INTL_ASM (libintl_ngettext)
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Similar to `dgettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
static inline char *dngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n)
{
return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dngettext libintl_dngettext
#endif
extern char *dngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n)
_INTL_ASM (libintl_dngettext)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
#endif
/* Similar to `dcgettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
static inline char *dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
{
return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dcngettext libintl_dcngettext
#endif
extern char *dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
_INTL_ASM (libintl_dcngettext)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
#endif
/* Set the current default message catalog to DOMAINNAME.
If DOMAINNAME is null, return the current default.
If DOMAINNAME is "", reset to the default of "messages". */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_textdomain (const char *__domainname);
static inline char *textdomain (const char *__domainname)
{
return libintl_textdomain (__domainname);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define textdomain libintl_textdomain
#endif
extern char *textdomain (const char *__domainname)
_INTL_ASM (libintl_textdomain);
#endif
/* Specify that the DOMAINNAME message catalog will be found
in DIRNAME rather than in the system locale data base. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_bindtextdomain (const char *__domainname,
const char *__dirname);
static inline char *bindtextdomain (const char *__domainname,
const char *__dirname)
{
return libintl_bindtextdomain (__domainname, __dirname);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define bindtextdomain libintl_bindtextdomain
#endif
extern char *bindtextdomain (const char *__domainname, const char *__dirname)
_INTL_ASM (libintl_bindtextdomain);
#endif
/* Specify the character encoding in which the messages from the
DOMAINNAME message catalog will be returned. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_bind_textdomain_codeset (const char *__domainname,
const char *__codeset);
static inline char *bind_textdomain_codeset (const char *__domainname,
const char *__codeset)
{
return libintl_bind_textdomain_codeset (__domainname, __codeset);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define bind_textdomain_codeset libintl_bind_textdomain_codeset
#endif
extern char *bind_textdomain_codeset (const char *__domainname,
const char *__codeset)
_INTL_ASM (libintl_bind_textdomain_codeset);
#endif
/* Support for format strings with positions in *printf(), following the
POSIX/XSI specification.
Note: These replacements for the *printf() functions are visible only
in source files that #include <libintl.h> or #include "gettext.h".
Packages that use *printf() in source files that don't refer to _()
or gettext() but for which the format string could be the return value
of _() or gettext() need to add this #include. Oh well. */
#if !0
#include <stdio.h>
#include <stddef.h>
/* Get va_list. */
#if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER
# include <stdarg.h>
#else
# include <varargs.h>
#endif
#if !(defined fprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef fprintf
#define fprintf libintl_fprintf
extern int fprintf (FILE *, const char *, ...);
#endif
#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vfprintf
#define vfprintf libintl_vfprintf
extern int vfprintf (FILE *, const char *, va_list);
#endif
#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */
#undef printf
#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
/* Don't break __attribute__((format(printf,M,N))).
This redefinition is only possible because the libc in NetBSD, Cygwin,
mingw does not have a function __printf__.
Alternatively, we could have done this redirection only when compiling with
__GNUC__, together with a symbol redirection:
extern int printf (const char *, ...)
__asm__ (#__USER_LABEL_PREFIX__ "libintl_printf");
But doing it now would introduce a binary incompatibility with already
distributed versions of libintl on these systems. */
# define libintl_printf __printf__
#endif
#define printf libintl_printf
extern int printf (const char *, ...);
#endif
#if !(defined vprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vprintf
#define vprintf libintl_vprintf
extern int vprintf (const char *, va_list);
#endif
#if !(defined sprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef sprintf
#define sprintf libintl_sprintf
extern int sprintf (char *, const char *, ...);
#endif
#if !(defined vsprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vsprintf
#define vsprintf libintl_vsprintf
extern int vsprintf (char *, const char *, va_list);
#endif
#if 1
#if !(defined snprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef snprintf
#define snprintf libintl_snprintf
extern int snprintf (char *, size_t, const char *, ...);
#endif
#if !(defined vsnprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vsnprintf
#define vsnprintf libintl_vsnprintf
extern int vsnprintf (char *, size_t, const char *, va_list);
#endif
#endif
#if 0
#if !(defined asprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef asprintf
#define asprintf libintl_asprintf
extern int asprintf (char **, const char *, ...);
#endif
#if !(defined vasprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vasprintf
#define vasprintf libintl_vasprintf
extern int vasprintf (char **, const char *, va_list);
#endif
#endif
#if 0
#undef fwprintf
#define fwprintf libintl_fwprintf
extern int fwprintf (FILE *, const wchar_t *, ...);
#undef vfwprintf
#define vfwprintf libintl_vfwprintf
extern int vfwprintf (FILE *, const wchar_t *, va_list);
#undef wprintf
#define wprintf libintl_wprintf
extern int wprintf (const wchar_t *, ...);
#undef vwprintf
#define vwprintf libintl_vwprintf
extern int vwprintf (const wchar_t *, va_list);
#undef swprintf
#define swprintf libintl_swprintf
extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
#undef vswprintf
#define vswprintf libintl_vswprintf
extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
#endif
#endif
/* Support for the locale chosen by the user. */
#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
#undef setlocale
#define setlocale libintl_setlocale
extern char *setlocale (int, const char *);
#if 0
#undef newlocale
#define newlocale libintl_newlocale
extern locale_t newlocale (int, const char *, locale_t);
#endif
#endif
/* Support for relocatable packages. */
/* Sets the original and the current installation prefix of the package.
Relocation simply replaces a pathname starting with the original prefix
by the corresponding pathname with the current prefix instead. Both
prefixes should be directory names without trailing slash (i.e. use ""
instead of "/"). */
#define libintl_set_relocation_prefix libintl_set_relocation_prefix
extern void
libintl_set_relocation_prefix (const char *orig_prefix,
const char *curr_prefix);
#ifdef __cplusplus
}
#endif
#endif /* libintl.h */
-66
View File
@@ -1,66 +0,0 @@
/* Class autosprintf - formatted output to an ostream.
Copyright (C) 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA. */
#ifndef _AUTOSPRINTF_H
#define _AUTOSPRINTF_H
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
# define __attribute__(Spec) /* empty */
# endif
/* The __-protected variants of `format' and `printf' attributes
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __format__ format
# define __printf__ printf
# endif
#endif
#include <string>
#include <iostream>
namespace gnu
{
/* A temporary object, usually allocated on the stack, representing
the result of an asprintf() call. */
class autosprintf
{
public:
/* Constructor: takes a format string and the printf arguments. */
autosprintf (const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
/* Copy constructor. */
autosprintf (const autosprintf& src);
/* Destructor: frees the temporarily allocated string. */
~autosprintf ();
/* Conversion to string. */
operator char * () const;
operator std::string () const;
/* Output to an ostream. */
friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp)
{
stream << (tmp.str ? tmp.str : "(error in autosprintf)");
return stream;
}
private:
char *str;
};
}
#endif /* _AUTOSPRINTF_H */
-357
View File
@@ -1,357 +0,0 @@
/* Public API for GNU gettext PO files - contained in libgettextpo.
Copyright (C) 2003-2008, 2010 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2003.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef _GETTEXT_PO_H
#define _GETTEXT_PO_H 1
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
/* =========================== Meta Information ============================ */
/* Version number: (major<<16) + (minor<<8) + subminor */
#define LIBGETTEXTPO_VERSION 0x001201
extern int libgettextpo_version;
/* ================================= Types ================================= */
/* A po_file_t represents the contents of a PO file. */
typedef struct po_file *po_file_t;
/* A po_message_iterator_t represents an iterator through a domain of a
PO file. */
typedef struct po_message_iterator *po_message_iterator_t;
/* A po_message_t represents a message in a PO file. */
typedef struct po_message *po_message_t;
/* A po_filepos_t represents a string's position within a source file. */
typedef struct po_filepos *po_filepos_t;
/* A po_error_handler handles error situations. */
struct po_error_handler
{
/* Signal an error. The error message is built from FORMAT and the following
arguments. ERRNUM, if nonzero, is an errno value.
Must increment the error_message_count variable declared in error.h.
Must not return if STATUS is nonzero. */
void (*error) (int status, int errnum,
const char *format, ...)
#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__
__attribute__ ((__format__ (__printf__, 3, 4)))
#endif
;
/* Signal an error. The error message is built from FORMAT and the following
arguments. The error location is at FILENAME line LINENO. ERRNUM, if
nonzero, is an errno value.
Must increment the error_message_count variable declared in error.h.
Must not return if STATUS is nonzero. */
void (*error_at_line) (int status, int errnum,
const char *filename, unsigned int lineno,
const char *format, ...)
#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__
__attribute__ ((__format__ (__printf__, 5, 6)))
#endif
;
/* Signal a multiline warning. The PREFIX applies to all lines of the
MESSAGE. Free the PREFIX and MESSAGE when done. */
void (*multiline_warning) (char *prefix, char *message);
/* Signal a multiline error. The PREFIX applies to all lines of the
MESSAGE. Free the PREFIX and MESSAGE when done.
Must increment the error_message_count variable declared in error.h if
PREFIX is non-NULL. */
void (*multiline_error) (char *prefix, char *message);
};
typedef const struct po_error_handler *po_error_handler_t;
/* A po_xerror_handler handles warnings, error and fatal error situations. */
#define PO_SEVERITY_WARNING 0 /* just a warning, tell the user */
#define PO_SEVERITY_ERROR 1 /* an error, the operation cannot complete */
#define PO_SEVERITY_FATAL_ERROR 2 /* an error, the operation must be aborted */
struct po_xerror_handler
{
/* Signal a problem of the given severity.
MESSAGE and/or FILENAME + LINENO indicate where the problem occurred.
If FILENAME is NULL, FILENAME and LINENO and COLUMN should be ignored.
If LINENO is (size_t)(-1), LINENO and COLUMN should be ignored.
If COLUMN is (size_t)(-1), it should be ignored.
MESSAGE_TEXT is the problem description (if MULTILINE_P is true,
multiple lines of text, each terminated with a newline, otherwise
usually a single line).
Must not return if SEVERITY is PO_SEVERITY_FATAL_ERROR. */
void (*xerror) (int severity,
po_message_t message,
const char *filename, size_t lineno, size_t column,
int multiline_p, const char *message_text);
/* Signal a problem that refers to two messages.
Similar to two calls to xerror.
If possible, a "..." can be appended to MESSAGE_TEXT1 and prepended to
MESSAGE_TEXT2. */
void (*xerror2) (int severity,
po_message_t message1,
const char *filename1, size_t lineno1, size_t column1,
int multiline_p1, const char *message_text1,
po_message_t message2,
const char *filename2, size_t lineno2, size_t column2,
int multiline_p2, const char *message_text2);
};
typedef const struct po_xerror_handler *po_xerror_handler_t;
/* Memory allocation:
The memory allocations performed by these functions use xmalloc(),
therefore will cause a program exit if memory is exhausted.
The memory allocated by po_file_read, and implicitly returned through
the po_message_* functions, lasts until freed with po_file_free. */
/* ============================= po_file_t API ============================= */
/* Create an empty PO file representation in memory. */
extern po_file_t po_file_create (void);
/* Read a PO file into memory.
Return its contents. Upon failure, return NULL and set errno. */
#define po_file_read po_file_read_v3
extern po_file_t po_file_read (const char *filename,
po_xerror_handler_t handler);
/* Write an in-memory PO file to a file.
Upon failure, return NULL and set errno. */
#define po_file_write po_file_write_v2
extern po_file_t po_file_write (po_file_t file, const char *filename,
po_xerror_handler_t handler);
/* Free a PO file from memory. */
extern void po_file_free (po_file_t file);
/* Return the names of the domains covered by a PO file in memory. */
extern const char * const * po_file_domains (po_file_t file);
/* =========================== Header entry API ============================ */
/* Return the header entry of a domain of a PO file in memory.
The domain NULL denotes the default domain.
Return NULL if there is no header entry. */
extern const char * po_file_domain_header (po_file_t file, const char *domain);
/* Return the value of a field in a header entry.
The return value is either a freshly allocated string, to be freed by the
caller, or NULL. */
extern char * po_header_field (const char *header, const char *field);
/* Return the header entry with a given field set to a given value. The field
is added if necessary.
The return value is a freshly allocated string. */
extern char * po_header_set_field (const char *header, const char *field, const char *value);
/* ======================= po_message_iterator_t API ======================= */
/* Create an iterator for traversing a domain of a PO file in memory.
The domain NULL denotes the default domain. */
extern po_message_iterator_t po_message_iterator (po_file_t file, const char *domain);
/* Free an iterator. */
extern void po_message_iterator_free (po_message_iterator_t iterator);
/* Return the next message, and advance the iterator.
Return NULL at the end of the message list. */
extern po_message_t po_next_message (po_message_iterator_t iterator);
/* Insert a message in a PO file in memory, in the domain and at the position
indicated by the iterator. The iterator thereby advances past the freshly
inserted message. */
extern void po_message_insert (po_message_iterator_t iterator, po_message_t message);
/* =========================== po_message_t API ============================ */
/* Return a freshly constructed message.
To finish initializing the message, you must set the msgid and msgstr. */
extern po_message_t po_message_create (void);
/* Return the context of a message, or NULL for a message not restricted to a
context. */
extern const char * po_message_msgctxt (po_message_t message);
/* Change the context of a message. NULL means a message not restricted to a
context. */
extern void po_message_set_msgctxt (po_message_t message, const char *msgctxt);
/* Return the msgid (untranslated English string) of a message. */
extern const char * po_message_msgid (po_message_t message);
/* Change the msgid (untranslated English string) of a message. */
extern void po_message_set_msgid (po_message_t message, const char *msgid);
/* Return the msgid_plural (untranslated English plural string) of a message,
or NULL for a message without plural. */
extern const char * po_message_msgid_plural (po_message_t message);
/* Change the msgid_plural (untranslated English plural string) of a message.
NULL means a message without plural. */
extern void po_message_set_msgid_plural (po_message_t message, const char *msgid_plural);
/* Return the msgstr (translation) of a message.
Return the empty string for an untranslated message. */
extern const char * po_message_msgstr (po_message_t message);
/* Change the msgstr (translation) of a message.
Use an empty string to denote an untranslated message. */
extern void po_message_set_msgstr (po_message_t message, const char *msgstr);
/* Return the msgstr[index] for a message with plural handling, or
NULL when the index is out of range or for a message without plural. */
extern const char * po_message_msgstr_plural (po_message_t message, int index);
/* Change the msgstr[index] for a message with plural handling.
Use a NULL value at the end to reduce the number of plural forms. */
extern void po_message_set_msgstr_plural (po_message_t message, int index, const char *msgstr);
/* Return the comments for a message. */
extern const char * po_message_comments (po_message_t message);
/* Change the comments for a message.
comments should be a multiline string, ending in a newline, or empty. */
extern void po_message_set_comments (po_message_t message, const char *comments);
/* Return the extracted comments for a message. */
extern const char * po_message_extracted_comments (po_message_t message);
/* Change the extracted comments for a message.
comments should be a multiline string, ending in a newline, or empty. */
extern void po_message_set_extracted_comments (po_message_t message, const char *comments);
/* Return the i-th file position for a message, or NULL if i is out of
range. */
extern po_filepos_t po_message_filepos (po_message_t message, int i);
/* Remove the i-th file position from a message.
The indices of all following file positions for the message are decremented
by one. */
extern void po_message_remove_filepos (po_message_t message, int i);
/* Add a file position to a message, if it is not already present for the
message.
file is the file name.
start_line is the line number where the string starts, or (size_t)(-1) if no
line number is available. */
extern void po_message_add_filepos (po_message_t message, const char *file, size_t start_line);
/* Return the previous context of a message, or NULL for none. */
extern const char * po_message_prev_msgctxt (po_message_t message);
/* Change the previous context of a message. NULL is allowed. */
extern void po_message_set_prev_msgctxt (po_message_t message, const char *prev_msgctxt);
/* Return the previous msgid (untranslated English string) of a message, or
NULL for none. */
extern const char * po_message_prev_msgid (po_message_t message);
/* Change the previous msgid (untranslated English string) of a message.
NULL is allowed. */
extern void po_message_set_prev_msgid (po_message_t message, const char *prev_msgid);
/* Return the previous msgid_plural (untranslated English plural string) of a
message, or NULL for none. */
extern const char * po_message_prev_msgid_plural (po_message_t message);
/* Change the previous msgid_plural (untranslated English plural string) of a
message. NULL is allowed. */
extern void po_message_set_prev_msgid_plural (po_message_t message, const char *prev_msgid_plural);
/* Return true if the message is marked obsolete. */
extern int po_message_is_obsolete (po_message_t message);
/* Change the obsolete mark of a message. */
extern void po_message_set_obsolete (po_message_t message, int obsolete);
/* Return true if the message is marked fuzzy. */
extern int po_message_is_fuzzy (po_message_t message);
/* Change the fuzzy mark of a message. */
extern void po_message_set_fuzzy (po_message_t message, int fuzzy);
/* Return true if the message is marked as being a format string of the given
type (e.g. "c-format"). */
extern int po_message_is_format (po_message_t message, const char *format_type);
/* Change the format string mark for a given type of a message. */
extern void po_message_set_format (po_message_t message, const char *format_type, /*bool*/int value);
/* If a numeric range of a message is set, return true and store the minimum
and maximum value in *MINP and *MAXP. */
extern int po_message_is_range (po_message_t message, int *minp, int *maxp);
/* Change the numeric range of a message. MIN and MAX must be non-negative,
with MIN < MAX. Use MIN = MAX = -1 to remove the numeric range of a
message. */
extern void po_message_set_range (po_message_t message, int min, int max);
/* =========================== po_filepos_t API ============================ */
/* Return the file name. */
extern const char * po_filepos_file (po_filepos_t filepos);
/* Return the line number where the string starts, or (size_t)(-1) if no line
number is available. */
extern size_t po_filepos_start_line (po_filepos_t filepos);
/* ============================ Format type API ============================= */
/* Return a NULL terminated array of the supported format types. */
extern const char * const * po_format_list (void);
/* Return the pretty name associated with a format type.
For example, for "csharp-format", return "C#".
Return NULL if the argument is not a supported format type. */
extern const char * po_format_pretty_name (const char *format_type);
/* ============================= Checking API ============================== */
/* Test whether an entire file PO file is valid, like msgfmt does it.
If it is invalid, pass the reasons to the handler. */
extern void po_file_check_all (po_file_t file, po_xerror_handler_t handler);
/* Test a single message, to be inserted in a PO file in memory, like msgfmt
does it. If it is invalid, pass the reasons to the handler. The iterator
is not modified by this call; it only specifies the file and the domain. */
extern void po_message_check_all (po_message_t message, po_message_iterator_t iterator, po_xerror_handler_t handler);
/* Test whether the message translation is a valid format string if the message
is marked as being a format string. If it is invalid, pass the reasons to
the handler. */
#define po_message_check_format po_message_check_format_v2
extern void po_message_check_format (po_message_t message, po_xerror_handler_t handler);
#ifdef __cplusplus
}
#endif
#endif /* _GETTEXT_PO_H */
-464
View File
@@ -1,464 +0,0 @@
/* Message catalogs for internationalization.
Copyright (C) 1995-1997, 2000-2010 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA. */
#ifndef _LIBINTL_H
#define _LIBINTL_H 1
#include <locale.h>
#if (defined __APPLE__ && defined __MACH__) && 0
# include <xlocale.h>
#endif
/* The LC_MESSAGES locale category is the category used by the functions
gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
On systems that don't define it, use an arbitrary value instead.
On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
then includes <libintl.h> (i.e. this file!) and then only defines
LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
in this case. */
#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
# define LC_MESSAGES 1729
#endif
/* We define an additional symbol to signal that we use the GNU
implementation of gettext. */
#define __USE_GNU_GETTEXT 1
/* Provide information about the supported file formats. Returns the
maximum minor revision number supported for a given major revision. */
#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
((major) == 0 || (major) == 1 ? 1 : -1)
/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
precedence over _conio_gettext. */
#ifdef __DJGPP__
# undef gettext
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Version number: (major<<16) + (minor<<8) + subminor */
#define LIBINTL_VERSION 0x001201
extern int libintl_version;
/* We redirect the functions to those prefixed with "libintl_". This is
necessary, because some systems define gettext/textdomain/... in the C
library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
If we used the unprefixed names, there would be cases where the
definition in the C library would override the one in the libintl.so
shared library. Recall that on ELF systems, the symbols are looked
up in the following order:
1. in the executable,
2. in the shared libraries specified on the link command line, in order,
3. in the dependencies of the shared libraries specified on the link
command line,
4. in the dlopen()ed shared libraries, in the order in which they were
dlopen()ed.
The definition in the C library would override the one in libintl.so if
either
* -lc is given on the link command line and -lintl isn't, or
* -lc is given on the link command line before -lintl, or
* libintl.so is a dependency of a dlopen()ed shared library but not
linked to the executable at link time.
Since Solaris gettext() behaves differently than GNU gettext(), this
would be unacceptable.
The redirection happens by default through macros in C, so that &gettext
is independent of the compilation unit, but through inline functions in
C++, in order not to interfere with the name mangling of class fields or
class methods called 'gettext'. */
/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
If he doesn't, we choose the method. A third possible method is
_INTL_REDIRECT_ASM, supported only by GCC. */
#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
# if defined __GNUC__ && __GNUC__ >= 2 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
# define _INTL_REDIRECT_ASM
# else
# ifdef __cplusplus
# define _INTL_REDIRECT_INLINE
# else
# define _INTL_REDIRECT_MACROS
# endif
# endif
#endif
/* Auxiliary macros. */
#ifdef _INTL_REDIRECT_ASM
# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
# define _INTL_STRINGIFY(prefix) #prefix
#else
# define _INTL_ASM(cname)
#endif
/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return
its n-th argument literally. This enables GCC to warn for example about
printf (gettext ("foo %y")). */
#if defined __GNUC__ && __GNUC__ >= 3 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && defined __cplusplus)
# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n)))
#else
# define _INTL_MAY_RETURN_STRING_ARG(n)
#endif
/* Look up MSGID in the current default message catalog for the current
LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_gettext (const char *__msgid)
_INTL_MAY_RETURN_STRING_ARG (1);
static inline char *gettext (const char *__msgid)
{
return libintl_gettext (__msgid);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define gettext libintl_gettext
#endif
extern char *gettext (const char *__msgid)
_INTL_ASM (libintl_gettext)
_INTL_MAY_RETURN_STRING_ARG (1);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current
LC_MESSAGES locale. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dgettext (const char *__domainname, const char *__msgid)
_INTL_MAY_RETURN_STRING_ARG (2);
static inline char *dgettext (const char *__domainname, const char *__msgid)
{
return libintl_dgettext (__domainname, __msgid);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dgettext libintl_dgettext
#endif
extern char *dgettext (const char *__domainname, const char *__msgid)
_INTL_ASM (libintl_dgettext)
_INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
int __category)
_INTL_MAY_RETURN_STRING_ARG (2);
static inline char *dcgettext (const char *__domainname, const char *__msgid,
int __category)
{
return libintl_dcgettext (__domainname, __msgid, __category);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dcgettext libintl_dcgettext
#endif
extern char *dcgettext (const char *__domainname, const char *__msgid,
int __category)
_INTL_ASM (libintl_dcgettext)
_INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Similar to `gettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
static inline char *ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
{
return libintl_ngettext (__msgid1, __msgid2, __n);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define ngettext libintl_ngettext
#endif
extern char *ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
_INTL_ASM (libintl_ngettext)
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Similar to `dgettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
static inline char *dngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n)
{
return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dngettext libintl_dngettext
#endif
extern char *dngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n)
_INTL_ASM (libintl_dngettext)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
#endif
/* Similar to `dcgettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
static inline char *dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
{
return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define dcngettext libintl_dcngettext
#endif
extern char *dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
_INTL_ASM (libintl_dcngettext)
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
#endif
/* Set the current default message catalog to DOMAINNAME.
If DOMAINNAME is null, return the current default.
If DOMAINNAME is "", reset to the default of "messages". */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_textdomain (const char *__domainname);
static inline char *textdomain (const char *__domainname)
{
return libintl_textdomain (__domainname);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define textdomain libintl_textdomain
#endif
extern char *textdomain (const char *__domainname)
_INTL_ASM (libintl_textdomain);
#endif
/* Specify that the DOMAINNAME message catalog will be found
in DIRNAME rather than in the system locale data base. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_bindtextdomain (const char *__domainname,
const char *__dirname);
static inline char *bindtextdomain (const char *__domainname,
const char *__dirname)
{
return libintl_bindtextdomain (__domainname, __dirname);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define bindtextdomain libintl_bindtextdomain
#endif
extern char *bindtextdomain (const char *__domainname, const char *__dirname)
_INTL_ASM (libintl_bindtextdomain);
#endif
/* Specify the character encoding in which the messages from the
DOMAINNAME message catalog will be returned. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_bind_textdomain_codeset (const char *__domainname,
const char *__codeset);
static inline char *bind_textdomain_codeset (const char *__domainname,
const char *__codeset)
{
return libintl_bind_textdomain_codeset (__domainname, __codeset);
}
#else
#ifdef _INTL_REDIRECT_MACROS
# define bind_textdomain_codeset libintl_bind_textdomain_codeset
#endif
extern char *bind_textdomain_codeset (const char *__domainname,
const char *__codeset)
_INTL_ASM (libintl_bind_textdomain_codeset);
#endif
/* Support for format strings with positions in *printf(), following the
POSIX/XSI specification.
Note: These replacements for the *printf() functions are visible only
in source files that #include <libintl.h> or #include "gettext.h".
Packages that use *printf() in source files that don't refer to _()
or gettext() but for which the format string could be the return value
of _() or gettext() need to add this #include. Oh well. */
#if !0
#include <stdio.h>
#include <stddef.h>
/* Get va_list. */
#if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER
# include <stdarg.h>
#else
# include <varargs.h>
#endif
#if !(defined fprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef fprintf
#define fprintf libintl_fprintf
extern int fprintf (FILE *, const char *, ...);
#endif
#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vfprintf
#define vfprintf libintl_vfprintf
extern int vfprintf (FILE *, const char *, va_list);
#endif
#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */
#undef printf
#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
/* Don't break __attribute__((format(printf,M,N))).
This redefinition is only possible because the libc in NetBSD, Cygwin,
mingw does not have a function __printf__.
Alternatively, we could have done this redirection only when compiling with
__GNUC__, together with a symbol redirection:
extern int printf (const char *, ...)
__asm__ (#__USER_LABEL_PREFIX__ "libintl_printf");
But doing it now would introduce a binary incompatibility with already
distributed versions of libintl on these systems. */
# define libintl_printf __printf__
#endif
#define printf libintl_printf
extern int printf (const char *, ...);
#endif
#if !(defined vprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vprintf
#define vprintf libintl_vprintf
extern int vprintf (const char *, va_list);
#endif
#if !(defined sprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef sprintf
#define sprintf libintl_sprintf
extern int sprintf (char *, const char *, ...);
#endif
#if !(defined vsprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vsprintf
#define vsprintf libintl_vsprintf
extern int vsprintf (char *, const char *, va_list);
#endif
#if 1
#if !(defined snprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef snprintf
#define snprintf libintl_snprintf
extern int snprintf (char *, size_t, const char *, ...);
#endif
#if !(defined vsnprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vsnprintf
#define vsnprintf libintl_vsnprintf
extern int vsnprintf (char *, size_t, const char *, va_list);
#endif
#endif
#if 0
#if !(defined asprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef asprintf
#define asprintf libintl_asprintf
extern int asprintf (char **, const char *, ...);
#endif
#if !(defined vasprintf && defined _GL_STDIO_H) /* don't override gnulib */
#undef vasprintf
#define vasprintf libintl_vasprintf
extern int vasprintf (char **, const char *, va_list);
#endif
#endif
#if 0
#undef fwprintf
#define fwprintf libintl_fwprintf
extern int fwprintf (FILE *, const wchar_t *, ...);
#undef vfwprintf
#define vfwprintf libintl_vfwprintf
extern int vfwprintf (FILE *, const wchar_t *, va_list);
#undef wprintf
#define wprintf libintl_wprintf
extern int wprintf (const wchar_t *, ...);
#undef vwprintf
#define vwprintf libintl_vwprintf
extern int vwprintf (const wchar_t *, va_list);
#undef swprintf
#define swprintf libintl_swprintf
extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
#undef vswprintf
#define vswprintf libintl_vswprintf
extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
#endif
#endif
/* Support for the locale chosen by the user. */
#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
#undef setlocale
#define setlocale libintl_setlocale
extern char *setlocale (int, const char *);
#if 0
#undef newlocale
#define newlocale libintl_newlocale
extern locale_t newlocale (int, const char *, locale_t);
#endif
#endif
/* Support for relocatable packages. */
/* Sets the original and the current installation prefix of the package.
Relocation simply replaces a pathname starting with the original prefix
by the corresponding pathname with the current prefix instead. Both
prefixes should be directory names without trailing slash (i.e. use ""
instead of "/"). */
#define libintl_set_relocation_prefix libintl_set_relocation_prefix
extern void
libintl_set_relocation_prefix (const char *orig_prefix,
const char *curr_prefix);
#ifdef __cplusplus
}
#endif
#endif /* libintl.h */
Binary file not shown.
-86
View File
@@ -1,86 +0,0 @@
#!/bin/sh
# Prints a package's identification PACKAGE VERSION or PACKAGE.
#
# Copyright (C) 2001-2003, 2005 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
want_version="$1"
# NLS nuisances: Letter ranges are different in the Estonian locale.
LC_ALL=C
while true; do
if test -f configure; then
package=`(grep '^PACKAGE_NAME=' configure; grep '^ *PACKAGE=' configure) | grep -v '=[ ]*$' | sed -e '1q' | sed -e 's/^[^=]*=//' | sed -e "s/^'//" -e "s/'$//"`
case "$package" in
*[\"\$\`\{\}]*)
# Some packages (gcal) retrieve the package name dynamically.
package=
;;
esac
if test -n "$package"; then
is_gnu=`LC_ALL=C grep "GNU $package" * 2>/dev/null | grep -v '^libtool:'`
if test -n "$is_gnu"; then
package="GNU $package"
fi
if test -n "$want_version"; then
version=`(grep '^PACKAGE_VERSION=' configure; grep '^ *VERSION=' configure) | grep -v '=[ ]*$' | sed -e '1q' | sed -e 's/^[^=]*=//' | sed -e "s/^'//" -e "s/'$//"`
case "$version" in
*[\"\$\`\{\}]*)
# Some packages (gcal, gcc, clisp) retrieve the version dynamically.
version=
;;
esac
if test -n "$version"; then
echo "$package $version"
else
echo "$package"
fi
else
echo "$package"
fi
exit 0
fi
fi
dir=`basename \`pwd\``
case "$dir" in
i18n)
# This directory name, used in GNU make, is not the top level directory.
;;
*[A-Za-z]*[0-9]*)
package=`echo "$dir" | sed -e 's/^\([^0-9]*\)[0-9].*$/\1/' -e 's/[-_]$//'`
if test -n "$want_version"; then
version=`echo "$dir" | sed -e 's/^[^0-9]*\([0-9].*\)$/\1/'`
echo "$package $version"
else
echo "$package"
fi
exit 0
;;
esac
# Go to parent directory
last=`/bin/pwd`
cd ..
curr=`/bin/pwd`
if test "$last" = "$curr"; then
# Oops, didn't find the package name.
if test -n "$want_version"; then
echo "PACKAGE VERSION"
else
echo "PACKAGE"
fi
exit 0
fi
done
Binary file not shown.
-436
View File
@@ -1,436 +0,0 @@
#!/bin/sh
# Prints the user's email address, with confirmation from the user.
#
# Copyright (C) 2001-2003, 2005 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Prerequisites for using ${exec_prefix}/lib and ${datarootdir}/locale.
prefix="/usr/local/i686-w64-mingw32/stow/gettext-0.18.1.1"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
datadir="${datarootdir}"
# Set variables libdir, localedir.
libdir="${exec_prefix}/lib"
localedir="${datarootdir}/locale"
# Support for relocatability.
if test "no" = yes; then
orig_installdir="$libdir"/gettext # see Makefile.am's install rule
# Determine curr_installdir without caring for symlinked callers.
curr_installdir=`echo "$0" | sed -e 's,/[^/]*$,,'`
curr_installdir=`cd "$curr_installdir" && pwd`
# Compute the original/current installation prefixes by stripping the
# trailing directories off the original/current installation directories.
while true; do
orig_last=`echo "$orig_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
curr_last=`echo "$curr_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
if test -z "$orig_last" || test -z "$curr_last"; then
break
fi
if test "$orig_last" != "$curr_last"; then
break
fi
orig_installdir=`echo "$orig_installdir" | sed -e 's,/[^/]*$,,'`
curr_installdir=`echo "$curr_installdir" | sed -e 's,/[^/]*$,,'`
done
# Now relocate the directory variables that we use.
libdir=`echo "$libdir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'`
localedir=`echo "$localedir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'`
fi
# Internationalization.
. gettext.sh
TEXTDOMAIN=gettext-tools
export TEXTDOMAIN
TEXTDOMAINDIR="$localedir"
export TEXTDOMAINDIR
# Redirect fileno 3 to interactive I/O.
exec 3>/dev/tty
# Output a prompt.
if test $# != 0; then
echo "$1" 1>&3
fi
# Find the user name on the local machine.
user=`id -u -n 2>/dev/null`
if test -z "$user"; then
user="$USER"
if test -z "$user"; then
user="$LOGNAME"
if test -z "$user"; then
user=unknown
fi
fi
fi
# Find the hostname.
# hostname on some systems (SVR3.2, old Linux) returns a bogus exit status,
# so uname gets run too, so we keep only the first line of output.
#host=`(hostname || uname -n) 2>/dev/null | sed 1q`
host=`"$libdir"/gettext/hostname --short 2>/dev/null | sed 1q`
# Find the hostname.
hostfqdn=`"$libdir"/gettext/hostname --fqdn 2>/dev/null | sed 1q`
# Find a list of email addresses from various mailer configuration files.
# All mailers use configuration files under $HOME. We handle them in a
# last-modified - first-priority order.
cd $HOME
files=""
# ----------------------- BEGIN MAILER SPECIFIC CODE -----------------------
# Mozilla Thunderbird addresses
files="$files .thunderbird/*/prefs.js"
# Mozilla addresses
files="$files .mozilla/*/prefs.js"
# Netscape 4 addresses
files="$files .netscape/liprefs.js .netscape/preferences.js"
# Netscape 3 addresses
files="$files .netscape/preferences"
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses
# XEmacs mew addresses
files="$files .emacs .emacs.el"
# KDE2 addresses
files="$files .kde2/share/config/emaildefaults"
# KDE kmail addresses
files="$files .kde2/share/config/kmailrc"
# GNOME evolution 2 addresses
files="$files .gconf/apps/evolution/mail/%gconf.xml"
# GNOME evolution 1 addresses
files="$files evolution/config.xmldb"
# GNOME balsa addresses
files="$files .gnome/balsa"
# StarOffice and OpenOffice addresses
sed_dos2unix='s/\r$//'
sed_soffice51='s,StarOffice 5\.1=\(.*\)$,\1/sofficerc,p'
sed_soffice52='s,StarOffice 5\.2=\(.*\)$,\1/user/sofficerc,p'
sed_ooffice='s,^OpenOffice[^=]*=\(.*\)$,\1/user/config/registry/instance/org/openoffice/UserProfile.xml,p'
files="$files Office51/sofficerc Office52/user/sofficerc "`sed -n -e "$sed_dos2unix" -e "$sed_soffice51" -e "$sed_soffice52" -e "$sed_ooffice" .sversionrc 2>/dev/null | sed -e 's,^file://*,/,'`
# mutt addresses
files="$files .muttrc"
# pine addresses
files="$files .pinerc"
# xfmail addresses
files="$files .xfmail/.xfmailrc"
# tkrat addresses
files="$files .ratatosk/ratatoskrc"
# ----------------------- END MAILER SPECIFIC CODE -----------------------
# Expand wildcards and remove nonexistent files from the list.
nfiles=""
for file in $files; do
if test -r "$file" && test ! -d "$file"; then
nfiles="$nfiles $file"
fi
done
files="$nfiles"
addresses=""
if test -n "$files"; then
for file in `ls -t $files`; do
case "$file" in
# ----------------------- BEGIN MAILER SPECIFIC CODE -----------------------
# Mozilla and Mozilla Thunderbird addresses
.mozilla/*/prefs.js | .thunderbird/*/prefs.js)
addresses="$addresses "`grep -h '^user_pref("mail\.identity\..*\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\..*\.useremail", "\(.*\)");$/\1/'`
;;
# Netscape 4 addresses
.netscape/liprefs.js | .netscape/preferences.js)
addresses="$addresses "`grep -h '^user_pref("mail\.identity\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\.useremail", "\(.*\)");$/\1/'`
;;
# Netscape 3 addresses
.netscape/preferences)
addresses="$addresses "`grep -h '^EMAIL_ADDRESS:' $file 2>/dev/null | sed -e 's/^EMAIL_ADDRESS:[ ]*//'`
;;
.emacs | .emacs.el)
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses
addresses="$addresses "`grep -h '[ (]user-mail-address "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]user-mail-address "\([^"]*\)".*$/\1/'`
# XEmacs mew addresses
domains=`grep -h '[ (]mew-mail-domain "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]mew-mail-domain "\([^"]*\)".*$/\1/'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@$domain"
done
fi
;;
# KDE2 addresses
.kde2/share/config/emaildefaults)
addresses="$addresses "`grep -h '^EmailAddress=' $file 2>/dev/null | sed -e 's/^EmailAddress=//'`
;;
# KDE kmail addresses
.kde2/share/config/kmailrc)
addresses="$addresses "`grep -h '^Email Address=' $file 2>/dev/null | sed -e 's/^Email Address=//'`
;;
# GNOME evolution 2 addresses
.gconf/apps/evolution/mail/%gconf.xml)
sedexpr0='s,^.*&lt;addr-spec&gt;\(.*\)&lt;/addr-spec&gt;.*$,\1,p'
addresses="$addresses "`sed -n -e "$sedexpr0" < $file`
;;
# GNOME evolution 1 addresses
evolution/config.xmldb)
sedexpr0='s/^.*<entry name="identity_address_[0-9]*" type="string" value="\([^"]*\)".*$/\1/p'
sedexpr1='s/\(..\)/\\x\1/g'
sedexpr2='s,$,\\n,'
addresses="$addresses "`sed -n -e "$sedexpr0" < $file | while read hexstring; do printf \`echo "$hexstring" | sed -e "$sedexpr1" -e "$sedexpr2"\`; done`
;;
# GNOME balsa addresses
.gnome/balsa)
addresses="$addresses "`grep -h '^Address=' $file 2>/dev/null | sed -e 's/^Address=//'`
;;
# OpenOffice addresses
*/UserProfile.xml)
addresses="$addresses "`sed -n -e 's,^.*<mail cfg:type="string">\(.*\)</mail>.*$,\1,p' $file 2>/dev/null`
;;
# StarOffice addresses
# Not a typo. They really write "Adress" with a single d.
# German orthography...
*/sofficerc)
addresses="$addresses "`grep -h '^User-Adress=' $file 2>/dev/null | sed -e 's/#[^#]*$//' -e 's/^.*#//'`
;;
# mutt addresses
.muttrc)
mutt_addresses=`grep -h '^set from="[^"]*"[ ]*$' $file 2>/dev/null | sed -e 's/^set from="\([^"]*\)"[ ]*$/\1/'`
if test -n "$mutt_addresses"; then
addresses="$addresses $mutt_addresses"
else
# mutt uses $EMAIL as fallback.
if test -n "$EMAIL"; then
addresses="$addresses $EMAIL"
fi
fi
;;
# pine addresses
.pinerc)
domains=`grep -h '^user-domain=' $file 2>/dev/null | sed -e 's/^user-domain=//'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@$domain"
done
else
# The use-only-domain-name option is only used if the user-domain option is not present.
domains=`grep -h '^use-only-domain-name=' $file 2>/dev/null | sed -e 's/^use-only-domain-name=//'`
if test "Yes" = "$domains"; then
addresses="$addresses ${user}@"`echo "$hostfqdn" | sed -e 's/^[^.]*\.//'`
fi
fi
;;
# xfmail addresses
.xfmail/.xfmailrc)
addresses="$addresses "`grep -h '^from=.*<.*>' $file 2>/dev/null | sed -e 's/^.*<\([^<>]*\)>.*$/\1/'`
;;
# tkrat addresses
.ratatosk/ratatoskrc)
domains=`grep -h '^set option(masquerade_as) ' $file 2>/dev/null | sed -e 's/^set option(masquerade_as) //'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@$domain"
done
else
# The domain option is used only if the masquerade_as option is not present.
domains=`grep -h '^set option(domain) ' $file 2>/dev/null | sed -e 's/^set option(domain) //'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@${host}.$domain"
done
fi
fi
;;
# ----------------------- END MAILER SPECIFIC CODE -----------------------
esac
done
fi
# Some Debian systems have a file /etc/mailname.
if test -r /etc/mailname; then
hostmailname=`cat /etc/mailname`
if test -n "$hostmailname"; then
addresses="$addresses ${user}@$hostmailname"
fi
fi
# SuSE Linux >= 8.0 systems have a file /etc/sysconfig/mail.
if test -r /etc/sysconfig/mail; then
hostmailname=`. /etc/sysconfig/mail && echo "$FROM_HEADER"`
if test -n "$hostmailname"; then
addresses="$addresses ${user}@$hostmailname"
fi
fi
# elm has no user-defined addresses.
# mailx has no user-defined addresses.
# mh has no user-defined addresses.
# They use the system default.
addresses="$addresses ${user}@$hostfqdn"
# Normalize addresses: remove addresses without @, lowercase the part after @,
# and remove duplicates.
lowercase_sed='{
h
s/^[^@]*@\(.*\)$/\1/
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
x
s/^\([^@]*\)@.*/\1@/
G
s/\
//
p
}'
naddresses=""
for addr in $addresses; do
case "$addr" in
"<"*">") addr=`echo "$addr" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$addr" in
*@*)
addr=`echo "$addr" | sed -n -e "$lowercase_sed"`
case " $naddresses " in
*" $addr "*) ;;
*) naddresses="$naddresses $addr" ;;
esac
;;
esac
done
addresses="$naddresses"
# Now it's time to ask the user.
case "$addresses" in
" "*" "*)
# At least two addresses.
lines=""
i=0
for addr in $addresses; do
i=`expr $i + 1`
lines="${lines}${i} ${addr}
"
done
while true; do
{ gettext "Which is your email address?"; echo; } 1>&3
echo "$lines" 1>&3
{ gettext "Please choose the number, or enter your email address."; echo; } 1>&3
read answer < /dev/tty
case "$answer" in
*@*) ;;
[0-9]*)
i=0
for addr in $addresses; do
i=`expr $i + 1`
if test "$i" = "$answer"; then
break 2
fi
done
;;
esac
case "$answer" in
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$answer" in
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
*@*.*) ;;
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
esac
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
break
done
;;
" "*)
# One address.
while true; do
{ gettext "Is the following your email address?"; echo; } 1>&3
echo " $addresses" 1>&3
{ gettext "Please confirm by pressing Return, or enter your email address."; echo; } 1>&3
read answer < /dev/tty
if test -z "$answer"; then
addr=`echo "$addresses" | sed -e 's/^ //'`
break
fi
case "$answer" in
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$answer" in
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
*@*.*) ;;
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
esac
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
break
done
;;
"")
# No address.
{ gettext "Couldn't find out about your email address."; echo; } 1>&3
while true; do
{ gettext "Please enter your email address."; echo; } 1>&3
read answer < /dev/tty
case "$answer" in
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$answer" in
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
*@*.*) ;;
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
esac
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
break
done
;;
*) echo "internal error" 1>&3 ; exit 1 ;;
esac
# Print to standard output.
echo "$addr"
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-86
View File
@@ -1,86 +0,0 @@
#!/bin/sh
# Prints a package's identification PACKAGE VERSION or PACKAGE.
#
# Copyright (C) 2001-2003, 2005 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
want_version="$1"
# NLS nuisances: Letter ranges are different in the Estonian locale.
LC_ALL=C
while true; do
if test -f configure; then
package=`(grep '^PACKAGE_NAME=' configure; grep '^ *PACKAGE=' configure) | grep -v '=[ ]*$' | sed -e '1q' | sed -e 's/^[^=]*=//' | sed -e "s/^'//" -e "s/'$//"`
case "$package" in
*[\"\$\`\{\}]*)
# Some packages (gcal) retrieve the package name dynamically.
package=
;;
esac
if test -n "$package"; then
is_gnu=`LC_ALL=C grep "GNU $package" * 2>/dev/null | grep -v '^libtool:'`
if test -n "$is_gnu"; then
package="GNU $package"
fi
if test -n "$want_version"; then
version=`(grep '^PACKAGE_VERSION=' configure; grep '^ *VERSION=' configure) | grep -v '=[ ]*$' | sed -e '1q' | sed -e 's/^[^=]*=//' | sed -e "s/^'//" -e "s/'$//"`
case "$version" in
*[\"\$\`\{\}]*)
# Some packages (gcal, gcc, clisp) retrieve the version dynamically.
version=
;;
esac
if test -n "$version"; then
echo "$package $version"
else
echo "$package"
fi
else
echo "$package"
fi
exit 0
fi
fi
dir=`basename \`pwd\``
case "$dir" in
i18n)
# This directory name, used in GNU make, is not the top level directory.
;;
*[A-Za-z]*[0-9]*)
package=`echo "$dir" | sed -e 's/^\([^0-9]*\)[0-9].*$/\1/' -e 's/[-_]$//'`
if test -n "$want_version"; then
version=`echo "$dir" | sed -e 's/^[^0-9]*\([0-9].*\)$/\1/'`
echo "$package $version"
else
echo "$package"
fi
exit 0
;;
esac
# Go to parent directory
last=`/bin/pwd`
cd ..
curr=`/bin/pwd`
if test "$last" = "$curr"; then
# Oops, didn't find the package name.
if test -n "$want_version"; then
echo "PACKAGE VERSION"
else
echo "PACKAGE"
fi
exit 0
fi
done
Binary file not shown.
-436
View File
@@ -1,436 +0,0 @@
#!/bin/sh
# Prints the user's email address, with confirmation from the user.
#
# Copyright (C) 2001-2003, 2005 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Prerequisites for using ${exec_prefix}/lib and ${datarootdir}/locale.
prefix="/usr/local/x86_64-w64-mingw32/stow/gettext-0.18.1.1"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
datadir="${datarootdir}"
# Set variables libdir, localedir.
libdir="${exec_prefix}/lib"
localedir="${datarootdir}/locale"
# Support for relocatability.
if test "no" = yes; then
orig_installdir="$libdir"/gettext # see Makefile.am's install rule
# Determine curr_installdir without caring for symlinked callers.
curr_installdir=`echo "$0" | sed -e 's,/[^/]*$,,'`
curr_installdir=`cd "$curr_installdir" && pwd`
# Compute the original/current installation prefixes by stripping the
# trailing directories off the original/current installation directories.
while true; do
orig_last=`echo "$orig_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
curr_last=`echo "$curr_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
if test -z "$orig_last" || test -z "$curr_last"; then
break
fi
if test "$orig_last" != "$curr_last"; then
break
fi
orig_installdir=`echo "$orig_installdir" | sed -e 's,/[^/]*$,,'`
curr_installdir=`echo "$curr_installdir" | sed -e 's,/[^/]*$,,'`
done
# Now relocate the directory variables that we use.
libdir=`echo "$libdir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'`
localedir=`echo "$localedir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'`
fi
# Internationalization.
. gettext.sh
TEXTDOMAIN=gettext-tools
export TEXTDOMAIN
TEXTDOMAINDIR="$localedir"
export TEXTDOMAINDIR
# Redirect fileno 3 to interactive I/O.
exec 3>/dev/tty
# Output a prompt.
if test $# != 0; then
echo "$1" 1>&3
fi
# Find the user name on the local machine.
user=`id -u -n 2>/dev/null`
if test -z "$user"; then
user="$USER"
if test -z "$user"; then
user="$LOGNAME"
if test -z "$user"; then
user=unknown
fi
fi
fi
# Find the hostname.
# hostname on some systems (SVR3.2, old Linux) returns a bogus exit status,
# so uname gets run too, so we keep only the first line of output.
#host=`(hostname || uname -n) 2>/dev/null | sed 1q`
host=`"$libdir"/gettext/hostname --short 2>/dev/null | sed 1q`
# Find the hostname.
hostfqdn=`"$libdir"/gettext/hostname --fqdn 2>/dev/null | sed 1q`
# Find a list of email addresses from various mailer configuration files.
# All mailers use configuration files under $HOME. We handle them in a
# last-modified - first-priority order.
cd $HOME
files=""
# ----------------------- BEGIN MAILER SPECIFIC CODE -----------------------
# Mozilla Thunderbird addresses
files="$files .thunderbird/*/prefs.js"
# Mozilla addresses
files="$files .mozilla/*/prefs.js"
# Netscape 4 addresses
files="$files .netscape/liprefs.js .netscape/preferences.js"
# Netscape 3 addresses
files="$files .netscape/preferences"
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses
# XEmacs mew addresses
files="$files .emacs .emacs.el"
# KDE2 addresses
files="$files .kde2/share/config/emaildefaults"
# KDE kmail addresses
files="$files .kde2/share/config/kmailrc"
# GNOME evolution 2 addresses
files="$files .gconf/apps/evolution/mail/%gconf.xml"
# GNOME evolution 1 addresses
files="$files evolution/config.xmldb"
# GNOME balsa addresses
files="$files .gnome/balsa"
# StarOffice and OpenOffice addresses
sed_dos2unix='s/\r$//'
sed_soffice51='s,StarOffice 5\.1=\(.*\)$,\1/sofficerc,p'
sed_soffice52='s,StarOffice 5\.2=\(.*\)$,\1/user/sofficerc,p'
sed_ooffice='s,^OpenOffice[^=]*=\(.*\)$,\1/user/config/registry/instance/org/openoffice/UserProfile.xml,p'
files="$files Office51/sofficerc Office52/user/sofficerc "`sed -n -e "$sed_dos2unix" -e "$sed_soffice51" -e "$sed_soffice52" -e "$sed_ooffice" .sversionrc 2>/dev/null | sed -e 's,^file://*,/,'`
# mutt addresses
files="$files .muttrc"
# pine addresses
files="$files .pinerc"
# xfmail addresses
files="$files .xfmail/.xfmailrc"
# tkrat addresses
files="$files .ratatosk/ratatoskrc"
# ----------------------- END MAILER SPECIFIC CODE -----------------------
# Expand wildcards and remove nonexistent files from the list.
nfiles=""
for file in $files; do
if test -r "$file" && test ! -d "$file"; then
nfiles="$nfiles $file"
fi
done
files="$nfiles"
addresses=""
if test -n "$files"; then
for file in `ls -t $files`; do
case "$file" in
# ----------------------- BEGIN MAILER SPECIFIC CODE -----------------------
# Mozilla and Mozilla Thunderbird addresses
.mozilla/*/prefs.js | .thunderbird/*/prefs.js)
addresses="$addresses "`grep -h '^user_pref("mail\.identity\..*\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\..*\.useremail", "\(.*\)");$/\1/'`
;;
# Netscape 4 addresses
.netscape/liprefs.js | .netscape/preferences.js)
addresses="$addresses "`grep -h '^user_pref("mail\.identity\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\.useremail", "\(.*\)");$/\1/'`
;;
# Netscape 3 addresses
.netscape/preferences)
addresses="$addresses "`grep -h '^EMAIL_ADDRESS:' $file 2>/dev/null | sed -e 's/^EMAIL_ADDRESS:[ ]*//'`
;;
.emacs | .emacs.el)
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses
addresses="$addresses "`grep -h '[ (]user-mail-address "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]user-mail-address "\([^"]*\)".*$/\1/'`
# XEmacs mew addresses
domains=`grep -h '[ (]mew-mail-domain "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]mew-mail-domain "\([^"]*\)".*$/\1/'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@$domain"
done
fi
;;
# KDE2 addresses
.kde2/share/config/emaildefaults)
addresses="$addresses "`grep -h '^EmailAddress=' $file 2>/dev/null | sed -e 's/^EmailAddress=//'`
;;
# KDE kmail addresses
.kde2/share/config/kmailrc)
addresses="$addresses "`grep -h '^Email Address=' $file 2>/dev/null | sed -e 's/^Email Address=//'`
;;
# GNOME evolution 2 addresses
.gconf/apps/evolution/mail/%gconf.xml)
sedexpr0='s,^.*&lt;addr-spec&gt;\(.*\)&lt;/addr-spec&gt;.*$,\1,p'
addresses="$addresses "`sed -n -e "$sedexpr0" < $file`
;;
# GNOME evolution 1 addresses
evolution/config.xmldb)
sedexpr0='s/^.*<entry name="identity_address_[0-9]*" type="string" value="\([^"]*\)".*$/\1/p'
sedexpr1='s/\(..\)/\\x\1/g'
sedexpr2='s,$,\\n,'
addresses="$addresses "`sed -n -e "$sedexpr0" < $file | while read hexstring; do printf \`echo "$hexstring" | sed -e "$sedexpr1" -e "$sedexpr2"\`; done`
;;
# GNOME balsa addresses
.gnome/balsa)
addresses="$addresses "`grep -h '^Address=' $file 2>/dev/null | sed -e 's/^Address=//'`
;;
# OpenOffice addresses
*/UserProfile.xml)
addresses="$addresses "`sed -n -e 's,^.*<mail cfg:type="string">\(.*\)</mail>.*$,\1,p' $file 2>/dev/null`
;;
# StarOffice addresses
# Not a typo. They really write "Adress" with a single d.
# German orthography...
*/sofficerc)
addresses="$addresses "`grep -h '^User-Adress=' $file 2>/dev/null | sed -e 's/#[^#]*$//' -e 's/^.*#//'`
;;
# mutt addresses
.muttrc)
mutt_addresses=`grep -h '^set from="[^"]*"[ ]*$' $file 2>/dev/null | sed -e 's/^set from="\([^"]*\)"[ ]*$/\1/'`
if test -n "$mutt_addresses"; then
addresses="$addresses $mutt_addresses"
else
# mutt uses $EMAIL as fallback.
if test -n "$EMAIL"; then
addresses="$addresses $EMAIL"
fi
fi
;;
# pine addresses
.pinerc)
domains=`grep -h '^user-domain=' $file 2>/dev/null | sed -e 's/^user-domain=//'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@$domain"
done
else
# The use-only-domain-name option is only used if the user-domain option is not present.
domains=`grep -h '^use-only-domain-name=' $file 2>/dev/null | sed -e 's/^use-only-domain-name=//'`
if test "Yes" = "$domains"; then
addresses="$addresses ${user}@"`echo "$hostfqdn" | sed -e 's/^[^.]*\.//'`
fi
fi
;;
# xfmail addresses
.xfmail/.xfmailrc)
addresses="$addresses "`grep -h '^from=.*<.*>' $file 2>/dev/null | sed -e 's/^.*<\([^<>]*\)>.*$/\1/'`
;;
# tkrat addresses
.ratatosk/ratatoskrc)
domains=`grep -h '^set option(masquerade_as) ' $file 2>/dev/null | sed -e 's/^set option(masquerade_as) //'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@$domain"
done
else
# The domain option is used only if the masquerade_as option is not present.
domains=`grep -h '^set option(domain) ' $file 2>/dev/null | sed -e 's/^set option(domain) //'`
if test -n "$domains"; then
for domain in $domains; do
addresses="$addresses ${user}@${host}.$domain"
done
fi
fi
;;
# ----------------------- END MAILER SPECIFIC CODE -----------------------
esac
done
fi
# Some Debian systems have a file /etc/mailname.
if test -r /etc/mailname; then
hostmailname=`cat /etc/mailname`
if test -n "$hostmailname"; then
addresses="$addresses ${user}@$hostmailname"
fi
fi
# SuSE Linux >= 8.0 systems have a file /etc/sysconfig/mail.
if test -r /etc/sysconfig/mail; then
hostmailname=`. /etc/sysconfig/mail && echo "$FROM_HEADER"`
if test -n "$hostmailname"; then
addresses="$addresses ${user}@$hostmailname"
fi
fi
# elm has no user-defined addresses.
# mailx has no user-defined addresses.
# mh has no user-defined addresses.
# They use the system default.
addresses="$addresses ${user}@$hostfqdn"
# Normalize addresses: remove addresses without @, lowercase the part after @,
# and remove duplicates.
lowercase_sed='{
h
s/^[^@]*@\(.*\)$/\1/
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
x
s/^\([^@]*\)@.*/\1@/
G
s/\
//
p
}'
naddresses=""
for addr in $addresses; do
case "$addr" in
"<"*">") addr=`echo "$addr" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$addr" in
*@*)
addr=`echo "$addr" | sed -n -e "$lowercase_sed"`
case " $naddresses " in
*" $addr "*) ;;
*) naddresses="$naddresses $addr" ;;
esac
;;
esac
done
addresses="$naddresses"
# Now it's time to ask the user.
case "$addresses" in
" "*" "*)
# At least two addresses.
lines=""
i=0
for addr in $addresses; do
i=`expr $i + 1`
lines="${lines}${i} ${addr}
"
done
while true; do
{ gettext "Which is your email address?"; echo; } 1>&3
echo "$lines" 1>&3
{ gettext "Please choose the number, or enter your email address."; echo; } 1>&3
read answer < /dev/tty
case "$answer" in
*@*) ;;
[0-9]*)
i=0
for addr in $addresses; do
i=`expr $i + 1`
if test "$i" = "$answer"; then
break 2
fi
done
;;
esac
case "$answer" in
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$answer" in
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
*@*.*) ;;
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
esac
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
break
done
;;
" "*)
# One address.
while true; do
{ gettext "Is the following your email address?"; echo; } 1>&3
echo " $addresses" 1>&3
{ gettext "Please confirm by pressing Return, or enter your email address."; echo; } 1>&3
read answer < /dev/tty
if test -z "$answer"; then
addr=`echo "$addresses" | sed -e 's/^ //'`
break
fi
case "$answer" in
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$answer" in
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
*@*.*) ;;
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
esac
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
break
done
;;
"")
# No address.
{ gettext "Couldn't find out about your email address."; echo; } 1>&3
while true; do
{ gettext "Please enter your email address."; echo; } 1>&3
read answer < /dev/tty
case "$answer" in
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
esac
case "$answer" in
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
*@*.*) ;;
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
esac
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
break
done
;;
*) echo "internal error" 1>&3 ; exit 1 ;;
esac
# Print to standard output.
echo "$addr"
Binary file not shown.
Binary file not shown.
Binary file not shown.
-8
View File
@@ -1,8 +0,0 @@
#All folders
SRB2.res
depend.dep
depend.ped
*.o
#VC9 folder only
/VC9/Win32
/VC9/x64
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
Loaded 100 of 325 files, more files were not shown because too many files have changed in this diff. Show more