dat.c - jacc - Jabber/XMPP client for Plan 9
 (HTM) git clone git://r-36.net/jacc
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       dat.c (1228B)
       ---
            1 /*
            2  * Copy me if you can.
            3  * by 20h
            4  */
            5 
            6 #include <u.h>
            7 #include <libc.h>
            8 #include "dat.h"
            9 
           10 void *
           11 reallocj(void *p, int s, short d)
           12 {
           13         p = realloc(p, s);
           14         if(p == nil)
           15                 sysfatal("realloc: %r");
           16 
           17         if(d != 0)
           18                 memset(p, 0, s);
           19 
           20         return (void *)p;
           21 }
           22 
           23 char *
           24 setwindowlbl(char *w)
           25 {
           26         int s;
           27 
           28         s = open("/dev/label", OWRITE);
           29         if(s < 0)
           30                 return nil;
           31 
           32         write(s, w, strlen(w));
           33 
           34         close(s);
           35         return w;
           36 }
           37 
           38 char *
           39 getwindowlbl(void)
           40 {
           41         int s;
           42         char *ret;
           43         short i;
           44 
           45         s = open("/dev/label", OREAD);
           46         if(s < 0)
           47                 return nil;
           48 
           49         i = 0;
           50         ret = malloc(0);
           51         while(realloc(ret, ++i) != nil && read(s, &ret[i - 1], 1) > 0 &&
           52                         i < 513);
           53 
           54         ret[i - 1] = '\0';
           55 
           56         close(s);
           57         return ret;
           58 }
           59 
           60 char *
           61 mktmstmp(char bord, char bord_e)
           62 {
           63         Tm *tim;
           64         char *ret;
           65 
           66         ret = reallocj(nil, 32, 2);
           67         tim = localtime(time(0));
           68         snprint(ret, 31, "%c%.2d:%.2d%c ", bord, tim->hour, tim->min, bord_e);
           69 
           70         return ret;
           71 }
           72 
           73 char *
           74 printjid(char *user, char *serv, char *reso)
           75 {
           76         char *ret;
           77         int i;
           78 
           79         if(user == nil || serv == nil)
           80                 return nil;
           81 
           82         i = strlen(user) + strlen(serv) + 3 + ((reso != nil) ? strlen(reso) : 0);
           83 
           84         ret = reallocj(nil, i, 2);
           85         snprint(ret, i, "%s@%s%s%s", user, serv, (reso != nil) ? "/" : "\0",
           86                                 ((reso != nil) ? reso : ""));
           87 
           88         return ret;
           89 }