Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

glib-missing.c File Reference


Detailed Description

Missing functions in the Glib 1.2.

Functions that should be in glib-1.2 but are not. They are all prefixed with "gm_" as in "Glib Missing".

We also include FIXED versions of glib-1.2 routines that are broken and make sure those glib versions are never called directly.

Author:
Raphael Manfredi
Date:
2003

#include "common.h"
#include "glib-missing.h"
#include "iovec.h"
#include "misc.h"
#include "utf8.h"
#include "override.h"

Data Structures

struct  gm_hash_table_foreach_keys_helper

Functions

GSList * gm_slist_insert_after (GSList *list, GSList *lnk, gpointer data)
 Insert `item' after `lnk' in list `list'.
GList * gm_list_insert_after (GList *list, GList *lnk, gpointer data)
 Insert `item' after `lnk' in list `list'.
size_t buf_vprintf (gchar *dst, size_t size, const gchar *fmt, va_list args)
 Perform the vsnprintf() operation for the gm_vsnprintf() and gm_snprintf() routines.
size_t gm_vsnprintf (gchar *dst, size_t size, const gchar *fmt, va_list args)
 This is the smallest common denominator between the g_vsnprintf() from GLib 1.2 and the one from GLib 2.x.
size_t gm_snprintf (gchar *dst, size_t size, const gchar *fmt,...)
 This is the smallest common denominator between the g_snprintf() from GLib 1.2 and the one from GLib 2.x.
void gm_savemain (gint argc, gchar **argv, gchar **env)
 Save the original main() arguments.
size_t str_vec_count (gchar *strv[])
iovec gm_setproctitle_init (gint argc, gchar *argv[], gchar *env_ptr[])
 Compute the length of the exec() arguments that were given to us.
void gm_setproctitle (const gchar *title)
 Change the process title as seen by "ps".
const gchar * gm_getproctitle (void)
 Return the process title as seen by "ps".
gchar * gm_sanitize_filename (const gchar *filename, gboolean no_spaces, gboolean no_evil)
 Creates a valid and sanitized filename from the supplied string.
gchar * gm_string_finalize (GString *gs)
 Frees the GString context but keeps the string data itself and returns it.
gboolean gm_slist_is_looping (const GSList *slist)
 Detects a loop in a singly-linked list.
void gm_hash_table_all_keys_helper (gpointer key, gpointer unused_value, gpointer udata)
GSList * gm_hash_table_all_keys (GHashTable *ht)
void gm_hash_table_foreach_keys_helper (gpointer key, gpointer unused_value, gpointer udata)
void gm_hash_table_foreach_key (GHashTable *ht, GFunc func, gpointer user_data)
 Apply function to all the keys of the hash table.

Variables

gint orig_argc
gchar ** orig_argv
gchar ** orig_env


Function Documentation

size_t buf_vprintf gchar *  dst,
size_t  size,
const gchar *  fmt,
va_list  args
[inline, static]
 

Perform the vsnprintf() operation for the gm_vsnprintf() and gm_snprintf() routines.

The resulting string will not be larger than (size - 1) and the returned value is always the length of this string. Thus it will not be equal or greater than size either.

Parameters:
dst The destination buffer to hold the resulting string.
size The size of the destination buffer.
fmt The printf-format string.
args The variable argument list.
Returns:
The length of the resulting string.

const gchar* gm_getproctitle void   ) 
 

Return the process title as seen by "ps".

GSList* gm_hash_table_all_keys GHashTable *  ht  ) 
 

Returns:
list of all the hash table keys.

void gm_hash_table_all_keys_helper gpointer  key,
gpointer  unused_value,
gpointer  udata
[static]
 

void gm_hash_table_foreach_key GHashTable *  ht,
GFunc  func,
gpointer  user_data
 

Apply function to all the keys of the hash table.

void gm_hash_table_foreach_keys_helper gpointer  key,
gpointer  unused_value,
gpointer  udata
[static]
 

GList* gm_list_insert_after GList *  list,
GList *  lnk,
gpointer  data
 

Insert `item' after `lnk' in list `list'.

If `lnk' is NULL, insertion happens at the head.

Returns:
new list head.

gchar* gm_sanitize_filename const gchar *  filename,
gboolean  no_spaces,
gboolean  no_evil
 

Creates a valid and sanitized filename from the supplied string.

For most Unix-like platforms anything goes but for security reasons, shell meta characters are replaced by harmless characters.

Parameters:
filename the suggested filename.
no_spaces if TRUE, spaces are replaced with underscores.
no_evil if TRUE, "evil" characters are replaced with underscores.
Returns:
a newly allocated string or ``filename'' if it was a valid filename already.

void gm_savemain gint  argc,
gchar **  argv,
gchar **  env
 

Save the original main() arguments.

void gm_setproctitle const gchar *  title  ) 
 

Change the process title as seen by "ps".

struct iovec gm_setproctitle_init gint  argc,
gchar *  argv[],
gchar *  env_ptr[]
[static]
 

Compute the length of the exec() arguments that were given to us.

Parameters:
argc The original ``argc'' argument from main().
argv The original ``argv'' argument from main().
env_ptr The original ``env'' variable.

GSList* gm_slist_insert_after GSList *  list,
GSList *  lnk,
gpointer  data
 

Insert `item' after `lnk' in list `list'.

If `lnk' is NULL, insertion happens at the head.

Returns:
new list head.

gboolean gm_slist_is_looping const GSList *  slist  ) 
 

Detects a loop in a singly-linked list.

Returns:
TRUE if the given slist contains a loop; FALSE otherwise.

size_t gm_snprintf gchar *  dst,
size_t  size,
const gchar *  fmt,
  ...
 

This is the smallest common denominator between the g_snprintf() from GLib 1.2 and the one from GLib 2.x.

The older version has no defined return value, it could be the resulting string length or the size of the buffer minus one required to hold the resulting string. This version always returns the length of the resulting string unlike the snprintf() from ISO C99.

Note:
: The function name might be misleading. You cannot measure the required buffer size with this!
Parameters:
dst The destination buffer to hold the resulting string.
size The size of the destination buffer. It must not exceed INT_MAX.
fmt The printf-format string.
Returns:
The length of the resulting string.

gchar* gm_string_finalize GString *  gs  ) 
 

Frees the GString context but keeps the string data itself and returns it.

With Gtk+ 2.x g_string_free(gs, FALSE) would do the job but the variant in Gtk+ 1.2 returns nothing.

Returns:
The string data.

size_t gm_vsnprintf gchar *  dst,
size_t  size,
const gchar *  fmt,
va_list  args
 

This is the smallest common denominator between the g_vsnprintf() from GLib 1.2 and the one from GLib 2.x.

The older version has no defined return value, it could be the resulting string length or the size of the buffer minus one required to hold the resulting string. This version always returns the length of the resulting string unlike the vsnprintf() from ISO C99.

Note:
: The function name might be misleading. You cannot measure the required buffer size with this!
Parameters:
dst The destination buffer to hold the resulting string.
size The size of the destination buffer. It must not exceed INT_MAX.
fmt The printf-format string.
args The variable argument list.
Returns:
The length of the resulting string.

size_t str_vec_count gchar *  strv[]  )  [inline, static]
 


Variable Documentation

gint orig_argc [static]
 

gchar** orig_argv [static]
 

gchar** orig_env [static]
 


Generated on Sat Jun 30 17:53:26 2007 for gtk-gnutella by  doxygen 1.3.9.1