PRInt64 r;
PRInt64 r, u; LL_I2L(u, PR_USEC_PER_SEC);
net_parse_http_index_201_line(HTTPIndexParserData *obj, char *data_line){	int32 position=0;    char *token = net_get_next_http_index_token(data_line);	NET_FileEntryInfo *file_struct;	/* make sure there is enough space for the file	 * entry in the array	 */	if(obj->data_list_length < obj->number_of_files+1)	  {		/* malloc some more space for the array		 */		if(obj->data_list)			obj->data_list = (NET_FileEntryInfo **) PR_Realloc(obj->data_list, 													(obj->data_list_length 													+ ARRAY_GROWTH_RATE)													* sizeof(NET_FileEntryInfo*));		else			obj->data_list = (NET_FileEntryInfo **) PR_Malloc(ARRAY_GROWTH_RATE 													* sizeof(NET_FileEntryInfo*));		obj->data_list_length += ARRAY_GROWTH_RATE;	  }	if(!obj->data_list)		return(MK_OUT_OF_MEMORY);	file_struct = NET_CreateFileEntryInfoStruct();	if(!file_struct)		return(MK_OUT_OF_MEMORY);    while(token)      {		NET_UnEscape(token);		switch(obj->mapping_array[position])		  {			case UNKNOWN_TOKEN:				/* ignore unknown token types */				break;			case FILENAME_TOKEN:				file_struct->filename = PL_strdup(token);				break;			case CONTENT_LENGTH_TOKEN:				file_struct->size = atoi(token);				break;			case LAST_MODIFIED_TOKEN:                {                    PRTime prtime;                    PRInt64 r;				    PR_ParseTimeString(token, TRUE, &prtime);                    LL_DIV(r, prtime, PR_USEC_PER_SEC);                    LL_L2I(file_struct->date, r);                }				break;			case CONTENT_TYPE_TOKEN:				file_struct->content_type = PL_strdup(token);				break;			case FILE_TYPE_TOKEN:				if(!PL_strcasecmp(token, "FILE"))				  {					file_struct->special_type = NET_FILE_TYPE;				  }				else if(!PL_strcasecmp(token, "DIRECTORY"))				  {					file_struct->special_type = NET_DIRECTORY;				  }				else if(!PL_strcasecmp(token, "SYMBOLIC-LINK"))				  {					file_struct->special_type = NET_SYM_LINK;				  }				else if(!PL_strcasecmp(token, "SYM-FILE"))				  {					file_struct->special_type = NET_SYM_LINK_TO_FILE;				  }				else if(!PL_strcasecmp(token, "SYM-DIRECTORY"))				  {					file_struct->special_type = NET_SYM_LINK_TO_DIR;				  }				break;			case PERMISSIONS_TOKEN:				if(PL_strlen(token) == 3)				  {					file_struct->permissions = 0;					if(token[0] == 'R')						file_struct->permissions |= NET_READ_PERMISSION;					if(token[1] == 'W')						file_struct->permissions |= NET_WRITE_PERMISSION;					if(token[2] == 'E')						file_struct->permissions |= NET_EXECUTE_PERMISSION;				  }				break;			default:				PR_ASSERT(0);				break;		  }		        token = net_get_next_http_index_token(NULL);		position++;		if(position > MAX_200_FIELDS)			break;      }	/* every struct must have a filename.  If it doesn't	 * destroy it	 */		if(!file_struct->filename || !*file_struct->filename)		NET_FreeEntryInfoStruct(file_struct);	else		obj->data_list[obj->number_of_files++] = file_struct;	return(0);}