FU Logo
  • Startseite
  • Kontakt
  • Impressum
  • Home
  • Listenauswahl
  • Anleitungen

Re: [linux-minidisc] Implementing downloading in QHiMDTransfer

<-- thread -->
<-- date -->
  • From: "Kevin Chabowski" <kevin@kch42.de>
  • To: "Michael Karcher" <Michael.Karcher@fu-berlin.de>
  • Date: Tue, 13 Nov 2012 23:14:52 +0100
  • Cc: linux-minidisc@lists.fu-berlin.de
  • Subject: Re: [linux-minidisc] Implementing downloading in QHiMDTransfer

Sorry, that I didn't answer the mail, I do not have that much time at the moment...

I fixed most of the things, you talked about, but am not completely done. Will send the corrected patches, if everything is fixed (hopefully), probably this week.

Am 06.11.2012, 00:51 Uhr, schrieb Michael Karcher <Michael.Karcher@fu-berlin.de>:
| From e096e749587e50da5c72bb0afa7da5bbd0e1c725 Mon Sep 17 00:00:00 2001
| From: Kevin Chabowski <kevin@kch42.de>
| Date: Mon, 22 Oct 2012 21:43:35 +0200
| Subject: [PATCH 07/16] himd_set_track_label implemented
This patch definitely does not pass quality control. While you describe
being able to change existing labels, and it appears to work fine at the
beginning, you are leaking HiMD strings. The 14-byte string fragments
that are unused are organized in a linked freelist.

I am not really sure, if I am doing The Right Thing here...

I have now written a function, that will delete a string properly, i.e. append all string chunks to the freelist, before creating and assigning a new string:

| int himd_delete_string(struct himd * himd, unsigned int idx,
|                        struct himderrinfo * status)
| {
|     unsigned char* cur_strchunk = NULL;
|     unsigned char* freelist_head = NULL;
|     unsigned int tmpidx;
|     gboolean first = TRUE;
|
|     g_return_val_if_fail(idx != 0, -1);
|
|     freelist_head = get_strchunk(himd, 0);
|
|     while(idx > 0) /* idx == 0 --> End of string */
|     {
|         cur_strchunk = get_strchunk(himd, idx);
|
| if((!first) && (strtype(cur_strchunk) != STRING_TYPE_CONTINUATION))
|         {
|             set_status_printf(status, HIMD_ERROR_STRING_CHAIN_BROKEN,
| "String slot %d has type %d, should be %d\n",
|                               idx, strtype(cur_strchunk),
|                               STRING_TYPE_CONTINUATION);
|             return -1;
|         }
|
|         tmpidx = idx;
|         idx = strlink(cur_strchunk);
|
|         /* Mark current chunk as unused */
|         set_strtype(cur_strchunk, STRING_TYPE_UNUSED);
|         /* Insert at beginning of freelist */
|         set_strlink(cur_strchunk, strlink(freelist_head));
|         set_strlink(freelist_head, tmpidx);
|
|         first = 0;
|     }
|
|     return 0;
| }


Kevin



<-- thread -->
<-- date -->
  • References:
    • Re: [linux-minidisc] Implementing downloading in QHiMDTransfer
      • From: "Kevin Chabowski" <kevin@kch42.de>
    • Re: [linux-minidisc] Implementing downloading in QHiMDTransfer
      • From: Michael Karcher <Michael.Karcher@fu-berlin.de>
  • linux-minidisc - November 2012 - Archives indexes sorted by:
    [ thread ] [ subject ] [ author ] [ date ]
  • Complete archive of the linux-minidisc mailing list
  • More info on this list...

Hilfe

  • FAQ
  • Dienstbeschreibung
  • ZEDAT Beratung
  • postmaster@lists.fu-berlin.de

Service-Navigation

  • Startseite
  • Listenauswahl

Einrichtung Mailingliste

  • ZEDAT-Portal
  • Mailinglisten Portal