mtd-utils: fec.c uses bcopy()

Mitch Davis mjd-linux-mtd at afork.com
Wed Oct 8 00:56:20 EDT 2008


Hi Mike,

On Wed, Oct 8, 2008 at 1:38 PM, Mike Frysinger <vapier.adi at gmail.com> wrote:
> On Tue, Oct 7, 2008 at 22:36, Mitch Davis wrote:
>> On Wed, Oct 8, 2008 at 12:02 PM, Mike Frysinger wrote:
>>> On Tue, Oct 7, 2008 at 20:27, Mitch Davis wrote:
>>>> fec.c in mtd-utils uses bcopy(), so mtd-utils doesn't compile for me.
>>>> I'd like to fix this.
>>>>
>>>>  - Should I rewrite fec.c so it uses memcpy instead?
>>>
>>> a simple sed can fix the code as the only difference between bcopy()
>>> and memcpy() is the argument order.  ifdef's are pointless/ugly in
>>> this case.
>>
>> I agree.  I've attached a diff that makes this change.
>>
>> It compiles with no warnings, but I have no way of testing it.  Any
>> suggestions what to do next?
>
> use `git diff` to generate a diff instead of posting the entire file
> as an attachment.

The diff I attached previously was generated by git diff from HEAD.
It was not the entire file.

> really you should use git to send the patch

Do you mean a git push?  I'd need an account for that on infradead,
no?  A pointer to some instructions would be great.  Note, two of the
three links to informative articles on the MTD GIT HOWTO page are
broken.  If you don't mean a git push, please tell me what you mean.

Hmm, I hope the following inline pasting doesn't break tabs, etc.

Thanks for your help,

Mitch.

[PATCH] [MTD] mtd-utils: fec.c: bzero->memset, bcopy->memcpy, bcmp->memcmp

This patch alters fec.c so it does not use the deprecated bzero, bcopy and bcmp
functions.  This can help on platforms that do not have these functions.

From: Mitch Davis <mitch.davis at symstream.com>
Signed-off-by: Mitch Davis <mitch.davis at symstream.com>

diff --git a/fec.c b/fec.c
index 09e8453..6d9020f 100644
--- a/fec.c
+++ b/fec.c
@@ -47,19 +47,6 @@
 #include <string.h>

 /*
- * compatibility stuff
- */
-#ifdef MSDOS	/* but also for others, e.g. sun... */
-#define NEED_BCOPY
-#define bcmp(a,b,n) memcmp(a,b,n)
-#endif
-
-#ifdef NEED_BCOPY
-#define bcopy(s, d, siz)        memcpy((d), (s), (siz))
-#define bzero(d, siz)   memset((d), '\0', (siz))
-#endif
-
-/*
  * stuff used for testing purposes only
  */

@@ -433,7 +420,7 @@ invert_mat(gf *src, int k)
     gf *id_row = NEW_GF_MATRIX(1, k);
     gf *temp_row = NEW_GF_MATRIX(1, k);

-    bzero(id_row, k*sizeof(gf));
+    memset(id_row, '\0', k*sizeof(gf));
     DEB( pivloops=0; pivswaps=0 ; /* diagnostic */ )
     /*
      * ipiv marks elements already used as pivots.
@@ -513,7 +500,7 @@ found_piv:
 	 * we can optimize the addmul).
 	 */
 	id_row[icol] = 1;
-	if (bcmp(pivot_row, id_row, k*sizeof(gf)) != 0) {
+	if (memcmp(pivot_row, id_row, k*sizeof(gf)) != 0) {
 	    for (p = src, ix = 0 ; ix < k ; ix++, p += k ) {
 		if (ix != icol) {
 		    c = p[icol] ;
@@ -704,7 +691,7 @@ fec_new(int k, int n)
     /*
      * the upper matrix is I so do not bother with a slow multiply
      */
-    bzero(retval->enc_matrix, k*k*sizeof(gf) );
+    memset(retval->enc_matrix, '\0', k*k*sizeof(gf) );
     for (p = retval->enc_matrix, col = 0 ; col < k ; col++, p += k+1 )
 	*p = 1 ;
     free(tmp_m);
@@ -731,10 +718,10 @@ fec_encode(struct fec_parms *code, gf *src[], gf
*fec, int index, int sz)
 	sz /= 2 ;

     if (index < k)
-         bcopy(src[index], fec, sz*sizeof(gf) ) ;
+         memcpy(fec, src[index], sz*sizeof(gf) ) ;
     else if (index < code->n) {
 	p = &(code->enc_matrix[index*k] );
-	bzero(fec, sz*sizeof(gf));
+	memset(fec, '\0', sz*sizeof(gf));
 	for (i = 0; i < k ; i++)
 	    addmul(fec, src[i], p[i], sz ) ;
     } else
@@ -751,10 +738,10 @@ void fec_encode_linear(struct fec_parms *code,
gf *src, gf *fec, int index, int
 	sz /= 2 ;

     if (index < k)
-	    bcopy(src + (index * sz), fec, sz*sizeof(gf) ) ;
+	    memcpy(fec, src + (index * sz), sz*sizeof(gf) ) ;
     else if (index < code->n) {
 	p = &(code->enc_matrix[index*k] );
-	bzero(fec, sz*sizeof(gf));
+	memset(fec, '\0', sz*sizeof(gf));
 	for (i = 0; i < k ; i++)
 	    addmul(fec, src + (i * sz), p[i], sz ) ;
     } else
@@ -814,12 +801,12 @@ build_decode_matrix(struct fec_parms *code, gf
*pkt[], int index[])
     for (i = 0, p = matrix ; i < k ; i++, p += k ) {
 #if 1 /* this is simply an optimization, not very useful indeed */
 	if (index[i] < k) {
-	    bzero(p, k*sizeof(gf) );
+	    memset(p, '\0', k*sizeof(gf) );
 	    p[i] = 1 ;
 	} else
 #endif
 	if (index[i] < code->n )
-	    bcopy( &(code->enc_matrix[index[i]*k]), p, k*sizeof(gf) );
+	    memcpy(p,  &(code->enc_matrix[index[i]*k]), k*sizeof(gf) );
 	else {
 	    fprintf(stderr, "decode: invalid index %d (max %d)\n",
 		index[i], code->n - 1 );
@@ -870,7 +857,7 @@ fec_decode(struct fec_parms *code, gf *pkt[], int
index[], int sz)
     for (row = 0 ; row < k ; row++ ) {
 	if (index[row] >= k) {
 	    new_pkt[row] = my_malloc (sz * sizeof (gf), "new pkt buffer" );
-	    bzero(new_pkt[row], sz * sizeof(gf) ) ;
+	    memset(new_pkt[row], '\0', sz * sizeof(gf) ) ;
 	    for (col = 0 ; col < k ; col++ )
 		addmul(new_pkt[row], pkt[col], m_dec[row*k + col], sz) ;
 	}
@@ -880,7 +867,7 @@ fec_decode(struct fec_parms *code, gf *pkt[], int
index[], int sz)
      */
     for (row = 0 ; row < k ; row++ ) {
 	if (index[row] >= k) {
-	    bcopy(new_pkt[row], pkt[row], sz*sizeof(gf));
+	    memcpy(pkt[row], new_pkt[row], sz*sizeof(gf));
 	    free(new_pkt[row]);
 	}
     }



More information about the linux-mtd mailing list