{
unsigned int probe_address = 0;
unsigned int probe_decrement = 0;
+// char *temp;
make_hash(key, &probe_address, &probe_decrement, NAME_HASH_PRIME);
while(name_hashtable[probe_address] != NULL) {
}
}
name_hashtable[probe_address] = xstrdup(key);
-
return(probe_address);
}
int tmp_int;
int ver_num1;
int ver_num2;
+ int ret;
if (version1 == NULL) {
version1 = xstrdup("");
free(name1_char);
free(name2_char);
if (tmp_int != 0) {
- return(tmp_int);
+ ret = tmp_int;
+ goto cleanup_version_compare_part;
}
/* Compare digits */
free(name1_char);
free(name2_char);
if (ver_num1 < ver_num2) {
- return(-1);
+ ret = -1;
+ goto cleanup_version_compare_part;
}
else if (ver_num1 > ver_num2) {
- return(1);
+ ret = 1;
+ goto cleanup_version_compare_part;
}
}
- return(0);
+ ret = 0;
+cleanup_version_compare_part:
+ return(ret);
}
/* if ver1 < ver2 return -1,
{
common_node_t *new_node = (common_node_t *) xcalloc(1, sizeof(common_node_t));
- char *field_name = xmalloc(sizeof(char *));
- char *field_value = xmalloc(sizeof(char *));
+ char **field_name = xmalloc(sizeof(char *));
+ char **field_value = xmalloc(sizeof(char *));
int field_start = 0;
int num = -1;
int buffer_length = strlen(control_buffer);
new_node->version = search_name_hashtable("unknown");
while (field_start < buffer_length) {
- field_start += read_package_field(&control_buffer[field_start], &field_name, &field_value);
+ field_start += read_package_field(&control_buffer[field_start], field_name, field_value);
- if (field_name == NULL) {
+ if (*field_name == NULL) {
goto fill_package_struct_cleanup; // Oh no, the dreaded goto statement !!
}
- if (strcmp(field_name, "Package") == 0) {
- new_node->name = search_name_hashtable(field_value);
+ if (strcmp(*field_name, "Package") == 0) {
+ new_node->name = search_name_hashtable(*field_value);
}
- else if (strcmp(field_name, "Version") == 0) {
- new_node->version = search_name_hashtable(field_value);
+ else if (strcmp(*field_name, "Version") == 0) {
+ new_node->version = search_name_hashtable(*field_value);
}
- else if (strcmp(field_name, "Pre-Depends") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_PRE_DEPENDS);
+ else if (strcmp(*field_name, "Pre-Depends") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_PRE_DEPENDS);
}
- else if (strcmp(field_name, "Depends") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_DEPENDS);
+ else if (strcmp(*field_name, "Depends") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_DEPENDS);
}
- else if (strcmp(field_name, "Replaces") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_REPLACES);
+ else if (strcmp(*field_name, "Replaces") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_REPLACES);
}
- else if (strcmp(field_name, "Provides") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_PROVIDES);
+ else if (strcmp(*field_name, "Provides") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_PROVIDES);
}
- else if (strcmp(field_name, "Conflicts") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_CONFLICTS);
+ else if (strcmp(*field_name, "Conflicts") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_CONFLICTS);
}
- else if (strcmp(field_name, "Suggests") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_SUGGESTS);
+ else if (strcmp(*field_name, "Suggests") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_SUGGESTS);
}
- else if (strcmp(field_name, "Recommends") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_RECOMMENDS);
+ else if (strcmp(*field_name, "Recommends") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_RECOMMENDS);
}
- else if (strcmp(field_name, "Enhances") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_ENHANCES);
+ else if (strcmp(*field_name, "Enhances") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_ENHANCES);
}
fill_package_struct_cleanup:
- free(field_name);
- free(field_value);
+ if (*field_name) {
+ free(*field_name);
+ }
+ if (*field_value) {
+ free(*field_value);
+ }
}
+ free(field_name);
+ free(field_value);
+
if (new_node->version == search_name_hashtable("unknown")) {
free_package(new_node);
return(-1);
new_status = (char *) xmalloc(want_len + flag_len + status_len + 3);
sprintf(new_status, "%s %s %s", name_hashtable[want], name_hashtable[flag], name_hashtable[status]);
status_hashtable[status_node_num]->status = search_name_hashtable(new_status);
+ free(new_status);
return;
}
}
else if (strcmp("config-files", name_hashtable[state_status]) == 0) {
/* only change the status line */
-// buffer_length = strlen(control_buffer);
while (1) {
char *field_name;
char *field_value;
}
i++;
}
+ free(conflicts);
return(TRUE);
}
/* If the file doesnt exist is isnt a fatal */
if (lstat(script_path, &path_stat) < 0) {
+ free(script_path);
return(EXIT_SUCCESS);
} else {
+ free(script_path);
return(system(script_path));
}
}
/* change status */
set_status(status_num, "install", 1);
set_status(status_num, "unpacked", 3);
+
+ free(info_prefix);
}
void configure_package(deb_file_t *deb_file)
write_status_file(deb_file);
+ for (i = 0; i < deb_count; i++) {
+ free(deb_file[i]->control_file);
+ free(deb_file[i]->filename);
+ free(deb_file[i]);
+ }
+ free(deb_file);
+
for (i = 0; i < NAME_HASH_PRIME; i++) {
if (name_hashtable[i] != NULL) {
free(name_hashtable[i]);
{
unsigned int probe_address = 0;
unsigned int probe_decrement = 0;
+// char *temp;
make_hash(key, &probe_address, &probe_decrement, NAME_HASH_PRIME);
while(name_hashtable[probe_address] != NULL) {
}
}
name_hashtable[probe_address] = xstrdup(key);
-
return(probe_address);
}
int tmp_int;
int ver_num1;
int ver_num2;
+ int ret;
if (version1 == NULL) {
version1 = xstrdup("");
free(name1_char);
free(name2_char);
if (tmp_int != 0) {
- return(tmp_int);
+ ret = tmp_int;
+ goto cleanup_version_compare_part;
}
/* Compare digits */
free(name1_char);
free(name2_char);
if (ver_num1 < ver_num2) {
- return(-1);
+ ret = -1;
+ goto cleanup_version_compare_part;
}
else if (ver_num1 > ver_num2) {
- return(1);
+ ret = 1;
+ goto cleanup_version_compare_part;
}
}
- return(0);
+ ret = 0;
+cleanup_version_compare_part:
+ return(ret);
}
/* if ver1 < ver2 return -1,
{
common_node_t *new_node = (common_node_t *) xcalloc(1, sizeof(common_node_t));
- char *field_name = xmalloc(sizeof(char *));
- char *field_value = xmalloc(sizeof(char *));
+ char **field_name = xmalloc(sizeof(char *));
+ char **field_value = xmalloc(sizeof(char *));
int field_start = 0;
int num = -1;
int buffer_length = strlen(control_buffer);
new_node->version = search_name_hashtable("unknown");
while (field_start < buffer_length) {
- field_start += read_package_field(&control_buffer[field_start], &field_name, &field_value);
+ field_start += read_package_field(&control_buffer[field_start], field_name, field_value);
- if (field_name == NULL) {
+ if (*field_name == NULL) {
goto fill_package_struct_cleanup; // Oh no, the dreaded goto statement !!
}
- if (strcmp(field_name, "Package") == 0) {
- new_node->name = search_name_hashtable(field_value);
+ if (strcmp(*field_name, "Package") == 0) {
+ new_node->name = search_name_hashtable(*field_value);
}
- else if (strcmp(field_name, "Version") == 0) {
- new_node->version = search_name_hashtable(field_value);
+ else if (strcmp(*field_name, "Version") == 0) {
+ new_node->version = search_name_hashtable(*field_value);
}
- else if (strcmp(field_name, "Pre-Depends") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_PRE_DEPENDS);
+ else if (strcmp(*field_name, "Pre-Depends") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_PRE_DEPENDS);
}
- else if (strcmp(field_name, "Depends") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_DEPENDS);
+ else if (strcmp(*field_name, "Depends") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_DEPENDS);
}
- else if (strcmp(field_name, "Replaces") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_REPLACES);
+ else if (strcmp(*field_name, "Replaces") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_REPLACES);
}
- else if (strcmp(field_name, "Provides") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_PROVIDES);
+ else if (strcmp(*field_name, "Provides") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_PROVIDES);
}
- else if (strcmp(field_name, "Conflicts") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_CONFLICTS);
+ else if (strcmp(*field_name, "Conflicts") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_CONFLICTS);
}
- else if (strcmp(field_name, "Suggests") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_SUGGESTS);
+ else if (strcmp(*field_name, "Suggests") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_SUGGESTS);
}
- else if (strcmp(field_name, "Recommends") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_RECOMMENDS);
+ else if (strcmp(*field_name, "Recommends") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_RECOMMENDS);
}
- else if (strcmp(field_name, "Enhances") == 0) {
- add_split_dependencies(new_node, field_value, EDGE_ENHANCES);
+ else if (strcmp(*field_name, "Enhances") == 0) {
+ add_split_dependencies(new_node, *field_value, EDGE_ENHANCES);
}
fill_package_struct_cleanup:
- free(field_name);
- free(field_value);
+ if (*field_name) {
+ free(*field_name);
+ }
+ if (*field_value) {
+ free(*field_value);
+ }
}
+ free(field_name);
+ free(field_value);
+
if (new_node->version == search_name_hashtable("unknown")) {
free_package(new_node);
return(-1);
new_status = (char *) xmalloc(want_len + flag_len + status_len + 3);
sprintf(new_status, "%s %s %s", name_hashtable[want], name_hashtable[flag], name_hashtable[status]);
status_hashtable[status_node_num]->status = search_name_hashtable(new_status);
+ free(new_status);
return;
}
}
else if (strcmp("config-files", name_hashtable[state_status]) == 0) {
/* only change the status line */
-// buffer_length = strlen(control_buffer);
while (1) {
char *field_name;
char *field_value;
}
i++;
}
+ free(conflicts);
return(TRUE);
}
/* If the file doesnt exist is isnt a fatal */
if (lstat(script_path, &path_stat) < 0) {
+ free(script_path);
return(EXIT_SUCCESS);
} else {
+ free(script_path);
return(system(script_path));
}
}
/* change status */
set_status(status_num, "install", 1);
set_status(status_num, "unpacked", 3);
+
+ free(info_prefix);
}
void configure_package(deb_file_t *deb_file)
write_status_file(deb_file);
+ for (i = 0; i < deb_count; i++) {
+ free(deb_file[i]->control_file);
+ free(deb_file[i]->filename);
+ free(deb_file[i]);
+ }
+ free(deb_file);
+
for (i = 0; i < NAME_HASH_PRIME; i++) {
if (name_hashtable[i] != NULL) {
free(name_hashtable[i]);