home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Online / Dial / source / listhooks.c < prev    next >
C/C++ Source or Header  |  2000-01-22  |  2KB  |  91 lines

  1. #include <libraries/locale.h>
  2. #include <utility/hooks.h>
  3. #include <strings.h>
  4. #include <clib/utility_protos.h>
  5. #include "cat.h"
  6.  
  7. extern struct Locale *locale;
  8.  
  9. struct ListEntry
  10. {
  11.     char    Name[64];
  12.     char    Number[64];
  13. };
  14.  
  15. struct CallByCallEntry
  16. {
  17.     char    Pattern[64];
  18.     char    Number[64];
  19. };
  20.  
  21. APTR list_dsplfunc(struct Hook *a0, APTR *a2, APTR a1)
  22. {
  23.     if (a1)
  24.     {
  25.         *a2++=((struct ListEntry*)a1)->Name;
  26.         *a2=((struct ListEntry*)a1)->Number;
  27.     }
  28.     else
  29.     {
  30.         *a2++=GetString(MSG_Name);
  31.         *a2=GetString(MSG_Number);
  32.     }
  33.     return NULL;
  34. }
  35.  
  36. APTR list_cmpfunc(struct Hook *a0, APTR a2, APTR a1)
  37. {
  38.     if (locale)
  39.         return (APTR)StrnCmp(locale, a1, a2, -1, SC_COLLATE2);    /* use locale comparison, if available */
  40.     else
  41.         return (APTR)Stricmp(a1,a2);         /* directly compare structure, because Name-String is first entry */
  42. }
  43.  
  44.  
  45. APTR list_consfunc(struct Hook *a0, APTR a2, APTR a1)
  46. {
  47.     struct ListEntry *NewEntry = (struct ListEntry*)malloc(sizeof(struct ListEntry));
  48.  
  49.     memcpy(NewEntry, a1, sizeof(struct ListEntry));
  50.  
  51.     return NewEntry;
  52. }
  53.  
  54. APTR list_desfunc(struct Hook *a0, APTR a2, APTR a1)
  55. {
  56.     free(a1);
  57. }
  58.  
  59.     /* CallByCall Listview */
  60.  
  61. APTR cbc_dsplfunc(struct Hook *a0, APTR *a2, APTR a1)
  62. {
  63.     if (a1)
  64.     {
  65.         *a2++=((struct CallByCallEntry*)a1)->Pattern;
  66.         *a2=((struct CallByCallEntry*)a1)->Number;
  67.     }
  68.     else
  69.     {
  70.         *a2++=GetString(MSG_PATTERN);
  71.         *a2=GetString(MSG_Number);
  72.     }
  73.     return NULL;
  74. }
  75.  
  76. APTR cbc_cmpfunc(struct Hook *a0, APTR a2, APTR a1)
  77. {
  78.     return (APTR)(strlen(a2)-strlen(a1));
  79. }
  80.  
  81.  
  82. APTR cbc_consfunc(struct Hook *a0, APTR a2, APTR a1)
  83. {
  84.     struct CallByCallEntry *NewEntry = (struct ListEntry*)malloc(sizeof(struct CallByCallEntry));
  85.  
  86.     memcpy(NewEntry, a1, sizeof(struct CallByCallEntry));
  87.  
  88.     return NewEntry;
  89. }
  90.  
  91.