static char * iniOptionValueToString (CompDisplay *d, CompOptionValue *value, CompOptionType type) { char tmp[MAX_OPTION_LENGTH]; tmp[0] = '\0'; switch (type) { case CompOptionTypeBool: case CompOptionTypeInt: snprintf(tmp, 256, "%i", (int)value->i); break; case CompOptionTypeFloat: snprintf(tmp, 256, "%f", value->f); break; case CompOptionTypeString: snprintf (tmp, MAX_OPTION_LENGTH, "%s", strdup (value->s)); break; case CompOptionTypeColor: snprintf (tmp, 10, "%s", colorToString (value->c)); break; case CompOptionTypeKey: return keyActionToString (d, &value->action); break; case CompOptionTypeButton: return buttonActionToString (d, &value->action); break; case CompOptionTypeEdge: return edgeMaskToString (value->action.edgeMask); break; case CompOptionTypeBell: snprintf (tmp, 256, "%i", (int) value->action.bell); break; case CompOptionTypeMatch: { char *s = matchToString (&value->match); snprintf (tmp, MAX_OPTION_LENGTH, "%s", s); free(s); } break; default: break; } return strdup (tmp); }
static QString kconfigValueToString (CompObject *object, CompOptionType type, CompOptionValue *value) { QString str; switch (type) { case CompOptionTypeBool: str = QString::number (value->b ? TRUE : FALSE); break; case CompOptionTypeFloat: str = QString::number (value->f); break; case CompOptionTypeString: str = QString (value->s); break; case CompOptionTypeColor: { char *color; color = colorToString (value->c); if (color) { str = QString (color); free (color); } } break; case CompOptionTypeKey: { char *action = NULL; while (object && object->type != COMP_OBJECT_TYPE_DISPLAY) object = object->parent; if (object) action = keyActionToString (GET_CORE_DISPLAY (object), &value->action); if (action) { str = QString (action); free (action); } } break; case CompOptionTypeButton: { char *action = NULL; while (object && object->type != COMP_OBJECT_TYPE_DISPLAY) object = object->parent; if (object) action = buttonActionToString (GET_CORE_DISPLAY (object), &value->action); if (action) { str = QString (action); free (action); } } break; case CompOptionTypeEdge: { char *edge; edge = edgeMaskToString (value->action.edgeMask); if (edge) { str = QString (edge); free (edge); } } break; case CompOptionTypeBell: str = QString::number (value->action.bell ? TRUE : FALSE); break; case CompOptionTypeMatch: { char *match; match = matchToString (&value->match); if (match) { str = QString (match); free (match); } } default: break; } return str; }
/* MULTIDPYERROR: only works with one or less displays present */ static char * fuseGetStringFromInode(FuseInode *inode) { CompOption *option; char str[256]; if (!inode->parent) return NULL; option = fuseGetOptionFromInode(inode->parent); if (!option) return NULL; if (inode->flags & FUSE_INODE_FLAG_TRUNC) return strdup(""); if (inode->type & FUSE_INODE_TYPE_TYPE) { return strdup(optionTypeToString(option->type)); } else if (inode->type & (FUSE_INODE_TYPE_VALUE | FUSE_INODE_TYPE_ITEM_VALUE)) { CompOptionValue *value = NULL; CompOptionType type; if (inode->type & FUSE_INODE_TYPE_ITEM_VALUE) { int i; if (sscanf(inode->name, "value%d", &i)) { if (i < option->value.list.nValue) { value = &option->value.list.value[i]; type = option->value.list.type; } } } else { value = &option->value; type = option->type; } if (value) { switch (type) { case CompOptionTypeBool: return strdup(value->b ? "true" : "false"); case CompOptionTypeInt: snprintf(str, 256, "%d", value->i); return strdup(str); case CompOptionTypeFloat: snprintf(str, 256, "%f", value->f); return strdup(str); case CompOptionTypeString: return strdup(value->s); case CompOptionTypeColor: return colorToString(value->c); case CompOptionTypeKey: if (core.displays) return keyActionToString(core.displays, &value->action); case CompOptionTypeButton: if (core.displays) return buttonActionToString(core.displays, &value->action); case CompOptionTypeEdge: return edgeMaskToString(value->action.edgeMask); case CompOptionTypeBell: return strdup(value->action.bell ? "true" : "false"); case CompOptionTypeMatch: return matchToString(&value->match); default: break; } } } else if (inode->type & FUSE_INODE_TYPE_MIN) { if (option->type == CompOptionTypeInt) snprintf(str, 256, "%d", option->rest.i.min); else snprintf(str, 256, "%f", option->rest.f.min); return strdup(str); } else if (inode->type & FUSE_INODE_TYPE_MAX) { if (option->type == CompOptionTypeInt) snprintf(str, 256, "%d", option->rest.i.max); else snprintf(str, 256, "%f", option->rest.f.max); return strdup(str); } else if (inode->type & FUSE_INODE_TYPE_PRECISION) { snprintf(str, 256, "%f", option->rest.f.precision); return strdup(str); } else if (inode->type & FUSE_INODE_TYPE_ITEM_COUNT) { snprintf(str, 256, "%d", option->value.list.nValue); return strdup(str); } else if (inode->type & FUSE_INODE_TYPE_ITEM_TYPE) { return strdup(optionTypeToString(option->value.list.type)); } return NULL; }