Deleted Added
full compact
type.c (112730) type.c (116084)
1/*
2 * Copyright (c) 2002 Juli Mallett. All rights reserved.
3 *
4 * This software was written by Juli Mallett <jmallett@FreeBSD.org> for the
5 * FreeBSD project. Redistribution and use in source and binary forms, with
6 * or without modification, are permitted provided that the following
7 * conditions are met:
8 *

--- 12 unchanged lines hidden (view full) ---

21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
1/*
2 * Copyright (c) 2002 Juli Mallett. All rights reserved.
3 *
4 * This software was written by Juli Mallett <jmallett@FreeBSD.org> for the
5 * FreeBSD project. Redistribution and use in source and binary forms, with
6 * or without modification, are permitted provided that the following
7 * conditions are met:
8 *

--- 12 unchanged lines hidden (view full) ---

21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
29__FBSDID("$FreeBSD: head/lib/libufs/type.c 112730 2003-03-28 01:50:11Z jmallett $");
29__FBSDID("$FreeBSD: head/lib/libufs/type.c 116084 2003-06-09 09:32:29Z jmallett $");
30
31#include <sys/param.h>
32#include <sys/mount.h>
33#include <sys/disklabel.h>
34#include <sys/stat.h>
35
36#include <ufs/ufs/ufsmount.h>
37#include <ufs/ufs/dinode.h>

--- 22 unchanged lines hidden (view full) ---

60
61 new = NULL;
62
63 ERROR(new, NULL);
64
65 new = malloc(sizeof(*new));
66 if (new == NULL) {
67 ERROR(new, "unable to allocate memory for disk");
30
31#include <sys/param.h>
32#include <sys/mount.h>
33#include <sys/disklabel.h>
34#include <sys/stat.h>
35
36#include <ufs/ufs/ufsmount.h>
37#include <ufs/ufs/dinode.h>

--- 22 unchanged lines hidden (view full) ---

60
61 new = NULL;
62
63 ERROR(new, NULL);
64
65 new = malloc(sizeof(*new));
66 if (new == NULL) {
67 ERROR(new, "unable to allocate memory for disk");
68 return NULL;
68 return (NULL);
69 }
70
71 if (ufs_disk_fillout(new, name) == -1) {
72 ERROR(new, "could not fill out disk");
73 free(new);
69 }
70
71 if (ufs_disk_fillout(new, name) == -1) {
72 ERROR(new, "could not fill out disk");
73 free(new);
74 return NULL;
74 return (NULL);
75 }
76
75 }
76
77 return new;
77 return (new);
78}
79
80void
81ufs_disk_dtor(struct uufsd **diskp)
82{
83 struct uufsd *disk;
84
85 if (diskp != NULL)

--- 16 unchanged lines hidden (view full) ---

102 if (disk->d_inoblock != NULL) {
103 free(disk->d_inoblock);
104 disk->d_inoblock = NULL;
105 }
106 if (disk->d_mine & MINE_NAME) {
107 free((char *)(uintptr_t)disk->d_name);
108 disk->d_name = NULL;
109 }
78}
79
80void
81ufs_disk_dtor(struct uufsd **diskp)
82{
83 struct uufsd *disk;
84
85 if (diskp != NULL)

--- 16 unchanged lines hidden (view full) ---

102 if (disk->d_inoblock != NULL) {
103 free(disk->d_inoblock);
104 disk->d_inoblock = NULL;
105 }
106 if (disk->d_mine & MINE_NAME) {
107 free((char *)(uintptr_t)disk->d_name);
108 disk->d_name = NULL;
109 }
110 return 0;
110 return (0);
111}
112
113int
114ufs_disk_fillout(struct uufsd *disk, const char *name)
115{
116 if (ufs_disk_fillout_blank(disk, name) == -1) {
111}
112
113int
114ufs_disk_fillout(struct uufsd *disk, const char *name)
115{
116 if (ufs_disk_fillout_blank(disk, name) == -1) {
117 return -1;
117 return (-1);
118 }
119 if (sbread(disk) == -1) {
120 ERROR(disk, "could not read superblock to fill out disk");
118 }
119 if (sbread(disk) == -1) {
120 ERROR(disk, "could not read superblock to fill out disk");
121 return -1;
121 return (-1);
122 }
122 }
123 return 0;
123 return (0);
124}
125
126int
127ufs_disk_fillout_blank(struct uufsd *disk, const char *name)
128{
129 struct stat st;
130 struct fstab *fs;
131 const char *oname;

--- 10 unchanged lines hidden (view full) ---

142 if (*name != '/') {
143 if (*name == 'r')
144 name++;
145 snprintf(dev, sizeof(dev), "%s%s", _PATH_DEV, name);
146 name = dev;
147 goto again;
148 }
149 ERROR(disk, "could not find special device");
124}
125
126int
127ufs_disk_fillout_blank(struct uufsd *disk, const char *name)
128{
129 struct stat st;
130 struct fstab *fs;
131 const char *oname;

--- 10 unchanged lines hidden (view full) ---

142 if (*name != '/') {
143 if (*name == 'r')
144 name++;
145 snprintf(dev, sizeof(dev), "%s%s", _PATH_DEV, name);
146 name = dev;
147 goto again;
148 }
149 ERROR(disk, "could not find special device");
150 return -1;
150 return (-1);
151 }
152 fd = open(name, O_RDONLY);
153 if (fd == -1) {
154 ERROR(disk, "could not open special device");
151 }
152 fd = open(name, O_RDONLY);
153 if (fd == -1) {
154 ERROR(disk, "could not open special device");
155 return -1;
155 return (-1);
156 }
157
158 disk->d_bsize = 1;
159 disk->d_ccg = 0;
160 disk->d_fd = fd;
161 disk->d_inoblock = NULL;
162 disk->d_inomin = 0;
163 disk->d_inomax = 0;
164 disk->d_lcg = 0;
165 disk->d_mine = 0;
166 disk->d_ufs = 0;
167 disk->d_error = NULL;
168
169 if (oname != name) {
170 name = strdup(name);
171 if (name == NULL) {
172 ERROR(disk, "could not allocate memory for disk name");
156 }
157
158 disk->d_bsize = 1;
159 disk->d_ccg = 0;
160 disk->d_fd = fd;
161 disk->d_inoblock = NULL;
162 disk->d_inomin = 0;
163 disk->d_inomax = 0;
164 disk->d_lcg = 0;
165 disk->d_mine = 0;
166 disk->d_ufs = 0;
167 disk->d_error = NULL;
168
169 if (oname != name) {
170 name = strdup(name);
171 if (name == NULL) {
172 ERROR(disk, "could not allocate memory for disk name");
173 return -1;
173 return (-1);
174 }
175 disk->d_mine |= MINE_NAME;
176 }
177 disk->d_name = name;
178
174 }
175 disk->d_mine |= MINE_NAME;
176 }
177 disk->d_name = name;
178
179 return 0;
179 return (0);
180}
181
182int
183ufs_disk_write(struct uufsd *disk)
184{
185 ERROR(disk, NULL);
186
187 if (disk->d_mine & MINE_WRITE)
180}
181
182int
183ufs_disk_write(struct uufsd *disk)
184{
185 ERROR(disk, NULL);
186
187 if (disk->d_mine & MINE_WRITE)
188 return 0;
188 return (0);
189
190 close(disk->d_fd);
191
192 disk->d_fd = open(disk->d_name, O_RDWR);
193 if (disk->d_fd < 0) {
194 ERROR(disk, "failed to open disk for writing");
189
190 close(disk->d_fd);
191
192 disk->d_fd = open(disk->d_name, O_RDWR);
193 if (disk->d_fd < 0) {
194 ERROR(disk, "failed to open disk for writing");
195 return -1;
195 return (-1);
196 }
197
198 disk->d_mine |= MINE_WRITE;
199
196 }
197
198 disk->d_mine |= MINE_WRITE;
199
200 return 0;
200 return (0);
201}
201}