~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/tools/wrc/writeres.c

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Write .res file from a resource-tree
  3  *
  4  * Copyright 1998 Bertho A. Stultiens
  5  *
  6  * This library is free software; you can redistribute it and/or
  7  * modify it under the terms of the GNU Lesser General Public
  8  * License as published by the Free Software Foundation; either
  9  * version 2.1 of the License, or (at your option) any later version.
 10  *
 11  * This library is distributed in the hope that it will be useful,
 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  * Lesser General Public License for more details.
 15  *
 16  * You should have received a copy of the GNU Lesser General Public
 17  * License along with this library; if not, write to the Free Software
 18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 19  */
 20 
 21 #include "config.h"
 22 #include "wine/port.h"
 23 
 24 #include <stdio.h>
 25 #include <stdlib.h>
 26 #include <string.h>
 27 #include <assert.h>
 28 
 29 #include "wine/unicode.h"
 30 #include "wrc.h"
 31 #include "genres.h"
 32 #include "newstruc.h"
 33 #include "utils.h"
 34 
 35 /*
 36  *****************************************************************************
 37  * Function     : write_resfile
 38  * Syntax       : void write_resfile(char *outname, resource_t *top)
 39  * Input        :
 40  *      outname - Filename to write to
 41  *      top     - The resource-tree to convert
 42  * Output       :
 43  * Description  :
 44  * Remarks      :
 45  *****************************************************************************
 46 */
 47 void write_resfile(char *outname, resource_t *top)
 48 {
 49         FILE *fo;
 50         unsigned int ret;
 51         char zeros[3] = {0, 0, 0};
 52 
 53         fo = fopen(outname, "wb");
 54         if(!fo)
 55         {
 56                 error("Could not open %s\n", outname);
 57         }
 58 
 59         if(win32)
 60         {
 61                 /* Put an empty resource first to signal win32 format */
 62                 res_t *res = new_res();
 63                 put_dword(res, 0);              /* ResSize */
 64                 put_dword(res, 0x00000020);     /* HeaderSize */
 65                 put_word(res, 0xffff);          /* ResType */
 66                 put_word(res, 0);
 67                 put_word(res, 0xffff);          /* ResName */
 68                 put_word(res, 0);
 69                 put_dword(res, 0);              /* DataVersion */
 70                 put_word(res, 0);               /* Memory options */
 71                 put_word(res, 0);               /* Language */
 72                 put_dword(res, 0);              /* Version */
 73                 put_dword(res, 0);              /* Characteristics */
 74                 ret = fwrite(res->data, 1, res->size, fo);
 75                 if(ret != res->size)
 76                 {
 77                         fclose(fo);
 78                         error("Error writing %s\n", outname);
 79                 }
 80                 free(res);
 81         }
 82 
 83         for(; top; top = top->next)
 84         {
 85                 if(!top->binres)
 86                         continue;
 87 
 88                 ret = fwrite(top->binres->data, 1, top->binres->size, fo);
 89                 if(ret != top->binres->size)
 90                 {
 91                         fclose(fo);
 92                         error("Error writing %s\n", outname);
 93                 }
 94                 if(win32 && (top->binres->size & 0x03))
 95                 {
 96                         /* Write padding */
 97                         ret = fwrite(zeros, 1, 4 - (top->binres->size & 0x03), fo);
 98                         if(ret != 4 - (top->binres->size & 0x03))
 99                         {
100                                 fclose(fo);
101                                 error("Error writing %s\n", outname);
102                         }
103                 }
104         }
105         fclose(fo);
106 }
107 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.