[pacman-dev] [PATCH] Rework delta struct and modify code accordingly

Nathan Jones nathanj at insightbb.com
Sat Feb 16 12:22:40 EST 2008


On Fri, Feb 15, 2008 at 08:27:18PM -0600, Dan McGee wrote:
> Note both my comments above in the commit message, as well as taking a look
> at how not trying to even worry about the filename simplifies the code in
> sync.c a good amount.

The simplification is very nice. This will allow us to completely get
rid of the patches list, which I always thought was a bit hacky.

The main reason I wanted to keep the old version in addition to the
filename is for the function pkg_upgrade_delta_path:

static alpm_list_t *pkg_upgrade_delta_path(pmpkg_t *newpkg, pmdb_t *db_local)
{
	pmpkg_t *oldpkg = alpm_db_get_pkg(db_local, newpkg->name);
	alpm_list_t *ret = NULL;

	if(oldpkg) {
		const char *oldname = alpm_pkg_get_filename(oldpkg);
		char *oldpath = _alpm_filecache_find(oldname);

		if(oldpath) {
			// delta stuff
		}
	}

	return(ret);
}

The line 
const char *oldname = alpm_pkg_get_filename(oldpkg);
would change to
const char *oldname = alpm_deltas_find_old_filename(pkg->deltas, oldpkg->version);
and everything would work as before.

> @@ -246,19 +227,32 @@ pmdelta_t *_alpm_delta_parse(char *line)
>  	tmp2 = tmp;
>  	tmp = strchr(tmp, ' ');
>  	*(tmp++) = '\0';
> +	STRDUP(delta->from_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
> +
> +	tmp2 = tmp;
> +	tmp = strchr(tmp, ' ');
> +	*(tmp++) = '\0';
>  	STRDUP(delta->to, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
>  
>  	tmp2 = tmp;
>  	tmp = strchr(tmp, ' ');
>  	*(tmp++) = '\0';
> -	delta->size = atol(tmp2);
> +	STRDUP(delta->to_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
>  
>  	tmp2 = tmp;
>  	tmp = strchr(tmp, ' ');
>  	*(tmp++) = '\0';
> -	STRDUP(delta->filename, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
> +	STRDUP(delta->delta, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
>  
> -	STRDUP(delta->md5sum, tmp, RET_ERR(PM_ERR_MEMORY, NULL));
> +	tmp2 = tmp;
> +	tmp = strchr(tmp, ' ');
> +	*(tmp++) = '\0';
> +	STRDUP(delta->delta_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
> +
> +	tmp2 = tmp;
> +	tmp = strchr(tmp, ' ');
> +	*(tmp++) = '\0';
> +	delta->delta_size = atol(tmp2);
>  
>  	return(delta);
>  }

So you want a space added to the end of every delta line? Because this
is going to crash if not. Just making sure it's not a copy/paste
problem.




More information about the pacman-dev mailing list