sparse / gcc-2.95 / -pedantic fixes
Not everybody has access to the latest and greatest compilers. git-svn-id: https://svn.musicpd.org/mpd/trunk@4595 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
d54df97b06
commit
ae97bcdfa2
|
@ -415,6 +415,7 @@ static void killFromPidFile(char *cmd, int killOption)
|
|||
int main(int argc, char *argv[])
|
||||
{
|
||||
Options options;
|
||||
clock_t start;
|
||||
|
||||
closeAllFDs();
|
||||
|
||||
|
@ -477,7 +478,7 @@ int main(int argc, char *argv[])
|
|||
freeAllInterfaces();
|
||||
closeAllListenSockets();
|
||||
|
||||
clock_t start = clock();
|
||||
start = clock();
|
||||
closeMp3Directory();
|
||||
DEBUG("closeMp3Directory took %f seconds\n",
|
||||
((float)(clock()-start))/CLOCKS_PER_SEC);
|
||||
|
|
|
@ -58,9 +58,9 @@ char *getTagItemString(int type, char *string)
|
|||
else
|
||||
{
|
||||
TagTrackerItem *item = malloc(sizeof(TagTrackerItem));
|
||||
char *key = strdup(string);
|
||||
item->count = 1;
|
||||
item->visited = 0;
|
||||
char * key= strdup(string);
|
||||
InsertInTree(tagTrees[type], key, item);
|
||||
return key;
|
||||
}
|
||||
|
|
62
src/tree.c
62
src/tree.c
|
@ -57,7 +57,7 @@ struct _Tree
|
|||
|
||||
static
|
||||
TreeNode *
|
||||
_MakeNode()
|
||||
_MakeNode(void)
|
||||
{
|
||||
TreeNode * ret = malloc(sizeof(TreeNode));
|
||||
memset(ret, 0, sizeof(TreeNode));
|
||||
|
@ -147,12 +147,12 @@ static
|
|||
TreeNode *
|
||||
_SplitNode(TreeNode * node)
|
||||
{
|
||||
assert(node->count == DATA_PER_NODE);
|
||||
|
||||
TreeNode * newNode = _MakeNode();
|
||||
|
||||
TreeNode *newNode = _MakeNode();
|
||||
int i = DATA_PER_NODE/2;
|
||||
int j = 0;
|
||||
|
||||
assert(node->count == DATA_PER_NODE);
|
||||
|
||||
for (; i < DATA_PER_NODE; i++, j++)
|
||||
{
|
||||
newNode->keyData[j] = node->keyData[i];
|
||||
|
@ -179,9 +179,10 @@ _InsertNodeAndData(Tree * tree,
|
|||
TreeNode * newNode,
|
||||
TreeKeyData keyData)
|
||||
{
|
||||
int j = node->count;
|
||||
|
||||
assert(node->count < DATA_PER_NODE);
|
||||
|
||||
int j = node->count;
|
||||
for (; j > pos; j--)
|
||||
{
|
||||
node->keyData[j] = node->keyData[j-1];
|
||||
|
@ -212,10 +213,10 @@ _AddDataToSplitNodes(Tree * tree,
|
|||
TreeNode * newNode,
|
||||
TreeKeyData keyData)
|
||||
{
|
||||
assert(moreNode->children[0] == NULL);
|
||||
|
||||
TreeKeyData retKeyData;
|
||||
|
||||
assert(moreNode->children[0] == NULL);
|
||||
|
||||
if (pos <= lessNode->count)
|
||||
{
|
||||
_InsertNodeAndData(tree, lessNode, pos, newNode, keyData);
|
||||
|
@ -233,12 +234,13 @@ _AddDataToSplitNodes(Tree * tree,
|
|||
}
|
||||
else
|
||||
{
|
||||
int j;
|
||||
|
||||
pos -= lessNode->count;
|
||||
retKeyData = moreNode->keyData[0];
|
||||
assert(!moreNode->children[0]);
|
||||
|
||||
int j = 0;
|
||||
for (; j < pos; j++)
|
||||
for (j = 0; j < pos; j++)
|
||||
{
|
||||
moreNode->keyData[j] = moreNode->keyData[j+1];
|
||||
moreNode->children[j] = moreNode->children[j+1];
|
||||
|
@ -270,13 +272,13 @@ _InsertAt(TreeIterator * iter, TreeKeyData keyData)
|
|||
|
||||
while (node != NULL)
|
||||
{
|
||||
// see if there's any NULL data in the current node
|
||||
/* see if there's any NULL data in the current node */
|
||||
if (node->count == DATA_PER_NODE)
|
||||
{
|
||||
// no open data slots, split this node!
|
||||
/* no open data slots, split this node! */
|
||||
TreeNode * newNode = _SplitNode(node);
|
||||
|
||||
// insert data in split nodes
|
||||
/* insert data in split nodes */
|
||||
keyData = _AddDataToSplitNodes(iter->tree,
|
||||
node,
|
||||
newNode,
|
||||
|
@ -305,7 +307,7 @@ _InsertAt(TreeIterator * iter, TreeKeyData keyData)
|
|||
}
|
||||
else
|
||||
{
|
||||
// insert the data and newNode
|
||||
/* insert the data and newNode */
|
||||
_InsertNodeAndData(iter->tree,
|
||||
node,
|
||||
pos,
|
||||
|
@ -355,9 +357,10 @@ _DeleteAt(TreeIterator * iter)
|
|||
int pos = iter->which - 1;
|
||||
TreeKeyData * keyData = &(node->keyData[pos]);
|
||||
TreeKeyData keyDataToFree = *keyData;
|
||||
int i;
|
||||
|
||||
{
|
||||
// find the least greater than data to fill the whole!
|
||||
/* find the least greater than data to fill the whole! */
|
||||
if (node->children[pos+1])
|
||||
{
|
||||
TreeNode * child = node->children[++pos];
|
||||
|
@ -371,7 +374,7 @@ _DeleteAt(TreeIterator * iter)
|
|||
keyData = &(child->keyData[0]);
|
||||
node = child;
|
||||
}
|
||||
// or the greatest lesser than data to fill the whole!
|
||||
/* or the greatest lesser than data to fill the whole! */
|
||||
else if (node->children[pos])
|
||||
{
|
||||
TreeNode * child = node->children[pos];
|
||||
|
@ -391,25 +394,25 @@ _DeleteAt(TreeIterator * iter)
|
|||
}
|
||||
}
|
||||
|
||||
// move data nodes over, we're at a leaf node, so we can ignore
|
||||
// children
|
||||
int i = keyData - node->keyData;;
|
||||
/* move data nodes over, we're at a leaf node, so we can ignore
|
||||
children */
|
||||
i = keyData - node->keyData;
|
||||
for (; i < node->count-1; i++)
|
||||
{
|
||||
node->keyData[i] = node->keyData[i+1];
|
||||
}
|
||||
_ClearKeyData(&(node->keyData[--node->count]));
|
||||
|
||||
// merge the nodes from the bottom up which have too few data
|
||||
/* merge the nodes from the bottom up which have too few data */
|
||||
while (node->count < (DATA_PER_NODE/2))
|
||||
{
|
||||
// if we're not the root
|
||||
/* if we're not the root */
|
||||
if (node->parent)
|
||||
{
|
||||
TreeNode ** child = &(node->parent->children[pos]);
|
||||
assert(node->parent->children[pos] == node);
|
||||
|
||||
// check siblings for extra data
|
||||
/* check siblings for extra data */
|
||||
if (pos < node->parent->count &&
|
||||
(*(child+1))->count > (DATA_PER_NODE/2))
|
||||
{
|
||||
|
@ -427,7 +430,7 @@ _DeleteAt(TreeIterator * iter)
|
|||
}
|
||||
node->parent->keyData[pos] =
|
||||
(*child)->keyData[0];
|
||||
int i = 0;
|
||||
i = 0;
|
||||
for(; i < (*child)->count-1; i++)
|
||||
{
|
||||
(*child)->keyData[i] =
|
||||
|
@ -453,7 +456,7 @@ _DeleteAt(TreeIterator * iter)
|
|||
(*(child-1))->count>(DATA_PER_NODE/2))
|
||||
{
|
||||
child--;
|
||||
int i = node->count++;
|
||||
i = node->count++;
|
||||
for(; i > 0; i--)
|
||||
{
|
||||
node->keyData[i] = node->keyData[i-1];
|
||||
|
@ -484,7 +487,7 @@ _DeleteAt(TreeIterator * iter)
|
|||
_ClearKeyData(
|
||||
&((*child)->keyData[(*child)->count]));
|
||||
}
|
||||
// merge with one of our siblings
|
||||
/* merge with one of our siblings */
|
||||
else
|
||||
{
|
||||
if (pos < node->parent->count)
|
||||
|
@ -511,7 +514,7 @@ _DeleteAt(TreeIterator * iter)
|
|||
node = *child;
|
||||
}
|
||||
|
||||
int i = pos;
|
||||
i = pos;
|
||||
for(; i < node->parent->count-1; i++)
|
||||
{
|
||||
node->parent->keyData[i] =
|
||||
|
@ -532,7 +535,7 @@ _DeleteAt(TreeIterator * iter)
|
|||
pos = node->parentPos;
|
||||
}
|
||||
}
|
||||
// this is a root node
|
||||
/* this is a root node */
|
||||
else
|
||||
{
|
||||
if (node->count == 0)
|
||||
|
@ -654,8 +657,9 @@ GetTreeKeyData(TreeIterator * iter)
|
|||
int
|
||||
InsertInTree(Tree * tree, void * key, void * data)
|
||||
{
|
||||
TreeKeyData keyData = {key, data};
|
||||
TreeKeyData keyData;
|
||||
TreeIterator iter;
|
||||
|
||||
_SetIteratorToRoot(tree, &iter);
|
||||
|
||||
if (_Find(&iter, key))
|
||||
|
@ -663,6 +667,8 @@ InsertInTree(Tree * tree, void * key, void * data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
keyData.key = key;
|
||||
keyData.data = data;
|
||||
_InsertAt(&iter, keyData);
|
||||
tree->size++;
|
||||
|
||||
|
|
Loading…
Reference in New Issue