1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-12-23 19:39:06 +00:00

smapi review

* rewrote some functions in src/smapi.c for more
  simplicity and less malloc/free hell
* added object cleanup in free_text_objects(),
  valgrind said it was missing
* fixed indenting in construct_text_object()
* fixed use of spaced_print() in generate_text_internal()


git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@1028 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
Phil 2008-03-22 18:08:47 +00:00
parent 94bb46b868
commit c1cb65ff6d
2 changed files with 30 additions and 28 deletions

View File

@ -2189,6 +2189,16 @@ static void free_text_objects(unsigned int count, struct text_object *objs)
info.users.times = 0;
}
break;
#ifdef SMAPI
case OBJ_smapi:
case OBJ_smapi_bat_perc:
free(objs[i].data.s);
break;
case OBJ_if_smapi_bat_installed:
free(objs[i].data.ifblock.s);
free(objs[i].data.ifblock.str);
break;
#endif
#ifdef MPD
case OBJ_mpd_title:
case OBJ_mpd_artist:
@ -3497,14 +3507,14 @@ static struct text_object *construct_text_object(const char *s,
if (blockdepth >= MAX_IF_BLOCK_DEPTH) {
CRIT_ERR("MAX_IF_BLOCK_DEPTH exceeded");
}
if (!arg) {
ERR("if_smapi_bat_installed needs an argument");
obj->data.ifblock.s = 0;
} else
obj->data.ifblock.s = strdup(arg);
blockstart[blockdepth] = object_count;
obj->data.ifblock.pos = object_count + 2;
blockdepth++;
if (!arg) {
ERR("if_smapi_bat_installed needs an argument");
obj->data.ifblock.s = 0;
} else
obj->data.ifblock.s = strdup(arg);
blockstart[blockdepth] = object_count;
obj->data.ifblock.pos = object_count + 2;
blockdepth++;
END OBJ(smapi_bat_perc, 0)
if (arg)
obj->data.s = strdup(arg);
@ -6004,7 +6014,7 @@ head:
if(obj->data.s && sscanf(obj->data.s, "%i", &idx) == 1) {
val = smapi_bat_installed(idx) ?
smapi_get_bat_int(idx, "remaining_percent") : 0;
spaced_print(p, p_max_size, "%*d", pad_percents, "smapi_bat_perc", val);
spaced_print(p, p_max_size, "%*d", 4, "smapi_bat_perc", pad_percents, val);
} else
ERR("argument to smapi_bat_perc must be an integer");
}

View File

@ -30,44 +30,36 @@ int smapi_bat_installed(int idx)
{
char path[128];
struct stat sb;
char *str;
int ret = 0;
snprintf(path, 127, SYS_SMAPI_PATH "/BAT%i", idx);
if (!stat(path, &sb) && (sb.st_mode & S_IFMT) == S_IFDIR) {
snprintf(path, 127, SYS_SMAPI_PATH "/BAT%i/installed", idx);
str = smapi_read_str(path);
if(str && ! strcmp(str, "1"))
return 1;
ret = (smapi_read_int(path) == 1) ? 1 : 0;
}
return 0;
return ret;
}
char *smapi_read_str(char *path)
{
FILE *fp;
char *str;
if ((fp = fopen(path, "r")) == NULL)
return NULL;
if (fscanf(fp, "%as\n", &str) != 1) {
char *str = NULL;
if ((fp = fopen(path, "r")) != NULL) {
fscanf(fp, "%as\n", &str);
fclose(fp);
return NULL;
}
fclose(fp);
return str;
}
int smapi_read_int(char *path)
{
FILE *fp;
int i;
if ((fp = fopen(path, "r")) == NULL)
return 0;
if (fscanf(fp, "%i\n", &i) != 1) {
int i = 0;
if ((fp = fopen(path, "r")) != NULL) {
fscanf(fp, "%i\n", &i);
fclose(fp);
return 0;
}
fclose(fp);
return i;
}
@ -115,9 +107,9 @@ char *smapi_get_bat_val(char *args)
char *smapi_get_val(char *args)
{
char *str;
char str[128];
if(!args || sscanf(args, "%as", &str) <= 0)
if(!args || sscanf(args, "%127s", str) <= 0)
return NULL;
if(!strcmp(str, "bat"))