mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	Patch #543447: Add posix.mknod.
This commit is contained in:
		
							parent
							
								
									314fc79ce8
								
							
						
					
					
						commit
						06a83e90aa
					
				
					 6 changed files with 60 additions and 7 deletions
				
			
		|  | @ -644,6 +644,17 @@ the client opens it for writing.  Note that \function{mkfifo()} | ||||||
| doesn't open the FIFO --- it just creates the rendezvous point. | doesn't open the FIFO --- it just creates the rendezvous point. | ||||||
| \end{funcdesc} | \end{funcdesc} | ||||||
| 
 | 
 | ||||||
|  | \begin{funcdesc}{mknod}{path\optional{, mode=0600, major, minor}} | ||||||
|  | Create a filesystem node (file, device special file or named pipe) | ||||||
|  | named filename. mode specifies both the permissions to use and the | ||||||
|  | type of node to be created, being combined (bitwise OR) with one of | ||||||
|  | S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO (those constants are available | ||||||
|  | in \module{stat}). For S_IFCHR and S_IFBLK, major and minor define the | ||||||
|  | newly created device special file, otherwise they are ignored. | ||||||
|  | 
 | ||||||
|  | \versionadded{2.3} | ||||||
|  | \end{funcdesc} | ||||||
|  | 
 | ||||||
| \begin{funcdesc}{mkdir}{path\optional{, mode}} | \begin{funcdesc}{mkdir}{path\optional{, mode}} | ||||||
| Create a directory named \var{path} with numeric mode \var{mode}. | Create a directory named \var{path} with numeric mode \var{mode}. | ||||||
| The default \var{mode} is \code{0777} (octal).  On some systems, | The default \var{mode} is \code{0777} (octal).  On some systems, | ||||||
|  |  | ||||||
|  | @ -56,6 +56,8 @@ Core and builtins | ||||||
| 
 | 
 | ||||||
| Extension modules | Extension modules | ||||||
| 
 | 
 | ||||||
|  | - posix.mknod was added. | ||||||
|  | 
 | ||||||
| - The locale module now exposes the C library's gettext interface. | - The locale module now exposes the C library's gettext interface. | ||||||
| 
 | 
 | ||||||
| - A security hole ("double free") was found in zlib-1.1.3, a popular | - A security hole ("double free") was found in zlib-1.1.3, a popular | ||||||
|  |  | ||||||
|  | @ -4582,19 +4582,52 @@ posix_pipe(PyObject *self, PyObject *args) | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_MKFIFO | #ifdef HAVE_MKFIFO | ||||||
| static char posix_mkfifo__doc__[] = | static char posix_mkfifo__doc__[] = | ||||||
| "mkfifo(file, [, mode=0666]) -> None\n\
 | "mkfifo(filename, [, mode=0666]) -> None\n\
 | ||||||
| Create a FIFO (a POSIX named pipe)."; | Create a FIFO (a POSIX named pipe)."; | ||||||
| 
 | 
 | ||||||
| static PyObject * | static PyObject * | ||||||
| posix_mkfifo(PyObject *self, PyObject *args) | posix_mkfifo(PyObject *self, PyObject *args) | ||||||
| { | { | ||||||
| 	char *file; | 	char *filename; | ||||||
| 	int mode = 0666; | 	int mode = 0666; | ||||||
| 	int res; | 	int res; | ||||||
| 	if (!PyArg_ParseTuple(args, "s|i:mkfifo", &file, &mode)) | 	if (!PyArg_ParseTuple(args, "s|i:mkfifo", &filename, &mode)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	Py_BEGIN_ALLOW_THREADS | 	Py_BEGIN_ALLOW_THREADS | ||||||
| 	res = mkfifo(file, mode); | 	res = mkfifo(filename, mode); | ||||||
|  | 	Py_END_ALLOW_THREADS | ||||||
|  | 	if (res < 0) | ||||||
|  | 		return posix_error(); | ||||||
|  | 	Py_INCREF(Py_None); | ||||||
|  | 	return Py_None; | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_MKNOD | ||||||
|  | static char posix_mknod__doc__[] = | ||||||
|  | "mknod(filename, [, mode=0600, major, minor]) -> None\n\
 | ||||||
|  | Create a filesystem node (file, device special file or named pipe)\n\ | ||||||
|  | named filename. mode specifies both the permissions to use and the\n\ | ||||||
|  | type of node to be created, being combined (bitwise OR) with one of\n\ | ||||||
|  | S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\n\ | ||||||
|  | major and minor define the newly created device special file, otherwise\n\ | ||||||
|  | they are ignored."; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static PyObject * | ||||||
|  | posix_mknod(PyObject *self, PyObject *args) | ||||||
|  | { | ||||||
|  | 	char *filename; | ||||||
|  | 	int mode = 0600; | ||||||
|  | 	int major = 0; | ||||||
|  | 	int minor = 0; | ||||||
|  | 	int res; | ||||||
|  | 	if (!PyArg_ParseTuple(args, "s|iii:mknod", &filename, | ||||||
|  | 			      &mode, &major, &minor)) | ||||||
|  | 		return NULL; | ||||||
|  | 	Py_BEGIN_ALLOW_THREADS | ||||||
|  | 	res = mknod(filename, mode, makedev(major, minor)); | ||||||
| 	Py_END_ALLOW_THREADS | 	Py_END_ALLOW_THREADS | ||||||
| 	if (res < 0) | 	if (res < 0) | ||||||
| 		return posix_error(); | 		return posix_error(); | ||||||
|  | @ -6336,6 +6369,9 @@ static PyMethodDef posix_methods[] = { | ||||||
| #ifdef HAVE_MKFIFO | #ifdef HAVE_MKFIFO | ||||||
| 	{"mkfifo",	posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__}, | 	{"mkfifo",	posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__}, | ||||||
| #endif | #endif | ||||||
|  | #ifdef HAVE_MKNOD | ||||||
|  | 	{"mknod",	posix_mknod, METH_VARARGS, posix_mknod__doc__}, | ||||||
|  | #endif | ||||||
| #ifdef HAVE_FTRUNCATE | #ifdef HAVE_FTRUNCATE | ||||||
| 	{"ftruncate",	posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__}, | 	{"ftruncate",	posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__}, | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								configure
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								configure
									
										
									
									
										vendored
									
									
								
							|  | @ -1,5 +1,5 @@ | ||||||
| #! /bin/sh | #! /bin/sh | ||||||
| # From configure.in Revision: 1.306 . | # From configure.in Revision: 1.307 . | ||||||
| # Guess values for system-dependent variables and create Makefiles. | # Guess values for system-dependent variables and create Makefiles. | ||||||
| # Generated by GNU Autoconf 2.53. | # Generated by GNU Autoconf 2.53. | ||||||
| # | # | ||||||
|  | @ -11243,12 +11243,13 @@ echo "${ECHO_T}MACHDEP_OBJS" >&6 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| for ac_func in alarm chown chroot clock confstr ctermid ctermid_r execv \ | for ac_func in alarm chown chroot clock confstr ctermid ctermid_r execv \ | ||||||
|  flock fork fsync fdatasync fpathconf ftime ftruncate \ |  flock fork fsync fdatasync fpathconf ftime ftruncate \ | ||||||
|  gai_strerror getgroups getlogin getpeername getpid getpwent getwd \ |  gai_strerror getgroups getlogin getpeername getpid getpwent getwd \ | ||||||
|  hstrerror inet_pton kill killpg link lstat mkfifo mktime mremap \ |  hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \ | ||||||
|  nice pathconf pause plock poll pthread_init \ |  nice pathconf pause plock poll pthread_init \ | ||||||
|  putenv readlink \ |  putenv readlink \ | ||||||
|  select setegid seteuid setgid setgroups \ |  select setegid seteuid setgid setgroups \ | ||||||
|  |  | ||||||
|  | @ -1568,7 +1568,7 @@ AC_MSG_RESULT(MACHDEP_OBJS) | ||||||
| AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \ | AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \ | ||||||
|  flock fork fsync fdatasync fpathconf ftime ftruncate \ |  flock fork fsync fdatasync fpathconf ftime ftruncate \ | ||||||
|  gai_strerror getgroups getlogin getpeername getpid getpwent getwd \ |  gai_strerror getgroups getlogin getpeername getpid getpwent getwd \ | ||||||
|  hstrerror inet_pton kill killpg link lstat mkfifo mktime mremap \ |  hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \ | ||||||
|  nice pathconf pause plock poll pthread_init \ |  nice pathconf pause plock poll pthread_init \ | ||||||
|  putenv readlink \ |  putenv readlink \ | ||||||
|  select setegid seteuid setgid setgroups \ |  select setegid seteuid setgid setgroups \ | ||||||
|  |  | ||||||
|  | @ -260,6 +260,9 @@ | ||||||
| /* Define to 1 if you have the `mkfifo' function. */ | /* Define to 1 if you have the `mkfifo' function. */ | ||||||
| #undef HAVE_MKFIFO | #undef HAVE_MKFIFO | ||||||
| 
 | 
 | ||||||
|  | /* Define to 1 if you have the `mknod' function. */ | ||||||
|  | #undef HAVE_MKNOD | ||||||
|  | 
 | ||||||
| /* Define to 1 if you have the `mktime' function. */ | /* Define to 1 if you have the `mktime' function. */ | ||||||
| #undef HAVE_MKTIME | #undef HAVE_MKTIME | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Martin v. Löwis
						Martin v. Löwis