diff --git a/backend_canonselphy.c b/backend_canonselphy.c index e191594..24fc4b2 100644 --- a/backend_canonselphy.c +++ b/backend_canonselphy.c @@ -642,8 +642,8 @@ static void *canonselphy_init(void) extern struct dyesub_backend canonselphy_backend; -static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int canonselphy_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct canonselphy_ctx *ctx = vctx; struct libusb_device *device; @@ -672,7 +672,11 @@ static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev, } if (!ctx->printer) { ERROR("Error looking up printer type!\n"); + return CUPS_BACKEND_FAILED; } + + /* TODO: Query & Update Marker */ + return CUPS_BACKEND_OK; } static void canonselphy_teardown(void *vctx) { diff --git a/backend_canonselphyneo.c b/backend_canonselphyneo.c index 5a208a5..9152e0b 100644 --- a/backend_canonselphyneo.c +++ b/backend_canonselphyneo.c @@ -189,8 +189,8 @@ static void *selphyneo_init(void) extern struct dyesub_backend selphyneo_backend; -static void selphyneo_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int selphyneo_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct selphyneo_ctx *ctx = vctx; struct libusb_device *device; @@ -204,6 +204,10 @@ static void selphyneo_attach(void *vctx, struct libusb_device_handle *dev, device = libusb_get_device(dev); libusb_get_device_descriptor(device, &desc); + + // TODO: Query & Update Marker + + return CUPS_BACKEND_OK; } static void selphyneo_teardown(void *vctx) { diff --git a/backend_common.c b/backend_common.c index 55f9fd1..03bf34e 100644 --- a/backend_common.c +++ b/backend_common.c @@ -29,7 +29,7 @@ #include "backend_common.h" -#define BACKEND_VERSION "0.80" +#define BACKEND_VERSION "0.81" #ifndef URI_PREFIX #error "Must Define URI_PREFIX" #endif diff --git a/backend_common.h b/backend_common.h index 4f1e810..57250f0 100644 --- a/backend_common.h +++ b/backend_common.h @@ -156,7 +156,7 @@ struct dyesub_backend { const char **uri_prefixes; void (*cmdline_usage)(void); /* Optional */ void *(*init)(void); - void (*attach)(void *ctx, struct libusb_device_handle *dev, + int (*attach)(void *ctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid); void (*teardown)(void *ctx); int (*cmdline_arg)(void *ctx, int argc, char **argv); diff --git a/backend_dnpds40.c b/backend_dnpds40.c index 5dba42e..3d8ff90 100644 --- a/backend_dnpds40.c +++ b/backend_dnpds40.c @@ -548,8 +548,8 @@ static void *dnpds40_init(void) ((ctx->ver_major > (__major)) || \ (ctx->ver_major == (__major) && ctx->ver_minor >= (__minor))) -static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int dnpds40_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct dnpds40_ctx *ctx = vctx; struct libusb_device *device; @@ -629,7 +629,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, libusb_get_string_descriptor_ascii(dev, desc->iManufacturer, (unsigned char*)buf, STR_LEN_MAX); sanitize_string(buf); if (strncmp(buf, "Dai", 3)) - return 0; + return CUPS_BACKEND_FAILED; } #endif #ifdef CITIZEN_ONLY /* Only allow CITIZEN printers to work. */ @@ -639,7 +639,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, libusb_get_string_descriptor_ascii(dev, desc->iManufacturer, (unsigned char*)buf, STR_LEN_MAX); sanitize_string(buf); if (strncmp(buf, "CIT", 3)) - return 0; + return CUPS_BACKEND_FAILED; } #endif @@ -779,7 +779,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, break; default: ERROR("Unknown vid/pid %04x/%04x (%d)\n", desc.idVendor, desc.idProduct, ctx->type); - return; + return CUPS_BACKEND_FAILED; } ctx->last_matte = -1; @@ -923,6 +923,10 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, break; } } + + // TODO: fail out on other errors + // TODO: Update Marker + return CUPS_BACKEND_OK; } static void dnpds40_teardown(void *vctx) { diff --git a/backend_kodak1400.c b/backend_kodak1400.c index 09bf62d..68fd57f 100644 --- a/backend_kodak1400.c +++ b/backend_kodak1400.c @@ -294,8 +294,8 @@ static void *kodak1400_init(void) return ctx; } -static void kodak1400_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int kodak1400_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct kodak1400_ctx *ctx = vctx; struct libusb_device *device; @@ -312,6 +312,8 @@ static void kodak1400_attach(void *vctx, struct libusb_device_handle *dev, ctx->type = lookup_printer_type(&kodak1400_backend, desc.idVendor, desc.idProduct); + + return CUPS_BACKEND_OK; } static void kodak1400_teardown(void *vctx) { diff --git a/backend_kodak605.c b/backend_kodak605.c index 1bff486..1afe93d 100644 --- a/backend_kodak605.c +++ b/backend_kodak605.c @@ -234,8 +234,8 @@ static void *kodak605_init(void) return ctx; } -static void kodak605_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int kodak605_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct kodak605_ctx *ctx = vctx; struct libusb_device *device; @@ -262,7 +262,11 @@ static void kodak605_attach(void *vctx, struct libusb_device_handle *dev, /* Query media info */ if (kodak605_get_media(ctx, ctx->media)) { ERROR("Can't query media\n"); + return CUPS_BACKEND_FAILED; } + + // TODO: Update Marker + return CUPS_BACKEND_OK; } static void kodak605_teardown(void *vctx) { diff --git a/backend_kodak6800.c b/backend_kodak6800.c index cc2779e..a1c48a9 100644 --- a/backend_kodak6800.c +++ b/backend_kodak6800.c @@ -1012,8 +1012,8 @@ static void *kodak6800_init(void) return ctx; } -static void kodak6800_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int kodak6800_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct kodak6800_ctx *ctx = vctx; struct libusb_device *device; @@ -1040,7 +1040,11 @@ static void kodak6800_attach(void *vctx, struct libusb_device_handle *dev, /* Query media info */ if (kodak6800_get_mediainfo(ctx, ctx->media)) { ERROR("Can't query media\n"); + return CUPS_BACKEND_FAILED; } + + // TODO: Update Marker + return CUPS_BACKEND_OK; } static void kodak6800_teardown(void *vctx) { diff --git a/backend_magicard.c b/backend_magicard.c index 63f9e96..4cd97d8 100644 --- a/backend_magicard.c +++ b/backend_magicard.c @@ -451,7 +451,7 @@ static void* magicard_init(void) return ctx; } -static void magicard_attach(void *vctx, struct libusb_device_handle *dev, +static int magicard_attach(void *vctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct magicard_ctx *ctx = vctx; @@ -470,6 +470,7 @@ static void magicard_attach(void *vctx, struct libusb_device_handle *dev, ctx->type = lookup_printer_type(&magicard_backend, desc.idVendor, desc.idProduct); + return CUPS_BACKEND_OK; } static void magicard_teardown(void *vctx) { diff --git a/backend_mitsu70x.c b/backend_mitsu70x.c index c989f54..9b59fa6 100644 --- a/backend_mitsu70x.c +++ b/backend_mitsu70x.c @@ -688,8 +688,8 @@ static void *mitsu70x_init(void) return ctx; } -static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct mitsu70x_ctx *ctx = vctx; struct libusb_device *device; @@ -723,13 +723,13 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ERROR("Problem resolving API Version symbol in imaging processing library, too old or not installed?\n"); DL_CLOSE(ctx->dl_handle); ctx->dl_handle = NULL; - return; + return CUPS_BACKEND_FAILED; } if (ctx->GetAPIVersion() != REQUIRED_LIB_APIVERSION) { ERROR("Image processing library API version mismatch!\n"); DL_CLOSE(ctx->dl_handle); ctx->dl_handle = NULL; - return; + return CUPS_BACKEND_FAILED; } ctx->Get3DColorTable = DL_SYM(ctx->dl_handle, "CColorConv3D_Get3DColorTable"); @@ -750,6 +750,7 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ERROR("Problem resolving symbols in imaging processing library\n"); DL_CLOSE(ctx->dl_handle); ctx->dl_handle = NULL; + return CUPS_BACKEND_FAILED; } else { DEBUG("Image processing library successfully loaded\n"); } @@ -777,7 +778,7 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ret = mitsu70x_get_printerstatus(ctx, &resp); if (ret) { ERROR("Unable to get printer status! (%d)\n", ret); - return; + return CUPS_BACKEND_FAILED; } if (ctx->type == P_MITSU_D70X && @@ -786,6 +787,9 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, ctx->num_decks = 2; else ctx->num_decks = 1; + + // TODO: Update Marker + return CUPS_BACKEND_OK; } static void mitsu70x_teardown(void *vctx) { diff --git a/backend_mitsu9550.c b/backend_mitsu9550.c index 4eaac50..6b4ed9d 100644 --- a/backend_mitsu9550.c +++ b/backend_mitsu9550.c @@ -540,7 +540,7 @@ static void *mitsu9550_init(void) return ctx; } -static void mitsu9550_attach(void *vctx, struct libusb_device_handle *dev, +static int mitsu9550_attach(void *vctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct mitsu9550_ctx *ctx = vctx; @@ -569,6 +569,9 @@ static void mitsu9550_attach(void *vctx, struct libusb_device_handle *dev, ctx->is_98xx = 1; ctx->last_donor = ctx->last_remain = 65535; + + // TODO: Query & Update Marker + return CUPS_BACKEND_OK; } static void mitsu9550_teardown(void *vctx) { diff --git a/backend_mitsup95d.c b/backend_mitsup95d.c index c6dbe71..ca09879 100644 --- a/backend_mitsup95d.c +++ b/backend_mitsup95d.c @@ -89,7 +89,7 @@ static void *mitsup95d_init(void) return ctx; } -static void mitsup95d_attach(void *vctx, struct libusb_device_handle *dev, +static int mitsup95d_attach(void *vctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct mitsup95d_ctx *ctx = vctx; @@ -107,6 +107,8 @@ static void mitsup95d_attach(void *vctx, struct libusb_device_handle *dev, ctx->type = lookup_printer_type(&mitsup95d_backend, desc.idVendor, desc.idProduct); + + return CUPS_BACKEND_OK; } static void mitsup95d_teardown(void *vctx) { diff --git a/backend_shinkos1245.c b/backend_shinkos1245.c index d62ae38..85991dc 100644 --- a/backend_shinkos1245.c +++ b/backend_shinkos1245.c @@ -1274,8 +1274,8 @@ static void *shinkos1245_init(void) return ctx; } -static void shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos1245_ctx *ctx = vctx; struct libusb_device *device; @@ -1295,6 +1295,9 @@ static void shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, ctx->jobid = jobid & 0x7f; if (!ctx->jobid) ctx->jobid++; + + /* TODO: Query & Update Marker */ + return CUPS_BACKEND_OK; } diff --git a/backend_shinkos2145.c b/backend_shinkos2145.c index 2a2bd99..c070d67 100644 --- a/backend_shinkos2145.c +++ b/backend_shinkos2145.c @@ -1401,8 +1401,8 @@ static void *shinkos2145_init(void) return ctx; } -static void shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos2145_ctx *ctx = vctx; @@ -1417,6 +1417,9 @@ static void shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, /* Initialize donor */ ctx->last_donor = ctx->last_remain = ctx->media_prints = 65535; + + // TODO: Query & Update Marker + return CUPS_BACKEND_OK; } static void shinkos2145_teardown(void *vctx) { diff --git a/backend_shinkos6145.c b/backend_shinkos6145.c index bd2c3a8..064b472 100644 --- a/backend_shinkos6145.c +++ b/backend_shinkos6145.c @@ -1911,8 +1911,8 @@ static void *shinkos6145_init(void) return ctx; } -static void shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos6145_ctx *ctx = vctx; struct libusb_device *device; @@ -1956,6 +1956,9 @@ static void shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, /* Initialize donor */ ctx->last_donor = ctx->last_remain = 65535; + + // TODO: Query & Update Marker + return CUPS_BACKEND_OK; } static void shinkos6145_teardown(void *vctx) { diff --git a/backend_shinkos6245.c b/backend_shinkos6245.c index 593e33d..0a7af9a 100644 --- a/backend_shinkos6245.c +++ b/backend_shinkos6245.c @@ -1493,8 +1493,8 @@ static void *shinkos6245_init(void) return ctx; } -static void shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos6245_ctx *ctx = vctx; struct libusb_device *device; @@ -1517,6 +1517,9 @@ static void shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, /* Initialize donor */ ctx->last_donor = ctx->last_remain = 65535; + + // TODO: Query & Update Marker + return CUPS_BACKEND_OK; } static void shinkos6245_teardown(void *vctx) { diff --git a/backend_sonyupdr150.c b/backend_sonyupdr150.c index 0c8d37c..e71d934 100644 --- a/backend_sonyupdr150.c +++ b/backend_sonyupdr150.c @@ -71,8 +71,8 @@ static void* updr150_init(void) return ctx; } -static void updr150_attach(void *vctx, struct libusb_device_handle *dev, - uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +static int updr150_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct updr150_ctx *ctx = vctx; struct libusb_device *device; @@ -91,6 +91,8 @@ static void updr150_attach(void *vctx, struct libusb_device_handle *dev, desc.idVendor, desc.idProduct); ctx->copies_offset = 0; + + return CUPS_BACKEND_OK; } static void updr150_teardown(void *vctx) {