@@ -63,3 +63,103 @@ double jerry_port_get_current_time(void) {
6363void jerryx_port_handler_print_char (char c ) { /**< the character to print */
6464 printf ("%c" , c );
6565} /* jerryx_port_handler_print_char */
66+
67+
68+ /**
69+ * Normalize a file path
70+ *
71+ * @return length of the path written to the output buffer
72+ */
73+ size_t jerry_port_normalize_path (
74+ const char * in_path_p , /**< input file path */
75+ char * out_buf_p , /**< output buffer */
76+ size_t out_buf_size , /**< size of output buffer */
77+ char * base_file_p ) /**< base file path */
78+ {
79+ (void )base_file_p ;
80+
81+ size_t len = strlen (in_path_p );
82+ if (len + 1 > out_buf_size ) {
83+ return 0 ;
84+ }
85+
86+ /* Return the original string. */
87+ strcpy (out_buf_p , in_path_p );
88+ return len ;
89+ } /* jerry_port_normalize_path */
90+
91+ /**
92+ * Get the module object of a native module.
93+ *
94+ * @return undefined
95+ */
96+ jerry_value_t jerry_port_get_native_module (
97+ jerry_value_t name ) /**< module specifier */
98+ {
99+ (void )name ;
100+ return jerry_create_undefined ();
101+ } /* jerry_port_get_native_module */
102+
103+ /**
104+ * Determines the size of the given file.
105+ * @return size of the file
106+ */
107+ static size_t jerry_port_get_file_size (FILE * file_p ) /**< opened file */
108+ {
109+ fseek (file_p , 0 , SEEK_END );
110+ long size = ftell (file_p );
111+ fseek (file_p , 0 , SEEK_SET );
112+
113+ return (size_t )size ;
114+ } /* jerry_port_get_file_size */
115+
116+ /**
117+ * Opens file with the given path and reads its source.
118+ * @return the source of the file
119+ */
120+ uint8_t * jerry_port_read_source (const char * file_name_p , /**< file name */
121+ size_t * out_size_p ) /**< [out] read bytes */
122+ {
123+ FILE * file_p = fopen (file_name_p , "rb" );
124+
125+ if (file_p == NULL ) {
126+ jerry_port_log (JERRY_LOG_LEVEL_ERROR , "Error: failed to open file: %s\n" ,
127+ file_name_p );
128+ return NULL ;
129+ }
130+
131+ size_t file_size = jerry_port_get_file_size (file_p );
132+ uint8_t * buffer_p = (uint8_t * )malloc (file_size );
133+
134+ if (buffer_p == NULL ) {
135+ fclose (file_p );
136+
137+ jerry_port_log (JERRY_LOG_LEVEL_ERROR ,
138+ "Error: failed to allocate memory for module" );
139+ return NULL ;
140+ }
141+
142+ size_t bytes_read = fread (buffer_p , 1u , file_size , file_p );
143+
144+ if (!bytes_read ) {
145+ fclose (file_p );
146+ free (buffer_p );
147+
148+ jerry_port_log (JERRY_LOG_LEVEL_ERROR , "Error: failed to read file: %s\n" ,
149+ file_name_p );
150+ return NULL ;
151+ }
152+
153+ fclose (file_p );
154+ * out_size_p = bytes_read ;
155+
156+ return buffer_p ;
157+ } /* jerry_port_read_source */
158+
159+ /**
160+ * Release the previously opened file's content.
161+ */
162+ void jerry_port_release_source (uint8_t * buffer_p ) /**< buffer to free */
163+ {
164+ free (buffer_p );
165+ } /* jerry_port_release_source */
0 commit comments