Index: trunk/slurm_drmaa/util.c
===================================================================
--- trunk/slurm_drmaa/util.c	(revision 22)
+++ trunk/slurm_drmaa/util.c	(revision 24)
@@ -34,5 +34,5 @@
 #endif
 
-unsigned
+unsigned int
 slurmdrmaa_datetime_parse( const char *string )
 {
@@ -78,5 +78,5 @@
 	END_TRY
 
-	fsd_log_return(( "(%s) =%u", string, (unsigned)60*dt.hour+dt.minute ));
+	fsd_log_return(( "(%s) =%u minutes", string, (unsigned)60*dt.hour+dt.minute ));
 	return 60*dt.hour+dt.minute;
 }
@@ -101,5 +101,6 @@
 	SLURM_NATIVE_SHARE,
 	SLURM_NATIVE_JOB_NAME,
-	SLURM_NATIVE_TIME_LIMIT
+	SLURM_NATIVE_TIME_LIMIT,
+	SLURM_NATIVE_NTASKS
 };
 
@@ -128,6 +129,5 @@
 	fsd_free(job_desc->partition);
 	fsd_free(job_desc->qos);
-	fsd_free(job_desc->req_nodes);
-	fsd_free(job_desc->reservation);
+
 	fsd_free(job_desc->script);
 	fsd_free(job_desc->std_in);
@@ -223,5 +223,5 @@
 		case SLURM_NATIVE_NODES:
 			ptr = strdup(value);
-
+			
 			if((token = strtok_r(ptr,"=",&rest)) == NULL){
 				fsd_log_error(("strtok_r returned NULL"));
@@ -265,11 +265,17 @@
 			break;
 		case SLURM_NATIVE_JOB_NAME:
-                	fsd_log_debug(("# job_name = %s",job_desc->name));
-                	job_desc->name = fsd_strdup(value);
-			break;
-                case SLURM_NATIVE_TIME_LIMIT:
-             		fsd_log_debug(("# time_limit = %s",value));
-             		job_desc->time_limit = fsd_atoi(value); 
-                        break;	
+			fsd_log_debug(("# job_name = %s",job_desc->name));
+			job_desc->name = fsd_strdup(value);
+			break;
+		case SLURM_NATIVE_NTASKS:
+			fsd_log_debug(("# ntasks = %s",value));
+			job_desc->num_tasks = fsd_atoi(value); 
+			slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_MINCPUS,value);
+			break;	
+		case SLURM_NATIVE_TIME_LIMIT:
+			fsd_log_debug(("# time_limit = %s",value));
+			job_desc->time_limit = slurmdrmaa_datetime_parse(value); 
+			break;	
+	
 		default:
 			fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE,"Invalid attribute");
@@ -289,5 +295,9 @@
 		name = fsd_strdup(strtok_r(add_attr_copy, "=", &ctxt));
 		value = strtok_r(NULL, "=", &ctxt);
-			
+		if (value == NULL) {
+			fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE, 
+				"Invalid native specification: %s Missing '='.", add_attr_copy);
+		}
+
 		if(strcmp(name,"account") == 0) {
 			slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_ACCOUNT,value);
@@ -349,4 +359,6 @@
 		else if(strcmp(name,"time") == 0) {
                         slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT,value);
+                } else if(strcmp(name,"ntasks") == 0) {
+                        slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NTASKS,value);
                 } else {
 			fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE,
@@ -413,8 +425,10 @@
 						slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_JOB_NAME, arg);
 						break;		
-                                        case 't' :
-                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT, arg);
-                                                break;  
-	
+					case 't' :
+						slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT, arg);
+						break;  
+					case 'n' :
+						slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NTASKS, arg);
+						break;  
 					default :								
 							fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE,
Index: trunk/configure.ac
===================================================================
--- trunk/configure.ac	(revision 23)
+++ trunk/configure.ac	(revision 24)
@@ -1,3 +1,3 @@
-AC_INIT([PSNC DRMAA for SLURM], [1.0.3], [mamonski@man.poznan.pl], [slurm-drmaa])
+AC_INIT([PSNC DRMAA for SLURM], [1.0.4], [mamonski@man.poznan.pl], [slurm-drmaa])
 AC_PREREQ(2.59)
 AC_REVISION([$Id$])
@@ -23,6 +23,6 @@
 SLURM_DRMAA_MAJOR=1
 SLURM_DRMAA_MINOR=0
-SLURM_DRMAA_MICRO=3
-SLURM_DRMAA_VERSION_INFO=1:3:0
+SLURM_DRMAA_MICRO=5
+SLURM_DRMAA_VERSION_INFO=1:5:0
 AC_SUBST([SLURM_DRMAA_MAJOR])
 AC_SUBST([SLURM_DRMAA_MINOR])
