return 0;
}
-/* This can go into some header file so others can benefit from it. */
-#define SNPRINTF_FAILURE(ret, rem, offset, len) \
-do { \
- len += ret; \
- if (ret > rem) \
- ret = rem; \
- offset += ret; \
- rem -= ret; \
-} while (0)
-
/* This generates the logging command string for VTY. */
const char *log_vty_command_string(const struct log_info *info)
{
ret = snprintf(str + offset, rem, "logging level (");
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
for (i = 0; i < info->num_cat; i++) {
int j, name_len = strlen(info->cat[i].name)+1;
ret = snprintf(str + offset, rem, "%s|", name+1);
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
}
offset--; /* to remove the trailing | */
rem++;
ret = snprintf(str + offset, rem, ") (");
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
for (i = 0; i < LOGLEVEL_DEFS; i++) {
int j, loglevel_str_len = strlen(loglevel_strs[i].str)+1;
ret = snprintf(str + offset, rem, "%s|", loglevel_str);
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
}
offset--; /* to remove the trailing | */
rem++;
ret = snprintf(str + offset, rem, ")");
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
err:
return str;
}
"Set the log level for a specified category\n");
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
for (i = 0; i < info->num_cat; i++) {
ret = snprintf(str + offset, rem, "%s\n",
info->cat[i].description);
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
}
for (i = 0; i < LOGLEVEL_DEFS; i++) {
ret = snprintf(str + offset, rem, "%s\n",
loglevel_descriptions[i]);
if (ret < 0)
goto err;
- SNPRINTF_FAILURE(ret, rem, offset, len);
+ OSMO_SNPRINTF_RET(ret, rem, offset, len);
}
err:
return str;