Ignore:
Timestamp:
Aug 4, 1999, 4:40:33 PM (26 years ago)
Author:
phaller
Message:

Fix: small fix in Profile handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/profile.cpp

    r408 r414  
    1 /* $Id: profile.cpp,v 1.5 1999-08-04 00:44:33 phaller Exp $ */
     1/* $Id: profile.cpp,v 1.6 1999-08-04 14:37:52 phaller Exp $ */
    22
    33/*
     
    7171    BOOL             changed;
    7272    PROFILESECTION  *section;
    73     char            *dos_name;
    74     char            *unix_name;
    7573    char            *filename;
    7674    time_t           mtime;
     
    394392static BOOL PROFILE_FlushFile(void)
    395393{
    396     char *p, buffer[MAX_PATHNAME_LEN];
    397     const char *unix_name;
    398394    FILE *file = NULL;
    399395    struct stat buf;
     
    405401    }
    406402
    407     if (!CurProfile->changed || !CurProfile->dos_name) return TRUE;
    408     if (!(unix_name = CurProfile->unix_name) || !(file = fopen(unix_name, "w")))
    409     {
    410         /* Try to create it in $HOME/.wine */
    411         /* FIXME: this will need a more general solution */
    412         if ((p = getenv( "HOME" )) != NULL)
    413         {
    414             strcpy( buffer, p );
    415             strcat( buffer, "/.wine/" );
    416             p = buffer + strlen(buffer);
    417             strcpy( p, strrchr( CurProfile->dos_name, '\\' ) + 1 );
    418             CharLowerA( p );
    419             file = fopen( buffer, "w" );
    420             unix_name = buffer;
    421         }
    422     }
    423 
     403    // not changed, return immediately
     404    if (!CurProfile->changed)
     405      return TRUE;
     406
     407    // try to open file
     408    file = fopen(CurProfile->filename, "w");
    424409    if (!file)
    425410    {
    426         dprintf(("Kernel32:Profile:could not save profile file %s\n", CurProfile->dos_name));
     411        dprintf(("Kernel32:Profile:could not save profile file %s\n", CurProfile->filename));
    427412        return FALSE;
    428413    }
    429414
    430     dprintf(("Kernel32:Profile:Saving '%s' into '%s'\n", CurProfile->dos_name, unix_name ));
     415    dprintf(("Kernel32:Profile:Saving %s\n", CurProfile->filename ));
    431416    PROFILE_Save( file, CurProfile->section );
    432417    fclose( file );
    433418    CurProfile->changed = FALSE;
    434     if(!stat(unix_name,&buf))
     419    if(!stat(CurProfile->filename,&buf))
    435420       CurProfile->mtime=buf.st_mtime;
    436421    return TRUE;
     
    447432    PROFILE_FlushFile();
    448433    PROFILE_Free( CurProfile->section );
    449     if (CurProfile->dos_name) HeapFree( SystemHeap, 0, CurProfile->dos_name );
    450     if (CurProfile->unix_name) HeapFree( SystemHeap, 0, CurProfile->unix_name );
    451434    if (CurProfile->filename) HeapFree( SystemHeap, 0, CurProfile->filename );
    452435    CurProfile->changed   = FALSE;
    453436    CurProfile->section   = NULL;
    454     CurProfile->dos_name  = NULL;
    455     CurProfile->unix_name = NULL;
    456437    CurProfile->filename  = NULL;
    457438    CurProfile->mtime     = 0;
     
    467448{
    468449    char buffer[MAX_PATHNAME_LEN];
    469     char *newdos_name, *p;
    470450    FILE *file = NULL;
    471451    int i,j;
     
    481461          MRUProfile[i]->changed=FALSE;
    482462          MRUProfile[i]->section=NULL;
    483           MRUProfile[i]->dos_name=NULL;
    484           MRUProfile[i]->unix_name=NULL;
    485463          MRUProfile[i]->filename=NULL;
    486464          MRUProfile[i]->mtime=0;
     
    510488             CurProfile=tempProfile;
    511489            }
    512           if(!stat(CurProfile->unix_name,&buf) && CurProfile->mtime==buf.st_mtime)
     490          if(!stat(CurProfile->filename,&buf) && CurProfile->mtime==buf.st_mtime)
    513491             dprintf(("Kernel32:Profile:(%s): already opened (mru=%d)\n",
    514492                              filename, i ));
     
    534512    if(CurProfile->filename) PROFILE_ReleaseFile();
    535513
    536     newdos_name = HEAP_strdupA( SystemHeap, 0, filename );
    537     CurProfile->dos_name  = newdos_name;
    538514    CurProfile->filename  = HEAP_strdupA( SystemHeap, 0, filename );
    539515
    540     /* Try to open the profile file, first in $HOME/.wine */
    541 
    542     /* FIXME: this will need a more general solution */
    543     if ((p = getenv( "HOME" )) != NULL)
    544     {
    545         strcpy( buffer, p );
    546         strcat( buffer, "/.wine/" );
    547         p = buffer + strlen(buffer);
    548         strcpy( p, strrchr( newdos_name, '\\' ) + 1 );
    549         CharLowerA( p );
    550         if ((file = fopen( buffer, "r" )))
    551         {
    552             dprintf(("Kernel32:Profile:(%s): found it in %s\n",
    553                              filename, buffer ));
    554             CurProfile->unix_name = HEAP_strdupA( SystemHeap, 0, buffer );
    555         }
    556     }
    557 
    558     if (!file)
    559     {
    560         CurProfile->unix_name = HEAP_strdupA( SystemHeap, 0,
    561                                              filename );
    562         if ((file = fopen( filename, "r" )))
    563             dprintf(("Kernel32:Profile:(%s): found it in %s\n",
    564                              filename, filename ));
    565     }
    566 
     516    file = fopen( filename, "r" );
    567517    if (file)
    568518    {
     519      dprintf(("Kernel32:Profile:(%s): found it in %s\n",
     520               filename, filename ));
     521
    569522        CurProfile->section = PROFILE_Load( file );
    570523        fclose( file );
    571         if(!stat(CurProfile->unix_name,&buf))
     524        if(!stat(CurProfile->filename,&buf))
    572525           CurProfile->mtime=buf.st_mtime;
    573526    }
     
    575528    {
    576529        /* Does not exist yet, we will create it in PROFILE_FlushFile */
    577         dprintf(("Kernel32:Profile:profile file %s not found\n", newdos_name ));
     530        dprintf(("Kernel32:Profile:profile file %s not found\n", filename ));
    578531    }
    579532    return TRUE;
Note: See TracChangeset for help on using the changeset viewer.