annotate PROGRAMMING_NOTES @ 7724:613b20c69d2c

[gaim-migrate @ 8369] this didn't cause me any problems yesterday, and it compiles, and bug fixing is a good thing. "Some month ago I introduced translatable texts for "gaim --help" and "gaim-remote --help". Unfortunately the output of the translated text is often unreadable. The problem is, that Gaim's *.po files have the UTF-8 locale (because this is the default charset for GTK+ 2.0). But the users may have configured other locales. For instance my SuSE Linux 9.0 system is configured with LANG=de_DE@euro. "euro" is ISO-8859-1 (Western character set, 8 Bit, with the Euro currency symbol). Lots of UTF-8 characters are unreadable if they are displayed in a 8 Bit charset without conversion. Only the 7 Bit chars are displayed right. There are two possible solutions: 1) Make the console texts untranslatable. This isn't very clever. 2) Convert the texts from UTF-8 to user's locale. I choose the second solution. The conversion cannot be made during the translation, because gettext does not allow a mix of different character sets in one po-file. My patch converts the console strings from UTF-8 to users locale. Normally this works right, because most users have a locale which is compatible with their language. The case where a user uses a language (for instance German: LANG=de_DE) with an incompatible character set (for instance the 7Bit charset LC_CTYPE=C) is also handled. The user then sees a warning and the original UTF-8 message. At first I tried to make a new UTF-8 function in src/util.c. But the function is needed 5 times in src/gaim-remote.c and 2 times in src/main.c. gaim-remote is not linked against util.o. Also there are a lot of dependencies from util.o to other files, so I will introduce a lot of trouble to link gaim-remote against util.o. So I only wrote a function in src/gaim-remote.c and used the UTF-8 conversion inline in src/main.c." --Bjoern Voigt committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Wed, 03 Dec 2003 13:21:55 +0000
parents 10b5ac17fdd6
children da88e2cd5c53
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 Notes on keeping GAIM OS independant
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 ------------------------------------
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
4 General
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 -------
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 - Use G_DIR_SEPARATOR_S and G_DIR_SEPARATOR for paths
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 - Use g_getenv, g_snprintf, g_vsnprintf
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 - Use gaim_home_dir instead of g_get_home_dir or g_getenv("HOME")
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11
3713
e3a8baffcc24 [gaim-migrate @ 3846]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
12 - Make sure when including win32dep.h that it is the last header to
e3a8baffcc24 [gaim-migrate @ 3846]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
13 be included.
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14
4482
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
15 - Open binary files when reading or writing with 'b' mode.
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
16
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
17 e.g: fopen("somefile", "wb");
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
18
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
19 Not doing so will open files in windows using defaut translation mode.
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
20 i.e. newline -> <CR><LF>
59ff9d0b7b85 [gaim-migrate @ 4757]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4062
diff changeset
21
4062
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
22 Paths
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
23 -----
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
24
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
25 - DATADIR, LOCALEDIR & LIBDIR are defined in wingaim as functions.
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
26 Doing the following will therefore break the windows build:
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
27
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
28 printf("File in DATADIR is: %s\n", DATADIR G_DIR_SEPARATOR_S "pic.png");
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
29
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
30 it should be:
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
31
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
32 printf("File in DATADIR is: %s%s%s\n", DATADIR, G_DIR_SEPARATOR_S, "pic.png");
e074172f4a41 [gaim-migrate @ 4272]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3713
diff changeset
33
5338
10b5ac17fdd6 [gaim-migrate @ 5714]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4482
diff changeset
34 - When writing out paths to .gaimrc, use wgaim_escape_dirsep. This is necessary
10b5ac17fdd6 [gaim-migrate @ 5714]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4482
diff changeset
35 because the Windows dir separator '\' is being used to escape characters, when
10b5ac17fdd6 [gaim-migrate @ 5714]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4482
diff changeset
36 paths are read in from the .gaimrc file.
10b5ac17fdd6 [gaim-migrate @ 5714]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4482
diff changeset
37
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
38 PLUGINS & PROTOS
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
39 ----------------
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
40
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
41 - G_MODULE_EXPORT all functions which are to be accessed from outside the
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
42 scope of its "dll" or "so". (E.G. gaim_plugin_init)
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
43
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
44 - G_MODULE_IMPORT all global variables which are located outside your
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
45 dynamic library. (E.G. connections)
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
46
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
47 (Not doing this will cause "Memory Access Violations" in Win32)