mercurial/cext/osutil.c
changeset 48841 2ef3b7d30cc1
parent 48840 499733de460f
child 49275 c6a3243567b6
equal deleted inserted replaced
48840:499733de460f 48841:2ef3b7d30cc1
  1174 	int bufsize = -1;
  1174 	int bufsize = -1;
  1175 	char m0, m1, m2;
  1175 	char m0, m1, m2;
  1176 	char fpmode[4];
  1176 	char fpmode[4];
  1177 	int fppos = 0;
  1177 	int fppos = 0;
  1178 	int plus;
  1178 	int plus;
  1179 #ifndef IS_PY3K
       
  1180 	FILE *fp;
       
  1181 #endif
       
  1182 
  1179 
  1183 	if (!PyArg_ParseTupleAndKeywords(args, kwds, "et|yi:posixfile",
  1180 	if (!PyArg_ParseTupleAndKeywords(args, kwds, "et|yi:posixfile",
  1184 					 kwlist,
  1181 					 kwlist,
  1185 					 Py_FileSystemDefaultEncoding,
  1182 					 Py_FileSystemDefaultEncoding,
  1186 					 &name, &mode, &bufsize))
  1183 					 &name, &mode, &bufsize))
  1248 	if (fd == -1) {
  1245 	if (fd == -1) {
  1249 		CloseHandle(handle);
  1246 		CloseHandle(handle);
  1250 		PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
  1247 		PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
  1251 		goto bail;
  1248 		goto bail;
  1252 	}
  1249 	}
  1253 #ifndef IS_PY3K
       
  1254 	fp = _fdopen(fd, fpmode);
       
  1255 	if (fp == NULL) {
       
  1256 		_close(fd);
       
  1257 		PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
       
  1258 		goto bail;
       
  1259 	}
       
  1260 
       
  1261 	file_obj = PyFile_FromFile(fp, name, mode, fclose);
       
  1262 	if (file_obj == NULL) {
       
  1263 		fclose(fp);
       
  1264 		goto bail;
       
  1265 	}
       
  1266 
       
  1267 	PyFile_SetBufSize(file_obj, bufsize);
       
  1268 #else
       
  1269 	file_obj = PyFile_FromFd(fd, name, mode, bufsize, NULL, NULL, NULL, 1);
  1250 	file_obj = PyFile_FromFd(fd, name, mode, bufsize, NULL, NULL, NULL, 1);
  1270 	if (file_obj == NULL)
  1251 	if (file_obj == NULL)
  1271 		goto bail;
  1252 		goto bail;
  1272 #endif
       
  1273 bail:
  1253 bail:
  1274 	PyMem_Free(name);
  1254 	PyMem_Free(name);
  1275 	return file_obj;
  1255 	return file_obj;
  1276 }
  1256 }
  1277 #endif
  1257 #endif