19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%{ 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "aidl_language.h" 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "aidl_language_y.h" 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "search_path.h" 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <string.h> 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdlib.h> 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectextern YYSTYPE yylval; 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// comment and whitespace handling 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// these functions save a copy of the buffer 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic void begin_extra_text(unsigned lineno, which_extra_text which); 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic void append_extra_text(char* text); 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic extra_text_type* get_extra_text(void); // you now own the object 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // this returns 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic void drop_extra_text(void); 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// package handling 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic void do_package_statement(const char* importText); 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define SET_BUFFER(t) \ 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { \ 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.lineno = yylineno; \ 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.token = (t); \ 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.data = strdup(yytext); \ 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.extra = get_extra_text(); \ 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while(0) 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%} 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%option yylineno 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%option noyywrap 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%x COPYING LONG_COMMENT 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectidentifier [_a-zA-Z][_a-zA-Z0-9\.]* 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectwhitespace ([ \t\n\r]+) 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbrackets \[{whitespace}?\] 3902822d059031d539f4b4b69ae0ee6c4ad52388f2Maurice Chuidvalue (0|[1-9][0-9]*) 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%% 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\%\%\{ { begin_extra_text(yylineno, COPY_TEXT); BEGIN(COPYING); } 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<COPYING>\}\%\% { BEGIN(INITIAL); } 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<COPYING>.*\n { append_extra_text(yytext); } 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<COPYING>.* { append_extra_text(yytext); } 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<COPYING>\n+ { append_extra_text(yytext); } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\/\* { begin_extra_text(yylineno, (which_extra_text)LONG_COMMENT); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BEGIN(LONG_COMMENT); } 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<LONG_COMMENT>[^*]* { append_extra_text(yytext); } 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<LONG_COMMENT>\*+[^/] { append_extra_text(yytext); } 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<LONG_COMMENT>\n { append_extra_text(yytext); } 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<LONG_COMMENT>\**\/ { BEGIN(INITIAL); } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project^{whitespace}?import{whitespace}[^ \t\r\n]+{whitespace}?; { 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SET_BUFFER(IMPORT); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return IMPORT; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project^{whitespace}?package{whitespace}[^ \t\r\n]+{whitespace}?; { 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do_package_statement(yytext); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SET_BUFFER(PACKAGE); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return PACKAGE; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<<EOF>> { yyterminate(); } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\/\/.*\n { begin_extra_text(yylineno, SHORT_COMMENT); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append_extra_text(yytext); } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{whitespace} { /* begin_extra_text(yylineno, WHITESPACE); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append_extra_text(yytext); */ } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project; { SET_BUFFER(';'); return ';'; } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\{ { SET_BUFFER('{'); return '{'; } 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\} { SET_BUFFER('}'); return '}'; } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\( { SET_BUFFER('('); return '('; } 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project\) { SET_BUFFER(')'); return ')'; } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project, { SET_BUFFER(','); return ','; } 8102822d059031d539f4b4b69ae0ee6c4ad52388f2Maurice Chu= { SET_BUFFER('='); return '='; } 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* keywords */ 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectparcelable { SET_BUFFER(PARCELABLE); return PARCELABLE; } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface { SET_BUFFER(INTERFACE); return INTERFACE; } 867db766c3fec2795b08d237f29b972f474983684bJoe Onoratoflattenable { SET_BUFFER(FLATTENABLE); return FLATTENABLE; } 87fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratorpc { SET_BUFFER(INTERFACE); return RPC; } 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectin { SET_BUFFER(IN); return IN; } 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectout { SET_BUFFER(OUT); return OUT; } 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinout { SET_BUFFER(INOUT); return INOUT; } 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectoneway { SET_BUFFER(ONEWAY); return ONEWAY; } 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{brackets}+ { SET_BUFFER(ARRAY); return ARRAY; } 9402822d059031d539f4b4b69ae0ee6c4ad52388f2Maurice Chu{idvalue} { SET_BUFFER(IDVALUE); return IDVALUE; } 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{identifier} { SET_BUFFER(IDENTIFIER); return IDENTIFIER; } 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{identifier}\<{whitespace}*{identifier}({whitespace}*,{whitespace}*{identifier})*{whitespace}*\> { 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SET_BUFFER(GENERIC); return GENERIC; } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* syntax error! */ 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project. { printf("UNKNOWN(%s)", yytext); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.lineno = yylineno; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.token = IDENTIFIER; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylval.buffer.data = strdup(yytext); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return IDENTIFIER; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project%% 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// comment and whitespace handling 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================ 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectextra_text_type* g_extraText = NULL; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectextra_text_type* g_nextExtraText = NULL; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid begin_extra_text(unsigned lineno, which_extra_text which) 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project extra_text_type* text = (extra_text_type*)malloc(sizeof(extra_text_type)); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text->lineno = lineno; 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text->which = which; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text->data = NULL; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text->len = 0; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text->next = NULL; 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g_nextExtraText == NULL) { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_extraText = text; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText->next = text; 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText = text; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid append_extra_text(char* text) 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g_nextExtraText->data == NULL) { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText->data = strdup(text); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText->len = strlen(text); 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char* orig = g_nextExtraText->data; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unsigned oldLen = g_nextExtraText->len; 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unsigned len = strlen(text); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText->len += len; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText->data = (char*)malloc(g_nextExtraText->len+1); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project memcpy(g_nextExtraText->data, orig, oldLen); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project memcpy(g_nextExtraText->data+oldLen, text, len); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText->data[g_nextExtraText->len] = '\0'; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project free(orig); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectextra_text_type* 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectget_extra_text(void) 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project extra_text_type* result = g_extraText; 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_extraText = NULL; 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText = NULL; 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid drop_extra_text(void) 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project extra_text_type* p = g_extraText; 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (p) { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project extra_text_type* next = p->next; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project free(p->data); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project free(p); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project free(next); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_extraText = NULL; 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_nextExtraText = NULL; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// package handling 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================ 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid do_package_statement(const char* importText) 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g_currentPackage) free((void*)g_currentPackage); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_currentPackage = parse_import_statement(importText); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// main parse function 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================ 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectchar const* g_currentFilename = NULL; 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectchar const* g_currentPackage = NULL; 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint yyparse(void); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint parse_aidl(char const *filename) 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yyin = fopen(filename, "r"); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (yyin) { 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char const* oldFilename = g_currentFilename; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char const* oldPackage = g_currentPackage; 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_currentFilename = strdup(filename); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_error = 0; 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project yylineno = 1; 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int rv = yyparse(); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g_error != 0) { 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rv = g_error; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project free((void*)g_currentFilename); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_currentFilename = oldFilename; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g_currentPackage) free((void*)g_currentPackage); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g_currentPackage = oldPackage; 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return rv; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl: unable to open file for read: %s\n", filename); 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 215