ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/xpram_unix.cpp
Revision: 1.10
Committed: 2009-07-23T19:19:14Z (15 years, 1 month ago) by asvitkine
Branch: MAIN
CVS Tags: HEAD
Changes since 1.9: +16 -8 lines
Log Message:
BasiliskII side of changes to support .sheepvm bundles for SheepShaver

File Contents

# User Rev Content
1 cebix 1.1 /*
2     * xpram_unix.cpp - XPRAM handling, Unix specific stuff
3     *
4 gbeauche 1.9 * Basilisk II (C) 1997-2008 Christian Bauer
5 cebix 1.1 *
6     * This program is free software; you can redistribute it and/or modify
7     * it under the terms of the GNU General Public License as published by
8     * the Free Software Foundation; either version 2 of the License, or
9     * (at your option) any later version.
10     *
11     * This program 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
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19     */
20    
21     #include "sysdeps.h"
22    
23     #include <stdlib.h>
24    
25     #include "xpram.h"
26    
27    
28     // XPRAM file name and path
29 cebix 1.5 #if POWERPC_ROM
30     const char XPRAM_FILE_NAME[] = ".sheepshaver_nvram";
31     #else
32 cebix 1.1 const char XPRAM_FILE_NAME[] = ".basilisk_ii_xpram";
33 cebix 1.5 #endif
34 cebix 1.1 static char xpram_path[1024];
35    
36    
37     /*
38     * Load XPRAM from settings file
39     */
40    
41 asvitkine 1.10 void LoadXPRAM(const char *vmdir)
42 cebix 1.1 {
43 asvitkine 1.10 if (vmdir) {
44     #if POWERPC_ROM
45     snprintf(xpram_path, sizeof(xpram_path), "%s/nvram", vmdir);
46     #else
47     snprintf(xpram_path, sizeof(xpram_path), "%s/xpram", vmdir);
48     #endif
49     } else {
50     // Construct XPRAM path
51     xpram_path[0] = 0;
52     char *home = getenv("HOME");
53     if (home != NULL && strlen(home) < 1000) {
54     strncpy(xpram_path, home, 1000);
55     strcat(xpram_path, "/");
56     }
57     strcat(xpram_path, XPRAM_FILE_NAME);
58 cebix 1.1 }
59    
60     // Load XPRAM from settings file
61     int fd;
62     if ((fd = open(xpram_path, O_RDONLY)) >= 0) {
63 cebix 1.5 read(fd, XPRAM, XPRAM_SIZE);
64 cebix 1.1 close(fd);
65     }
66     }
67    
68    
69     /*
70     * Save XPRAM to settings file
71     */
72    
73     void SaveXPRAM(void)
74     {
75     int fd;
76 cebix 1.2 if ((fd = open(xpram_path, O_WRONLY | O_CREAT, 0666)) >= 0) {
77 cebix 1.5 write(fd, XPRAM, XPRAM_SIZE);
78 cebix 1.1 close(fd);
79     }
80     }
81    
82    
83     /*
84     * Delete PRAM file
85     */
86    
87     void ZapPRAM(void)
88     {
89     // Construct PRAM path
90     xpram_path[0] = 0;
91     char *home = getenv("HOME");
92     if (home != NULL && strlen(home) < 1000) {
93     strncpy(xpram_path, home, 1000);
94     strcat(xpram_path, "/");
95     }
96     strcat(xpram_path, XPRAM_FILE_NAME);
97    
98     // Delete file
99     unlink(xpram_path);
100     }