/* align this_mtd */ this_mtd = (struct cmdline_mtd_partition *) ALIGN((unsigned long)this_mtd, sizeof(void*)); 
static int mtdpart_setup_real(char *s){	cmdline_parsed = 1;	for( ; s != NULL; )	{		struct cmdline_mtd_partition *this_mtd;		struct mtd_partition *parts;	    	int mtd_id_len;		int num_parts;		char *p, *mtd_id;	    	mtd_id = s;		/* fetch <mtd-id> */		if (!(p = strchr(s, ':')))		{			printk(KERN_ERR ERRP "no mtd-id\n");			return 0;		}		mtd_id_len = p - mtd_id;		dbg(("parsing <%s>\n", p+1));		/* 		 * parse one mtd. have it reserve memory for the		 * struct cmdline_mtd_partition and the mtd-id string.		 */		parts = newpart(p + 1,		/* cmdline */				&s,		/* out: updated cmdline ptr */				&num_parts,	/* out: number of parts */				0,		/* first partition */				(unsigned char**)&this_mtd, /* out: extra mem */				mtd_id_len + 1 + sizeof(*this_mtd));		if(!parts)		{			/*			 * An error occurred. We're either:			 * a) out of memory, or			 * b) in the middle of the partition spec			 * Either way, this mtd is hosed and we're			 * unlikely to succeed in parsing any more			 */			 return 0;		 }		/* enter results */	    		this_mtd->parts = parts;		this_mtd->num_parts = num_parts;		this_mtd->mtd_id = (char*)(this_mtd + 1);		strlcpy(this_mtd->mtd_id, mtd_id, mtd_id_len + 1);		/* link into chain */		this_mtd->next = partitions;	    			partitions = this_mtd;		dbg(("mtdid=<%s> num_parts=<%d>\n", 		     this_mtd->mtd_id, this_mtd->num_parts));				/* EOS - we're done */		if (*s == 0)			break;		/* does another spec follow? */		if (*s != ';')		{			printk(KERN_ERR ERRP "bad character after partition (%c)\n", *s);			return 0;		}		s++;	}	return 1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/be76c5fb406fad93ab93ba39e7858e03d58c5d30/cmdlinepart.c/clean/drivers/mtd/cmdlinepart.c