~ [ 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             fatal_perror("Could not open %s", outname);
 56 
 57         if(win32)
 58         {
 59                 /* Put an empty resource first to signal win32 format */
 60                 res_t *res = new_res();
 61                 put_dword(res, 0);              /* ResSize */
 62                 put_dword(res, 0x00000020);     /* HeaderSize */
 63                 put_word(res, 0xffff);          /* ResType */
 64                 put_word(res, 0);
 65                 put_word(res, 0xffff);          /* ResName */
 66                 put_word(res, 0);
 67                 put_dword(res, 0);              /* DataVersion */
 68                 put_word(res, 0);               /* Memory options */
 69                 put_word(res, 0);               /* Language */
 70                 put_dword(res, 0);              /* Version */
 71                 put_dword(res, 0);              /* Characteristics */
 72                 ret = fwrite(res->data, 1, res->size, fo);
 73                 if(ret != res->size)
 74                 {
 75                         fclose(fo);
 76                         error("Error writing %s\n", outname);
 77                 }
 78                 free(res);
 79         }
 80 
 81         for(; top; top = top->next)
 82         {
 83                 if(!top->binres)
 84                         continue;
 85 
 86                 ret = fwrite(top->binres->data, 1, top->binres->size, fo);
 87                 if(ret != top->binres->size)
 88                 {
 89                         fclose(fo);
 90                         error("Error writing %s\n", outname);
 91                 }
 92                 if(win32 && (top->binres->size & 0x03))
 93                 {
 94                         /* Write padding */
 95                         ret = fwrite(zeros, 1, 4 - (top->binres->size & 0x03), fo);
 96                         if(ret != 4 - (top->binres->size & 0x03))
 97                         {
 98                                 fclose(fo);
 99                                 error("Error writing %s\n", outname);
100                         }
101                 }
102         }
103         if (fclose(fo))
104             fatal_perror("Error writing %s", outname);
105 }
106 

~ [ 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.