killpresence/killpresence.c
author Mikael Berthe <mikael@lilotux.net>
Wed, 31 Mar 2010 22:58:04 +0200
changeset 19 85296f26810e
child 20 4fbed301c014
permissions -rw-r--r--
Add module killpresence
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
/*
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
 * Copyright (C) 2010 Mikael Berthe <mikael@lilotux.net>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
  Module "libkillpresence" -- Ignore current presence of an item
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
This module is free software: you can redistribute it and/or modify
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
it under the terms of the GNU General Public License as published by
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
the Free Software Foundation, either version 2 of the License, or
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
(at your option) any later version.
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
This program is distributed in the hope that it will be useful,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
but WITHOUT ANY WARRANTY; without even the implied warranty of
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
GNU General Public License for more details.
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
You should have received a copy of the GNU General Public License
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
along with this program.  If not, see <http://www.gnu.org/licenses/>.
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
*/
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
#include <string.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
#include <mcabber/modules.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
#include <mcabber/commands.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
#include <mcabber/compl.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
#include <mcabber/roster.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
#include <mcabber/screen.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
#include <mcabber/utils.h>
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
static void killpresence_init(void);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
static void killpresence_uninit(void);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
/* Module description */
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
module_info_t info_killpresence = {
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
        .branch         = MCABBER_BRANCH,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
        .api            = MCABBER_API_VERSION,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
        .version        = "0.01",
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
        .description    = "Ignore an item's current presence",
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
        .requires       = NULL,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
        .init           = killpresence_init,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
        .uninit         = killpresence_uninit,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
        .next           = NULL,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
};
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
static void do_killpresence(char *args)
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
{
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
  char *jid_utf8, *res;
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
  if (!args || !*args)
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
    return;
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
  jid_utf8 = to_utf8(args);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
  if (!jid_utf8)
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
    return;
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
  res = strchr(jid_utf8, JID_RESOURCE_SEPARATOR);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
  if (res)
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
    *res++ = '\0';
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
  else
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
    return;
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
  roster_setstatus(jid_utf8, res, 0,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
                   offline, "Killed by killpresence.",
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    64
                   0L, role_none, affil_none, NULL);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
  buddylist_build();
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
  scr_draw_roster();
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
  g_free(jid_utf8);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
}
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    70
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    71
/* Initialization */
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    72
static void killpresence_init(void)
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    73
{
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
  /* Add command */
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
  cmd_add("killpresence", "Ignore presence", COMPL_JID, 0,
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
          do_killpresence, NULL);
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    77
}
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    78
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    79
/* Uninitialization */
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    80
static void killpresence_uninit(void)
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    81
{
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    82
  /* Unregister command */
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    83
  cmd_del("killpresence");
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
}
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
85296f26810e Add module killpresence
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
/* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2:  For Vim users... */