[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tyndur-devel] [PATCH v2 1/6] LostIOv1: Trennung von FILE und RPC-Daten



On Sun, Sep 18 23:11, Kevin Wolf wrote:
> * LostIOv1: FILE war bisher die Datenstruktur, die auch per RPC benutzt
>   wurde, um Handles zu übergeben, und die mit Zeug überfrachtet war,
>   dass gar nicht durch die Gegend geschickt werden muss. Außerdem gab es
>   noch eine andere Datenstruktur, die FILE für interne Zwecke erweitert
>   hat.
> 
>   Jetzt ist FILE das lokale und io_resource_t das für den RPC.
> 
> Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
> ---
> diff --git a/src/modules/lib/stdlibc/file.c b/src/modules/lib/stdlibc/file.c
> index 45e24f2..313eef4 100644
> --- a/src/modules/lib/stdlibc/file.c
> +++ b/src/modules/lib/stdlibc/file.c
> @@ -130,33 +130,36 @@ FILE* fopen (const char* filename, const char* mode)
>      //weren.
>      free(full_path);
>  
> -    FILE* io_res = (io_resource_t*) resp->data;
> +    FILE* int_res;
> +    io_resource_t* io_res = (io_resource_t*) resp->data;
> +
>      //Wenn ein Fehler beim oeffnen aufgetreten ist, wird NULL zurueck gegeben.
>      if ((io_res == NULL) || (io_res->pid == 0) || (resp->data_length == 0)) {
> -        io_res = NULL;
> +        int_res = NULL;
>      } else {
> -        io_res->buffer_mode = IO_BUFFER_MODE_NONE;
> -        io_res->buffer_ptr = NULL;
> -        io_res->buffer_size = 0;
> -        io_res->buffer_pos = 0;
>  
>          // Pfad im Handle hinterlegen
>          io_res->path = malloc(strlen(filename) + 1);
>          strcpy(io_res->path, filename);
>  
>  
> -        struct lostio_internal_file* int_res = malloc(sizeof(*int_res));
> -        int_res->res = *io_res;
> +        int_res = calloc(1, sizeof(*int_res));
> +        int_res->res = malloc(sizeof(*int_res->res));
> +        *int_res->res = *io_res;

Hier frage ich mich ein bisschen warum du hier neuen Speicher allozierst
und nicht einfach den vom RPC nimmst. Aber jo, da der code ja eh nur für
etwa 2 Commits überleben muss, und an sich nicht kaputt ist, kannst du
das von mir aus auch so lassen. ;-)

> +
> +        int_res->buffer_mode = IO_BUFFER_MODE_NONE;
> +        int_res->buffer_ptr = NULL;
> +        int_res->buffer_size = 0;
> +        int_res->buffer_pos = 0;
>          int_res->free_buffer = false;
> -        setvbuf(&int_res->res, malloc(BUFSIZ), _IOFBF, BUFSIZ);
> +        setvbuf(int_res, malloc(BUFSIZ), _IOFBF, BUFSIZ);
>          int_res->free_buffer = true;
>  
>          free(io_res);
> -        io_res = &int_res->res;
>      }
>      free(resp);
>      
> -    return io_res;
> +    return int_res;
>  }
>  
>  /**

Von mir aus kann das so rein.

Acked-by: Antoine Kaufmann <toni@xxxxxxxxxx>

-- 
Antoine Kaufmann
<toni@xxxxxxxxxxxxxxxx>

Attachment: signature.asc
Description: Digital signature