LOG_FREE((asprintf(&tmp,"Desktop file %s uses the subcategory '%s', but a main category must preceed it",path,catlist[i]),tmp),error),valid=false;
elseif(!ce->parents[1])
LOG_FREE((asprintf(&tmp,"Desktop file %s uses the subcategory '%s', but the category '%s' must preceed it",path,catlist[i],ce->parents[0]),tmp),error),valid=false;
elseif(!ce->parents[2])
LOG_FREE((asprintf(&tmp,"Desktop file %s uses the subcategory '%s', but the category '%s' or '%s' must preceed it",path,catlist[i],ce->parents[0],ce->parents[1]),tmp),error),valid=false;
else
LOG_FREE((asprintf(&tmp,"Desktop file %s uses the subcategory '%s', but the category '%s', '%s' or '%s' must preceed it",path,catlist[i],ce->parents[0],ce->parents[1],ce->parents[2]),tmp),error),valid=false;