[gaim-migrate @ 5229]
[pidgin-git.git] / PROGRAMMING_NOTES
blobc9d1873bc3750b3ac14140f3667fcbfe22c56480
1 Notes on keeping GAIM OS independant
2 ------------------------------------
4 General
5 -------
6 - Use G_DIR_SEPARATOR_S and G_DIR_SEPARATOR for paths
8 - Use g_getenv, g_snprintf, g_vsnprintf
10 - Use gaim_home_dir instead of g_get_home_dir or g_getenv("HOME")
12 - Make sure when including win32dep.h that it is the last header to
13   be included.
15 - Open binary files when reading or writing with 'b' mode.
17   e.g: fopen("somefile", "wb");
19   Not doing so will open files in windows using defaut translation mode. 
20   i.e. newline -> <CR><LF>
22 Paths
23 -----
25 - DATADIR, LOCALEDIR & LIBDIR are defined in wingaim as functions.
26   Doing the following will therefore break the windows build:
28   printf("File in DATADIR is: %s\n", DATADIR G_DIR_SEPARATOR_S "pic.png");
30   it should be:
32   printf("File in DATADIR is: %s%s%s\n", DATADIR, G_DIR_SEPARATOR_S, "pic.png");
34 PLUGINS & PROTOS
35 ----------------
37 - G_MODULE_EXPORT all functions which are to be accessed from outside the
38   scope of its "dll" or "so". (E.G. gaim_plugin_init)
40 - G_MODULE_IMPORT all global variables which are located outside your
41   dynamic library. (E.G. connections)
43   (Not doing this will cause "Memory Access Violations" in Win32)