@@ -1951,6 +1951,28 @@ get_frozen_object(char *name)
19511951 return PyMarshal_ReadObjectFromString ((char * )p -> code , size );
19521952}
19531953
1954+ static PyObject *
1955+ is_frozen_package (char * name )
1956+ {
1957+ struct _frozen * p = find_frozen (name );
1958+ int size ;
1959+
1960+ if (p == NULL ) {
1961+ PyErr_Format (PyExc_ImportError ,
1962+ "No such frozen object named %.200s" ,
1963+ name );
1964+ return NULL ;
1965+ }
1966+
1967+ size = p -> size ;
1968+
1969+ if (size < 0 )
1970+ Py_RETURN_TRUE ;
1971+ else
1972+ Py_RETURN_FALSE ;
1973+ }
1974+
1975+
19541976/* Initialize a frozen module.
19551977 Return 1 for success, 0 if the module is not found, and -1 with
19561978 an exception set if the initialization failed.
@@ -2958,6 +2980,16 @@ imp_get_frozen_object(PyObject *self, PyObject *args)
29582980 return get_frozen_object (name );
29592981}
29602982
2983+ static PyObject *
2984+ imp_is_frozen_package (PyObject * self , PyObject * args )
2985+ {
2986+ char * name ;
2987+
2988+ if (!PyArg_ParseTuple (args , "s:is_frozen_package" , & name ))
2989+ return NULL ;
2990+ return is_frozen_package (name );
2991+ }
2992+
29612993static PyObject *
29622994imp_is_builtin (PyObject * self , PyObject * args )
29632995{
@@ -3191,6 +3223,7 @@ static PyMethodDef imp_methods[] = {
31913223 {"reload" , imp_reload , METH_O , doc_reload },
31923224 /* The rest are obsolete */
31933225 {"get_frozen_object" , imp_get_frozen_object , METH_VARARGS },
3226+ {"is_frozen_package" , imp_is_frozen_package , METH_VARARGS },
31943227 {"init_builtin" , imp_init_builtin , METH_VARARGS },
31953228 {"init_frozen" , imp_init_frozen , METH_VARARGS },
31963229 {"is_builtin" , imp_is_builtin , METH_VARARGS },
0 commit comments