- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
char *nvram_get(int index, char *name)
{
/* Initial value should be NULL */
char *recv = NULL;
//LIBNV_PRINT("--> nvram_get\n");
nvram_init(index);
recv = nvram_bufget(index, name);
//btw, we don't return NULL anymore!
if (!recv)
recv = "";
//Always need close nvram
nvram_close(index);
return recv;
}
char *nvram_bufget(int index, char *name)
{
int idx;
/* Initial value should be NULL */
static char *ret = NULL;
//LIBNV_PRINT("--> nvram_bufget %d\n", index);
LIBNV_CHECK_INDEX("");
LIBNV_CHECK_VALID();
idx = cache_idx(index, name);
if (-1 != idx) {
if (fb[index].cache[idx].value) {
//duplicate the value in case caller modify it
//Tom.Hung 2010-5-7, strdup() will cause memory leakage
//but if we return value directly, it will cause many other crash or delete value to nvram error.
ret = strdup(fb[index].cache[idx].value);
LIBNV_PRINT("bufget %d '%s'->'%s'\n", index, name, ret);
//btw, we don't return NULL anymore!
if (!ret)
ret = "";
return ret;
}
}
//no default value set?
//btw, we don't return NULL anymore!
LIBNV_PRINT("bufget %d '%s'->''(empty) Warning!\n", index, name);
return "";
}
Кусочек кода из библиотеки работы с nvram для железок на SoC Ralink. Китайцы плакали, кололись о утечки памяти, но продолжали настойчиво мешать указатели на статические строки с указателями на динамически выделенные в куче...
Страйко, можно поднять говнокод 5060?
Субмутанты ж ... и Эльчупанибрея :)
PS: Не пишите пока в этой теме, а то из Сток'а уйдет пост.
:-D
Тссс.
:)
wiistriker@gmail.com
, но это слишком просто.
:)
Снегурочка Снегурочка Снегурочка Снегурочка Снегурочка
В качестве подсказки:
1. Граватар привязывает картинки к е-мейлам.
2. При регистрации на Говнокоде указывается е-мейл.
3. Немного подумаем.
4. PROFIT!!!