File parted-type.patch of Package parted

--- parted-1.6.11/libparted/disk.c.type	Fri May 24 00:32:16 2002
+++ parted-1.6.11/libparted/disk.c	Wed Jul 24 13:47:58 2002
@@ -1761,6 +1761,8 @@
 		return N_("lba");
 	case PED_PARTITION_HPSERVICE:
 		return N_("hp-service");
+	case PED_PARTITION_TYPE:
+		return N_("type");
 	case PED_PARTITION_PALO:
 		return N_("palo");
 
--- parted-1.6.11/libparted/labels/dos.c.type	Mon Apr  8 12:07:38 2002
+++ parted-1.6.11/libparted/labels/dos.c	Wed Jul 24 13:47:58 2002
@@ -952,6 +952,10 @@
 	disk = part->disk;
 
 	switch (flag) {
+	case PED_PARTITION_TYPE:
+		dos_data->system = state;
+		return 1;
+
 	case PED_PARTITION_HIDDEN:
 		if (part->type == PED_PARTITION_EXTENDED) {
 			ped_exception_throw (
@@ -1350,6 +1350,9 @@
 	case PED_PARTITION_LBA:
 		return dos_data->lba;
 
+	case PED_PARTITION_TYPE:
+		return dos_data->system;
+
 	case PED_PARTITION_PALO:
 		return dos_data->palo;
 
@@ -1374,6 +1374,7 @@
 	case PED_PARTITION_RAID:
 	case PED_PARTITION_LVM:
 	case PED_PARTITION_LBA:
+	case PED_PARTITION_TYPE:
 	case PED_PARTITION_PALO:
 		return 1;
 
--- parted-1.6.2/parted/ui.c.type	Wed Jul  3 02:59:11 2002
+++ parted-1.6.2/parted/ui.c	Wed Jul 24 13:47:58 2002
@@ -891,7 +891,10 @@
                                        NULL, 1);
         if (!input)
                 return 0;
-        valid = sscanf (input, "%d", value);
+        if (strstr(input, "0x") == input)
+		valid = sscanf (input, "%x", value);
+	else
+		valid = sscanf (input, "%d", value);
         free (input);
         return valid;
 }
--- parted-1.6.11/include/parted/disk.h.type	Wed Apr 10 03:23:11 2002
+++ parted-1.6.11/include/parted/disk.h	Wed Jul 24 13:47:58 2002
@@ -62,8 +62,9 @@
         PED_PARTITION_LBA=7,
         PED_PARTITION_HPSERVICE=8,
         PED_PARTITION_PALO=9,
-        PED_PARTITION_PREP=10,
-        PED_PARTITION_MSFT_RESERVED=11
+        PED_PARTITION_TYPE=10,
+        PED_PARTITION_PREP=11,
+        PED_PARTITION_MSFT_RESERVED=12
 };
 #define PED_PARTITION_FIRST_FLAG        PED_PARTITION_BOOT
 #define PED_PARTITION_LAST_FLAG         PED_PARTITION_MSFT_RESERVED
--- parted-1.6.2/parted/parted.c.type	Wed Jul 24 13:47:58 2002
+++ parted-1.6.2/parted/parted.c	Wed Jul 24 14:26:45 2002
@@ -1094,17 +1094,28 @@
         first_flag = 1;
         for (flag = ped_partition_flag_next (0); flag;
              flag = ped_partition_flag_next (flag)) {
-                if (ped_partition_get_flag (part, flag)) {
-                        if (first_flag)
-                                first_flag = 0;
-                        else {
-                                _res = res;
-                                ped_realloc (&_res, strlen (res)
-                                                           + 1 + 2);
-                                res = _res;
-                                strncat (res, ", ", 2);
-                        }
-
+		if (first_flag)
+			first_flag = 0;
+		else {
+			_res = res;
+			ped_realloc (&_res, strlen (res)
+						   + 1 + 2);
+			res = _res;
+			strncat (res, ", ", 2);
+		}
+		if (flag == PED_PARTITION_TYPE) {
+			int xtype = ped_partition_get_flag (part, flag);
+			if (xtype) {
+				char tmpstr[21];
+				int len = snprintf(tmpstr,sizeof(tmpstr)-1,"type=%02x",xtype);
+				_res = res;
+				ped_realloc (&_res, strlen (res) + 1 + 
+				                        ((len>sizeof(tmpstr))?sizeof(tmpstr):len) );
+				res = _res;
+				strncat (res, tmpstr, 21);
+			}
+		}
+                else if (ped_partition_get_flag (part, flag)) {
                         name = _(ped_partition_flag_get_name (flag));
                         _res = res;
                         ped_realloc (&_res, strlen (res) + 1
@@ -1726,12 +1737,19 @@
                 goto error_destroy_disk;
         if (!command_line_get_part_flag (_("Flag to Invert?"), part, &flag))
                 goto error_destroy_disk;
-        state = (ped_partition_get_flag (part, flag) == 0 ? 1 : 0);      
+	if( flag == PED_PARTITION_TYPE )
+		state = ped_partition_get_flag (part, flag);
+	else 
+		state = (ped_partition_get_flag (part, flag) == 0 ? 1 : 0);      
         
-        if (!is_toggle_mode) {
+        if (!is_toggle_mode && flag != PED_PARTITION_TYPE ) {
                 if (!command_line_get_state (_("New state?"), &state))
 		            goto error_destroy_disk;
         }
+	else if( flag == PED_PARTITION_TYPE ) {
+		if (!command_line_get_integer (_("New type?"), &state))
+			goto error_destroy_disk;
+	}
     
         if (!ped_partition_set_flag (part, flag, state))
 	        	goto error_destroy_disk;
openSUSE Build Service is sponsored by