From c7ef06f91e32c1fa07a5cf8cf6f6b487eee021a9 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 30 Apr 2010 10:52:16 -0500 Subject: ppp: Add _from_io constructor --- gatchat/gatppp.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'gatchat/gatppp.c') diff --git a/gatchat/gatppp.c b/gatchat/gatppp.c index 2446d4e3..4205a795 100644 --- a/gatchat/gatppp.c +++ b/gatchat/gatppp.c @@ -396,7 +396,7 @@ void g_at_ppp_unref(GAtPPP *ppp) g_free(ppp); } -GAtPPP *g_at_ppp_new(GIOChannel *modem) +static GAtPPP *ppp_init_common(GAtHDLC *hdlc) { GAtPPP *ppp; @@ -404,12 +404,7 @@ GAtPPP *g_at_ppp_new(GIOChannel *modem) if (!ppp) return NULL; - ppp->hdlc = g_at_hdlc_new(modem); - - if (ppp->hdlc == NULL) { - g_free(ppp); - return NULL; - } + ppp->hdlc = g_at_hdlc_ref(hdlc); ppp->ref_count = 1; @@ -429,3 +424,33 @@ GAtPPP *g_at_ppp_new(GIOChannel *modem) return ppp; } + +GAtPPP *g_at_ppp_new(GIOChannel *modem) +{ + GAtHDLC *hdlc; + GAtPPP *ppp; + + hdlc = g_at_hdlc_new(modem); + if (hdlc == NULL) + return NULL; + + ppp = ppp_init_common(hdlc); + g_at_hdlc_unref(hdlc); + + return ppp; +} + +GAtPPP *g_at_ppp_new_from_io(GAtIO *io) +{ + GAtHDLC *hdlc; + GAtPPP *ppp; + + hdlc = g_at_hdlc_new_from_io(io); + if (hdlc == NULL) + return NULL; + + ppp = ppp_init_common(hdlc); + g_at_hdlc_unref(hdlc); + + return ppp; +} -- cgit v1.2.3