Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
/* 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;
}